// 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  S3423C4_nt  {
  int s3423c4f0[2];
  void  mf3423c4(); // _ZN10S3423C4_nt8mf3423c4Ev
};
//SIG(-1 S3423C4_nt) C1{ m Fi[2]}


void  S3423C4_nt ::mf3423c4(){}

//skip512 S3423C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C3_nt  {
  int s3423c3f0;
  __tsi64 s3423c3f1;
  void *s3423c3f2[4];
  int s3423c3f3[2];
  void *s3423c3f4;
  ::S3423C4_nt s3423c3f5;
  void *s3423c3f6[2];
  virtual  ~S3423C3_nt(); // _ZN10S3423C3_ntD1Ev
  virtual void  v8(); // _ZN10S3423C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3423C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3423C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3423C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3423C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3423C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3423C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3423C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3423C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3423C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3423C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3423C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3423C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3423C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3423C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3423C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3423C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3423C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3423C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3423C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3423C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3423C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3423C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3423C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3423C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3423C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3423C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3423C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3423C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3423C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3423C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3423C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3423C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3423C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3423C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3423C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3423C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3423C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3423C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3423C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3423C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3423C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3423C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3423C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3423C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3423C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3423C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3423C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3423C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3423C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3423C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3423C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3423C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3423C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3423C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3423C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3423C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3423C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3423C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3423C3_nt3v67Ev
  virtual void  v68(); // _ZN10S3423C3_nt3v68Ev
  virtual void  v69(); // _ZN10S3423C3_nt3v69Ev
  virtual void  v70(); // _ZN10S3423C3_nt3v70Ev
  virtual void  v71(); // _ZN10S3423C3_nt3v71Ev
  S3423C3_nt(); // tgen
};
//SIG(-1 S3423C3_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]}


 S3423C3_nt ::~S3423C3_nt(){ note_dtor("S3423C3_nt", this);}
void  S3423C3_nt ::v8(){vfunc_called(this, "_ZN10S3423C3_nt2v8Ev");}
void  S3423C3_nt ::v9(){vfunc_called(this, "_ZN10S3423C3_nt2v9Ev");}
void  S3423C3_nt ::v10(){vfunc_called(this, "_ZN10S3423C3_nt3v10Ev");}
void  S3423C3_nt ::v11(){vfunc_called(this, "_ZN10S3423C3_nt3v11Ev");}
void  S3423C3_nt ::v12(){vfunc_called(this, "_ZN10S3423C3_nt3v12Ev");}
void  S3423C3_nt ::v13(){vfunc_called(this, "_ZN10S3423C3_nt3v13Ev");}
void  S3423C3_nt ::v14(){vfunc_called(this, "_ZN10S3423C3_nt3v14Ev");}
void  S3423C3_nt ::v15(){vfunc_called(this, "_ZN10S3423C3_nt3v15Ev");}
void  S3423C3_nt ::v16(){vfunc_called(this, "_ZN10S3423C3_nt3v16Ev");}
void  S3423C3_nt ::v17(){vfunc_called(this, "_ZN10S3423C3_nt3v17Ev");}
void  S3423C3_nt ::v18(){vfunc_called(this, "_ZN10S3423C3_nt3v18Ev");}
void  S3423C3_nt ::v19(){vfunc_called(this, "_ZN10S3423C3_nt3v19Ev");}
void  S3423C3_nt ::v20(){vfunc_called(this, "_ZN10S3423C3_nt3v20Ev");}
void  S3423C3_nt ::v21(){vfunc_called(this, "_ZN10S3423C3_nt3v21Ev");}
void  S3423C3_nt ::v22(){vfunc_called(this, "_ZN10S3423C3_nt3v22Ev");}
void  S3423C3_nt ::v23(){vfunc_called(this, "_ZN10S3423C3_nt3v23Ev");}
void  S3423C3_nt ::v24(){vfunc_called(this, "_ZN10S3423C3_nt3v24Ev");}
void  S3423C3_nt ::v25(){vfunc_called(this, "_ZN10S3423C3_nt3v25Ev");}
void  S3423C3_nt ::v26(){vfunc_called(this, "_ZN10S3423C3_nt3v26Ev");}
void  S3423C3_nt ::v27(){vfunc_called(this, "_ZN10S3423C3_nt3v27Ev");}
void  S3423C3_nt ::v28(){vfunc_called(this, "_ZN10S3423C3_nt3v28Ev");}
void  S3423C3_nt ::v29(){vfunc_called(this, "_ZN10S3423C3_nt3v29Ev");}
void  S3423C3_nt ::v30(){vfunc_called(this, "_ZN10S3423C3_nt3v30Ev");}
void  S3423C3_nt ::v31(){vfunc_called(this, "_ZN10S3423C3_nt3v31Ev");}
void  S3423C3_nt ::v32(){vfunc_called(this, "_ZN10S3423C3_nt3v32Ev");}
void  S3423C3_nt ::v33(){vfunc_called(this, "_ZN10S3423C3_nt3v33Ev");}
void  S3423C3_nt ::v34(){vfunc_called(this, "_ZN10S3423C3_nt3v34Ev");}
void  S3423C3_nt ::v35(){vfunc_called(this, "_ZN10S3423C3_nt3v35Ev");}
void  S3423C3_nt ::v36(){vfunc_called(this, "_ZN10S3423C3_nt3v36Ev");}
void  S3423C3_nt ::v37(){vfunc_called(this, "_ZN10S3423C3_nt3v37Ev");}
void  S3423C3_nt ::v38(){vfunc_called(this, "_ZN10S3423C3_nt3v38Ev");}
void  S3423C3_nt ::v39(){vfunc_called(this, "_ZN10S3423C3_nt3v39Ev");}
void  S3423C3_nt ::v40(){vfunc_called(this, "_ZN10S3423C3_nt3v40Ev");}
void  S3423C3_nt ::v41(){vfunc_called(this, "_ZN10S3423C3_nt3v41Ev");}
void  S3423C3_nt ::v42(){vfunc_called(this, "_ZN10S3423C3_nt3v42Ev");}
void  S3423C3_nt ::v43(){vfunc_called(this, "_ZN10S3423C3_nt3v43Ev");}
void  S3423C3_nt ::v44(){vfunc_called(this, "_ZN10S3423C3_nt3v44Ev");}
void  S3423C3_nt ::v45(){vfunc_called(this, "_ZN10S3423C3_nt3v45Ev");}
void  S3423C3_nt ::v46(){vfunc_called(this, "_ZN10S3423C3_nt3v46Ev");}
void  S3423C3_nt ::v47(){vfunc_called(this, "_ZN10S3423C3_nt3v47Ev");}
void  S3423C3_nt ::v48(){vfunc_called(this, "_ZN10S3423C3_nt3v48Ev");}
void  S3423C3_nt ::v49(){vfunc_called(this, "_ZN10S3423C3_nt3v49Ev");}
void  S3423C3_nt ::v50(){vfunc_called(this, "_ZN10S3423C3_nt3v50Ev");}
void  S3423C3_nt ::v51(){vfunc_called(this, "_ZN10S3423C3_nt3v51Ev");}
void  S3423C3_nt ::v52(){vfunc_called(this, "_ZN10S3423C3_nt3v52Ev");}
void  S3423C3_nt ::v53(){vfunc_called(this, "_ZN10S3423C3_nt3v53Ev");}
void  S3423C3_nt ::v54(){vfunc_called(this, "_ZN10S3423C3_nt3v54Ev");}
void  S3423C3_nt ::v55(){vfunc_called(this, "_ZN10S3423C3_nt3v55Ev");}
void  S3423C3_nt ::v56(){vfunc_called(this, "_ZN10S3423C3_nt3v56Ev");}
void  S3423C3_nt ::v57(){vfunc_called(this, "_ZN10S3423C3_nt3v57Ev");}
void  S3423C3_nt ::v58(){vfunc_called(this, "_ZN10S3423C3_nt3v58Ev");}
void  S3423C3_nt ::v59(){vfunc_called(this, "_ZN10S3423C3_nt3v59Ev");}
void  S3423C3_nt ::v60(){vfunc_called(this, "_ZN10S3423C3_nt3v60Ev");}
void  S3423C3_nt ::v61(){vfunc_called(this, "_ZN10S3423C3_nt3v61Ev");}
void  S3423C3_nt ::v62(){vfunc_called(this, "_ZN10S3423C3_nt3v62Ev");}
void  S3423C3_nt ::v63(){vfunc_called(this, "_ZN10S3423C3_nt3v63Ev");}
void  S3423C3_nt ::v64(){vfunc_called(this, "_ZN10S3423C3_nt3v64Ev");}
void  S3423C3_nt ::v65(){vfunc_called(this, "_ZN10S3423C3_nt3v65Ev");}
void  S3423C3_nt ::v66(){vfunc_called(this, "_ZN10S3423C3_nt3v66Ev");}
void  S3423C3_nt ::v67(){vfunc_called(this, "_ZN10S3423C3_nt3v67Ev");}
void  S3423C3_nt ::v68(){vfunc_called(this, "_ZN10S3423C3_nt3v68Ev");}
void  S3423C3_nt ::v69(){vfunc_called(this, "_ZN10S3423C3_nt3v69Ev");}
void  S3423C3_nt ::v70(){vfunc_called(this, "_ZN10S3423C3_nt3v70Ev");}
void  S3423C3_nt ::v71(){vfunc_called(this, "_ZN10S3423C3_nt3v71Ev");}
S3423C3_nt ::S3423C3_nt(){ note_ctor("S3423C3_nt", this);} // tgen

//skip512 S3423C3_nt

#else // __cplusplus

extern void _ZN10S3423C3_ntC1Ev();
extern void _ZN10S3423C3_ntD1Ev();
Name_Map name_map_S3423C3_nt[] = {
  NSPAIR(_ZN10S3423C3_ntC1Ev),
  NSPAIR(_ZN10S3423C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
extern void _ZN10S3423C3_ntD1Ev();
extern void _ZN10S3423C3_ntD0Ev();
extern void _ZN10S3423C3_nt2v8Ev();
extern void _ZN10S3423C3_nt2v9Ev();
extern void _ZN10S3423C3_nt3v10Ev();
extern void _ZN10S3423C3_nt3v11Ev();
extern void _ZN10S3423C3_nt3v12Ev();
extern void _ZN10S3423C3_nt3v13Ev();
extern void _ZN10S3423C3_nt3v14Ev();
extern void _ZN10S3423C3_nt3v15Ev();
extern void _ZN10S3423C3_nt3v16Ev();
extern void _ZN10S3423C3_nt3v17Ev();
extern void _ZN10S3423C3_nt3v18Ev();
extern void _ZN10S3423C3_nt3v19Ev();
extern void _ZN10S3423C3_nt3v20Ev();
extern void _ZN10S3423C3_nt3v21Ev();
extern void _ZN10S3423C3_nt3v22Ev();
extern void _ZN10S3423C3_nt3v23Ev();
extern void _ZN10S3423C3_nt3v24Ev();
extern void _ZN10S3423C3_nt3v25Ev();
extern void _ZN10S3423C3_nt3v26Ev();
extern void _ZN10S3423C3_nt3v27Ev();
extern void _ZN10S3423C3_nt3v28Ev();
extern void _ZN10S3423C3_nt3v29Ev();
extern void _ZN10S3423C3_nt3v30Ev();
extern void _ZN10S3423C3_nt3v31Ev();
extern void _ZN10S3423C3_nt3v32Ev();
extern void _ZN10S3423C3_nt3v33Ev();
extern void _ZN10S3423C3_nt3v34Ev();
extern void _ZN10S3423C3_nt3v35Ev();
extern void _ZN10S3423C3_nt3v36Ev();
extern void _ZN10S3423C3_nt3v37Ev();
extern void _ZN10S3423C3_nt3v38Ev();
extern void _ZN10S3423C3_nt3v39Ev();
extern void _ZN10S3423C3_nt3v40Ev();
extern void _ZN10S3423C3_nt3v41Ev();
extern void _ZN10S3423C3_nt3v42Ev();
extern void _ZN10S3423C3_nt3v43Ev();
extern void _ZN10S3423C3_nt3v44Ev();
extern void _ZN10S3423C3_nt3v45Ev();
extern void _ZN10S3423C3_nt3v46Ev();
extern void _ZN10S3423C3_nt3v47Ev();
extern void _ZN10S3423C3_nt3v48Ev();
extern void _ZN10S3423C3_nt3v49Ev();
extern void _ZN10S3423C3_nt3v50Ev();
extern void _ZN10S3423C3_nt3v51Ev();
extern void _ZN10S3423C3_nt3v52Ev();
extern void _ZN10S3423C3_nt3v53Ev();
extern void _ZN10S3423C3_nt3v54Ev();
extern void _ZN10S3423C3_nt3v55Ev();
extern void _ZN10S3423C3_nt3v56Ev();
extern void _ZN10S3423C3_nt3v57Ev();
extern void _ZN10S3423C3_nt3v58Ev();
extern void _ZN10S3423C3_nt3v59Ev();
extern void _ZN10S3423C3_nt3v60Ev();
extern void _ZN10S3423C3_nt3v61Ev();
extern void _ZN10S3423C3_nt3v62Ev();
extern void _ZN10S3423C3_nt3v63Ev();
extern void _ZN10S3423C3_nt3v64Ev();
extern void _ZN10S3423C3_nt3v65Ev();
extern void _ZN10S3423C3_nt3v66Ev();
extern void _ZN10S3423C3_nt3v67Ev();
extern void _ZN10S3423C3_nt3v68Ev();
extern void _ZN10S3423C3_nt3v69Ev();
extern void _ZN10S3423C3_nt3v70Ev();
extern void _ZN10S3423C3_nt3v71Ev();
static  VTBL_ENTRY vtc_S3423C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3423C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3423C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v71Ev,
};
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
VTBL_ENTRY *P__ZTI10S3423C3_nt = _ZTI10S3423C3_nt; 
extern  VTBL_ENTRY _ZTV10S3423C3_nt[];
Class_Descriptor cd_S3423C3_nt = {  "S3423C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3423C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3423C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3423C3_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  S3423C7_nt  {
  void *s3423c7f0;
  int s3423c7f1[2];
  void  mf3423c7(); // _ZN10S3423C7_nt8mf3423c7Ev
};
//SIG(-1 S3423C7_nt) C1{ m Fp Fi[2]}


void  S3423C7_nt ::mf3423c7(){}

//skip512 S3423C7_nt

#else // __cplusplus

Class_Descriptor cd_S3423C7_nt = {  "S3423C7_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  S3423C6_nt  : S3423C7_nt {
};
//SIG(-1 S3423C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3423C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S3423C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3423C6_nt = {  "S3423C6_nt", // class name
  bases_S3423C6_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  S3423C5_nt  : S3423C6_nt {
};
//SIG(-1 S3423C5_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S3423C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S3423C6_nt;
static Base_Class bases_S3423C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3423C8_nt  {
  int s3423c8f0;
  void  mf3423c8(); // _ZN10S3423C8_nt8mf3423c8Ev
};
//SIG(-1 S3423C8_nt) C1{ m Fi}


void  S3423C8_nt ::mf3423c8(){}

//skip512 S3423C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3423C8_nt[];
VTBL_ENTRY *P__ZTI10S3423C8_nt = _ZTI10S3423C8_nt; 
Class_Descriptor cd_S3423C8_nt = {  "S3423C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3423C8_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  S3423C12  : S3423C7_nt {
};
//SIG(-1 S3423C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3423C12()
{
  extern Class_Descriptor cd_S3423C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C12, buf);
    S3423C12 &lv = *(new (buf) S3423C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C12)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S3423C12");
    test_class_info(&lv, &cd_S3423C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C12(Test_S3423C12, "S3423C12", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S3423C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3423C12 = {  "S3423C12", // class name
  bases_S3423C12, 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  S3423C11  : S3423C12 {
};
//SIG(-1 S3423C11) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3423C11()
{
  extern Class_Descriptor cd_S3423C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C11, buf);
    S3423C11 &lv = *(new (buf) S3423C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C11)");
    check_base_class_offset(lv, (S3423C7_nt*)(S3423C12*), 0, "S3423C11");
    check_base_class_offset(lv, (S3423C12*), 0, "S3423C11");
    test_class_info(&lv, &cd_S3423C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C11(Test_S3423C11, "S3423C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S3423C12;
static Base_Class bases_S3423C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3423C11 = {  "S3423C11", // class name
  bases_S3423C11, 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  S3423C13_nt  {
  int s3423c13f0[3];
  void  mf3423c13(); // _ZN11S3423C13_nt9mf3423c13Ev
};
//SIG(-1 S3423C13_nt) C1{ m Fi[3]}


void  S3423C13_nt ::mf3423c13(){}

//skip512 S3423C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3423C18  : S3423C7_nt {
};
//SIG(-1 S3423C18) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3423C18()
{
  extern Class_Descriptor cd_S3423C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C18, buf);
    S3423C18 &lv = *(new (buf) S3423C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C18)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S3423C18");
    test_class_info(&lv, &cd_S3423C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C18(Test_S3423C18, "S3423C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S3423C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3423C18 = {  "S3423C18", // class name
  bases_S3423C18, 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  S3423C17  : S3423C18 {
};
//SIG(-1 S3423C17) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S3423C17()
{
  extern Class_Descriptor cd_S3423C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3423C17, buf);
    S3423C17 &lv = *(new (buf) S3423C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3423C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C17)");
    check_base_class_offset(lv, (S3423C7_nt*)(S3423C18*), 0, "S3423C17");
    check_base_class_offset(lv, (S3423C18*), 0, "S3423C17");
    test_class_info(&lv, &cd_S3423C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C17(Test_S3423C17, "S3423C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S3423C18;
static Base_Class bases_S3423C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3423C17 = {  "S3423C17", // class name
  bases_S3423C17, 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  S3423C2_nt  : S3423C3_nt {
  ::S3423C5_nt s3423c2f0;
  ::S3423C5_nt s3423c2f1;
  ::S3423C8_nt s3423c2f2;
  int s3423c2f3;
  char s3423c2f4[4];
  void *s3423c2f5[2];
  ::S3423C5_nt s3423c2f6;
  unsigned int s3423c2f7:1;
  unsigned int s3423c2f8:1;
  unsigned int s3423c2f9:1;
  unsigned int s3423c2f10:1;
  unsigned int s3423c2f11:1;
  unsigned int s3423c2f12:1;
  unsigned int s3423c2f13:1;
  unsigned int s3423c2f14:1;
  unsigned int s3423c2f15:1;
  unsigned int s3423c2f16:1;
  unsigned int s3423c2f17:1;
  unsigned int s3423c2f18:1;
  unsigned int s3423c2f19:1;
  unsigned int s3423c2f20:1;
  unsigned int s3423c2f21:1;
  unsigned int s3423c2f22:1;
  unsigned int s3423c2f23:1;
  unsigned int s3423c2f24:1;
  unsigned int s3423c2f25:1;
  unsigned int s3423c2f26:1;
  unsigned int s3423c2f27:1;
  unsigned int s3423c2f28:1;
  unsigned int s3423c2f29:1;
  unsigned int s3423c2f30:1;
  unsigned int s3423c2f31:1;
  unsigned int s3423c2f32:1;
  unsigned int s3423c2f33:1;
  unsigned int s3423c2f34:1;
  unsigned int s3423c2f35:1;
  unsigned int s3423c2f36:1;
  unsigned int s3423c2f37:1;
  unsigned int s3423c2f38:1;
  unsigned int s3423c2f39:1;
  unsigned int s3423c2f40:1;
  unsigned int s3423c2f41:1;
  unsigned int s3423c2f42:1;
  unsigned int s3423c2f43:1;
  unsigned int s3423c2f44:1;
  unsigned int s3423c2f45:1;
  unsigned int s3423c2f46:1;
  unsigned int s3423c2f47:1;
  unsigned int s3423c2f48:1;
  unsigned int s3423c2f49:1;
  unsigned int s3423c2f50:1;
  unsigned int s3423c2f51:1;
  unsigned int s3423c2f52:1;
  unsigned int s3423c2f53:1;
  unsigned int s3423c2f54:1;
  unsigned int s3423c2f55:1;
  unsigned int s3423c2f56:1;
  unsigned int s3423c2f57:1;
  unsigned int s3423c2f58:1;
  unsigned int s3423c2f59:1;
  unsigned int s3423c2f60:1;
  unsigned int s3423c2f61:1;
  unsigned int s3423c2f62:1;
  unsigned int s3423c2f63:1;
  unsigned int s3423c2f64:1;
  unsigned int s3423c2f65:1;
  unsigned int s3423c2f66:1;
  unsigned int s3423c2f67:1;
  unsigned int s3423c2f68:1;
  unsigned int s3423c2f69:1;
  unsigned int s3423c2f70:1;
  unsigned int s3423c2f71:1;
  unsigned int s3423c2f72:1;
  unsigned int s3423c2f73:1;
  unsigned int s3423c2f74:1;
  unsigned int s3423c2f75:1;
  unsigned int s3423c2f76:1;
  unsigned int s3423c2f77:1;
  unsigned int s3423c2f78:1;
  unsigned int s3423c2f79:1;
  unsigned int s3423c2f80:1;
  unsigned int s3423c2f81:1;
  unsigned int s3423c2f82:1;
  unsigned int s3423c2f83:1;
  int s3423c2f84[5];
  void *s3423c2f85[2];
  int s3423c2f86[3];
  ::S3423C4_nt s3423c2f87;
  ::S3423C4_nt s3423c2f88;
  ::S3423C4_nt s3423c2f89;
  ::S3423C11 s3423c2f90;
  ::S3423C11 s3423c2f91;
  int s3423c2f92;
  void *s3423c2f93[2];
  ::S3423C13_nt s3423c2f94;
  ::S3423C13_nt s3423c2f95;
  ::S3423C13_nt s3423c2f96;
  ::S3423C13_nt s3423c2f97;
  void *s3423c2f98;
  ::S3423C4_nt s3423c2f99;
  ::S3423C11 s3423c2f100;
  ::S3423C13_nt s3423c2f101;
  ::S3423C13_nt s3423c2f102;
  int s3423c2f103;
  ::S3423C13_nt s3423c2f104;
  ::S3423C13_nt s3423c2f105;
  void *s3423c2f106;
  int s3423c2f107;
  char s3423c2f108;
  ::S3423C13_nt s3423c2f109;
  ::S3423C13_nt s3423c2f110;
  void *s3423c2f111;
  int s3423c2f112;
  void *s3423c2f113;
  ::S3423C11 s3423c2f114;
  ::S3423C17 s3423c2f115;
  ::S3423C17 s3423c2f116;
  virtual  ~S3423C2_nt(); // _ZN10S3423C2_ntD1Ev
  virtual void  v72(); // _ZN10S3423C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3423C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3423C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3423C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3423C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3423C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3423C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3423C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3423C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3423C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3423C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3423C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3423C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3423C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3423C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3423C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3423C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3423C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3423C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3423C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3423C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3423C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3423C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3423C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3423C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3423C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3423C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3423C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3423C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3423C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3423C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3423C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3423C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3423C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3423C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3423C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3423C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3423C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3423C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3423C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3423C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3423C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3423C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3423C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3423C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3423C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3423C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3423C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3423C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3423C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3423C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3423C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3423C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3423C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3423C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3423C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3423C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3423C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3423C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3423C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3423C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3423C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3423C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3423C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3423C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3423C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3423C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3423C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3423C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3423C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3423C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3423C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3423C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3423C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3423C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3423C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3423C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3423C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3423C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3423C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3423C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3423C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3423C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3423C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3423C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3423C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3423C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3423C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3423C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3423C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3423C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3423C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3423C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3423C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3423C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3423C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3423C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3423C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3423C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3423C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3423C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3423C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3423C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3423C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3423C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3423C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3423C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3423C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3423C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3423C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3423C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3423C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3423C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3423C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3423C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3423C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3423C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3423C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3423C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3423C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3423C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3423C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3423C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3423C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3423C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3423C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3423C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3423C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3423C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3423C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3423C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3423C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3423C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3423C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3423C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3423C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3423C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3423C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3423C2_nt4v210Ev
  virtual void  v211(); // _ZN10S3423C2_nt4v211Ev
  virtual void  v212(); // _ZN10S3423C2_nt4v212Ev
  virtual void  v213(); // _ZN10S3423C2_nt4v213Ev
  virtual void  v214(); // _ZN10S3423C2_nt4v214Ev
  S3423C2_nt(); // tgen
};
//SIG(-1 S3423C2_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}


 S3423C2_nt ::~S3423C2_nt(){ note_dtor("S3423C2_nt", this);}
void  S3423C2_nt ::v72(){vfunc_called(this, "_ZN10S3423C2_nt3v72Ev");}
void  S3423C2_nt ::v73(){vfunc_called(this, "_ZN10S3423C2_nt3v73Ev");}
void  S3423C2_nt ::v74(){vfunc_called(this, "_ZN10S3423C2_nt3v74Ev");}
void  S3423C2_nt ::v75(){vfunc_called(this, "_ZN10S3423C2_nt3v75Ev");}
void  S3423C2_nt ::v76(){vfunc_called(this, "_ZN10S3423C2_nt3v76Ev");}
void  S3423C2_nt ::v77(){vfunc_called(this, "_ZN10S3423C2_nt3v77Ev");}
void  S3423C2_nt ::v78(){vfunc_called(this, "_ZN10S3423C2_nt3v78Ev");}
void  S3423C2_nt ::v79(){vfunc_called(this, "_ZN10S3423C2_nt3v79Ev");}
void  S3423C2_nt ::v80(){vfunc_called(this, "_ZN10S3423C2_nt3v80Ev");}
void  S3423C2_nt ::v81(){vfunc_called(this, "_ZN10S3423C2_nt3v81Ev");}
void  S3423C2_nt ::v82(){vfunc_called(this, "_ZN10S3423C2_nt3v82Ev");}
void  S3423C2_nt ::v83(){vfunc_called(this, "_ZN10S3423C2_nt3v83Ev");}
void  S3423C2_nt ::v84(){vfunc_called(this, "_ZN10S3423C2_nt3v84Ev");}
void  S3423C2_nt ::v85(){vfunc_called(this, "_ZN10S3423C2_nt3v85Ev");}
void  S3423C2_nt ::v86(){vfunc_called(this, "_ZN10S3423C2_nt3v86Ev");}
void  S3423C2_nt ::v87(){vfunc_called(this, "_ZN10S3423C2_nt3v87Ev");}
void  S3423C2_nt ::v88(){vfunc_called(this, "_ZN10S3423C2_nt3v88Ev");}
void  S3423C2_nt ::v89(){vfunc_called(this, "_ZN10S3423C2_nt3v89Ev");}
void  S3423C2_nt ::v90(){vfunc_called(this, "_ZN10S3423C2_nt3v90Ev");}
void  S3423C2_nt ::v91(){vfunc_called(this, "_ZN10S3423C2_nt3v91Ev");}
void  S3423C2_nt ::v92(){vfunc_called(this, "_ZN10S3423C2_nt3v92Ev");}
void  S3423C2_nt ::v93(){vfunc_called(this, "_ZN10S3423C2_nt3v93Ev");}
void  S3423C2_nt ::v94(){vfunc_called(this, "_ZN10S3423C2_nt3v94Ev");}
void  S3423C2_nt ::v95(){vfunc_called(this, "_ZN10S3423C2_nt3v95Ev");}
void  S3423C2_nt ::v96(){vfunc_called(this, "_ZN10S3423C2_nt3v96Ev");}
void  S3423C2_nt ::v97(){vfunc_called(this, "_ZN10S3423C2_nt3v97Ev");}
void  S3423C2_nt ::v98(){vfunc_called(this, "_ZN10S3423C2_nt3v98Ev");}
void  S3423C2_nt ::v99(){vfunc_called(this, "_ZN10S3423C2_nt3v99Ev");}
void  S3423C2_nt ::v100(){vfunc_called(this, "_ZN10S3423C2_nt4v100Ev");}
void  S3423C2_nt ::v101(){vfunc_called(this, "_ZN10S3423C2_nt4v101Ev");}
void  S3423C2_nt ::v102(){vfunc_called(this, "_ZN10S3423C2_nt4v102Ev");}
void  S3423C2_nt ::v103(){vfunc_called(this, "_ZN10S3423C2_nt4v103Ev");}
void  S3423C2_nt ::v104(){vfunc_called(this, "_ZN10S3423C2_nt4v104Ev");}
void  S3423C2_nt ::v105(){vfunc_called(this, "_ZN10S3423C2_nt4v105Ev");}
void  S3423C2_nt ::v106(){vfunc_called(this, "_ZN10S3423C2_nt4v106Ev");}
void  S3423C2_nt ::v107(){vfunc_called(this, "_ZN10S3423C2_nt4v107Ev");}
void  S3423C2_nt ::v108(){vfunc_called(this, "_ZN10S3423C2_nt4v108Ev");}
void  S3423C2_nt ::v109(){vfunc_called(this, "_ZN10S3423C2_nt4v109Ev");}
void  S3423C2_nt ::v110(){vfunc_called(this, "_ZN10S3423C2_nt4v110Ev");}
void  S3423C2_nt ::v111(){vfunc_called(this, "_ZN10S3423C2_nt4v111Ev");}
void  S3423C2_nt ::v112(){vfunc_called(this, "_ZN10S3423C2_nt4v112Ev");}
void  S3423C2_nt ::v113(){vfunc_called(this, "_ZN10S3423C2_nt4v113Ev");}
void  S3423C2_nt ::v114(){vfunc_called(this, "_ZN10S3423C2_nt4v114Ev");}
void  S3423C2_nt ::v115(){vfunc_called(this, "_ZN10S3423C2_nt4v115Ev");}
void  S3423C2_nt ::v116(){vfunc_called(this, "_ZN10S3423C2_nt4v116Ev");}
void  S3423C2_nt ::v117(){vfunc_called(this, "_ZN10S3423C2_nt4v117Ev");}
void  S3423C2_nt ::v118(){vfunc_called(this, "_ZN10S3423C2_nt4v118Ev");}
void  S3423C2_nt ::v119(){vfunc_called(this, "_ZN10S3423C2_nt4v119Ev");}
void  S3423C2_nt ::v120(){vfunc_called(this, "_ZN10S3423C2_nt4v120Ev");}
void  S3423C2_nt ::v121(){vfunc_called(this, "_ZN10S3423C2_nt4v121Ev");}
void  S3423C2_nt ::v122(){vfunc_called(this, "_ZN10S3423C2_nt4v122Ev");}
void  S3423C2_nt ::v123(){vfunc_called(this, "_ZN10S3423C2_nt4v123Ev");}
void  S3423C2_nt ::v124(){vfunc_called(this, "_ZN10S3423C2_nt4v124Ev");}
void  S3423C2_nt ::v125(){vfunc_called(this, "_ZN10S3423C2_nt4v125Ev");}
void  S3423C2_nt ::v126(){vfunc_called(this, "_ZN10S3423C2_nt4v126Ev");}
void  S3423C2_nt ::v127(){vfunc_called(this, "_ZN10S3423C2_nt4v127Ev");}
void  S3423C2_nt ::v128(){vfunc_called(this, "_ZN10S3423C2_nt4v128Ev");}
void  S3423C2_nt ::v129(){vfunc_called(this, "_ZN10S3423C2_nt4v129Ev");}
void  S3423C2_nt ::v130(){vfunc_called(this, "_ZN10S3423C2_nt4v130Ev");}
void  S3423C2_nt ::v131(){vfunc_called(this, "_ZN10S3423C2_nt4v131Ev");}
void  S3423C2_nt ::v132(){vfunc_called(this, "_ZN10S3423C2_nt4v132Ev");}
void  S3423C2_nt ::v133(){vfunc_called(this, "_ZN10S3423C2_nt4v133Ev");}
void  S3423C2_nt ::v134(){vfunc_called(this, "_ZN10S3423C2_nt4v134Ev");}
void  S3423C2_nt ::v135(){vfunc_called(this, "_ZN10S3423C2_nt4v135Ev");}
void  S3423C2_nt ::v136(){vfunc_called(this, "_ZN10S3423C2_nt4v136Ev");}
void  S3423C2_nt ::v137(){vfunc_called(this, "_ZN10S3423C2_nt4v137Ev");}
void  S3423C2_nt ::v138(){vfunc_called(this, "_ZN10S3423C2_nt4v138Ev");}
void  S3423C2_nt ::v139(){vfunc_called(this, "_ZN10S3423C2_nt4v139Ev");}
void  S3423C2_nt ::v140(){vfunc_called(this, "_ZN10S3423C2_nt4v140Ev");}
void  S3423C2_nt ::v141(){vfunc_called(this, "_ZN10S3423C2_nt4v141Ev");}
void  S3423C2_nt ::v142(){vfunc_called(this, "_ZN10S3423C2_nt4v142Ev");}
void  S3423C2_nt ::v143(){vfunc_called(this, "_ZN10S3423C2_nt4v143Ev");}
void  S3423C2_nt ::v144(){vfunc_called(this, "_ZN10S3423C2_nt4v144Ev");}
void  S3423C2_nt ::v145(){vfunc_called(this, "_ZN10S3423C2_nt4v145Ev");}
void  S3423C2_nt ::v146(){vfunc_called(this, "_ZN10S3423C2_nt4v146Ev");}
void  S3423C2_nt ::v147(){vfunc_called(this, "_ZN10S3423C2_nt4v147Ev");}
void  S3423C2_nt ::v148(){vfunc_called(this, "_ZN10S3423C2_nt4v148Ev");}
void  S3423C2_nt ::v149(){vfunc_called(this, "_ZN10S3423C2_nt4v149Ev");}
void  S3423C2_nt ::v150(){vfunc_called(this, "_ZN10S3423C2_nt4v150Ev");}
void  S3423C2_nt ::v151(){vfunc_called(this, "_ZN10S3423C2_nt4v151Ev");}
void  S3423C2_nt ::v152(){vfunc_called(this, "_ZN10S3423C2_nt4v152Ev");}
void  S3423C2_nt ::v153(){vfunc_called(this, "_ZN10S3423C2_nt4v153Ev");}
void  S3423C2_nt ::v154(){vfunc_called(this, "_ZN10S3423C2_nt4v154Ev");}
void  S3423C2_nt ::v155(){vfunc_called(this, "_ZN10S3423C2_nt4v155Ev");}
void  S3423C2_nt ::v156(){vfunc_called(this, "_ZN10S3423C2_nt4v156Ev");}
void  S3423C2_nt ::v157(){vfunc_called(this, "_ZN10S3423C2_nt4v157Ev");}
void  S3423C2_nt ::v158(){vfunc_called(this, "_ZN10S3423C2_nt4v158Ev");}
void  S3423C2_nt ::v159(){vfunc_called(this, "_ZN10S3423C2_nt4v159Ev");}
void  S3423C2_nt ::v160(){vfunc_called(this, "_ZN10S3423C2_nt4v160Ev");}
void  S3423C2_nt ::v161(){vfunc_called(this, "_ZN10S3423C2_nt4v161Ev");}
void  S3423C2_nt ::v162(){vfunc_called(this, "_ZN10S3423C2_nt4v162Ev");}
void  S3423C2_nt ::v163(){vfunc_called(this, "_ZN10S3423C2_nt4v163Ev");}
void  S3423C2_nt ::v164(){vfunc_called(this, "_ZN10S3423C2_nt4v164Ev");}
void  S3423C2_nt ::v165(){vfunc_called(this, "_ZN10S3423C2_nt4v165Ev");}
void  S3423C2_nt ::v166(){vfunc_called(this, "_ZN10S3423C2_nt4v166Ev");}
void  S3423C2_nt ::v167(){vfunc_called(this, "_ZN10S3423C2_nt4v167Ev");}
void  S3423C2_nt ::v168(){vfunc_called(this, "_ZN10S3423C2_nt4v168Ev");}
void  S3423C2_nt ::v169(){vfunc_called(this, "_ZN10S3423C2_nt4v169Ev");}
void  S3423C2_nt ::v170(){vfunc_called(this, "_ZN10S3423C2_nt4v170Ev");}
void  S3423C2_nt ::v171(){vfunc_called(this, "_ZN10S3423C2_nt4v171Ev");}
void  S3423C2_nt ::v172(){vfunc_called(this, "_ZN10S3423C2_nt4v172Ev");}
void  S3423C2_nt ::v173(){vfunc_called(this, "_ZN10S3423C2_nt4v173Ev");}
void  S3423C2_nt ::v174(){vfunc_called(this, "_ZN10S3423C2_nt4v174Ev");}
void  S3423C2_nt ::v175(){vfunc_called(this, "_ZN10S3423C2_nt4v175Ev");}
void  S3423C2_nt ::v176(){vfunc_called(this, "_ZN10S3423C2_nt4v176Ev");}
void  S3423C2_nt ::v177(){vfunc_called(this, "_ZN10S3423C2_nt4v177Ev");}
void  S3423C2_nt ::v178(){vfunc_called(this, "_ZN10S3423C2_nt4v178Ev");}
void  S3423C2_nt ::v179(){vfunc_called(this, "_ZN10S3423C2_nt4v179Ev");}
void  S3423C2_nt ::v180(){vfunc_called(this, "_ZN10S3423C2_nt4v180Ev");}
void  S3423C2_nt ::v181(){vfunc_called(this, "_ZN10S3423C2_nt4v181Ev");}
void  S3423C2_nt ::v182(){vfunc_called(this, "_ZN10S3423C2_nt4v182Ev");}
void  S3423C2_nt ::v183(){vfunc_called(this, "_ZN10S3423C2_nt4v183Ev");}
void  S3423C2_nt ::v184(){vfunc_called(this, "_ZN10S3423C2_nt4v184Ev");}
void  S3423C2_nt ::v185(){vfunc_called(this, "_ZN10S3423C2_nt4v185Ev");}
void  S3423C2_nt ::v186(){vfunc_called(this, "_ZN10S3423C2_nt4v186Ev");}
void  S3423C2_nt ::v187(){vfunc_called(this, "_ZN10S3423C2_nt4v187Ev");}
void  S3423C2_nt ::v188(){vfunc_called(this, "_ZN10S3423C2_nt4v188Ev");}
void  S3423C2_nt ::v189(){vfunc_called(this, "_ZN10S3423C2_nt4v189Ev");}
void  S3423C2_nt ::v190(){vfunc_called(this, "_ZN10S3423C2_nt4v190Ev");}
void  S3423C2_nt ::v191(){vfunc_called(this, "_ZN10S3423C2_nt4v191Ev");}
void  S3423C2_nt ::v192(){vfunc_called(this, "_ZN10S3423C2_nt4v192Ev");}
void  S3423C2_nt ::v193(){vfunc_called(this, "_ZN10S3423C2_nt4v193Ev");}
void  S3423C2_nt ::v194(){vfunc_called(this, "_ZN10S3423C2_nt4v194Ev");}
void  S3423C2_nt ::v195(){vfunc_called(this, "_ZN10S3423C2_nt4v195Ev");}
void  S3423C2_nt ::v196(){vfunc_called(this, "_ZN10S3423C2_nt4v196Ev");}
void  S3423C2_nt ::v197(){vfunc_called(this, "_ZN10S3423C2_nt4v197Ev");}
void  S3423C2_nt ::v198(){vfunc_called(this, "_ZN10S3423C2_nt4v198Ev");}
void  S3423C2_nt ::v199(){vfunc_called(this, "_ZN10S3423C2_nt4v199Ev");}
void  S3423C2_nt ::v200(){vfunc_called(this, "_ZN10S3423C2_nt4v200Ev");}
void  S3423C2_nt ::v201(){vfunc_called(this, "_ZN10S3423C2_nt4v201Ev");}
void  S3423C2_nt ::v202(){vfunc_called(this, "_ZN10S3423C2_nt4v202Ev");}
void  S3423C2_nt ::v203(){vfunc_called(this, "_ZN10S3423C2_nt4v203Ev");}
void  S3423C2_nt ::v204(){vfunc_called(this, "_ZN10S3423C2_nt4v204Ev");}
void  S3423C2_nt ::v205(){vfunc_called(this, "_ZN10S3423C2_nt4v205Ev");}
void  S3423C2_nt ::v206(){vfunc_called(this, "_ZN10S3423C2_nt4v206Ev");}
void  S3423C2_nt ::v207(){vfunc_called(this, "_ZN10S3423C2_nt4v207Ev");}
void  S3423C2_nt ::v208(){vfunc_called(this, "_ZN10S3423C2_nt4v208Ev");}
void  S3423C2_nt ::v209(){vfunc_called(this, "_ZN10S3423C2_nt4v209Ev");}
void  S3423C2_nt ::v210(){vfunc_called(this, "_ZN10S3423C2_nt4v210Ev");}
void  S3423C2_nt ::v211(){vfunc_called(this, "_ZN10S3423C2_nt4v211Ev");}
void  S3423C2_nt ::v212(){vfunc_called(this, "_ZN10S3423C2_nt4v212Ev");}
void  S3423C2_nt ::v213(){vfunc_called(this, "_ZN10S3423C2_nt4v213Ev");}
void  S3423C2_nt ::v214(){vfunc_called(this, "_ZN10S3423C2_nt4v214Ev");}
S3423C2_nt ::S3423C2_nt(){ note_ctor("S3423C2_nt", this);} // tgen

//skip512 S3423C2_nt

#else // __cplusplus

extern void _ZN10S3423C2_ntC1Ev();
extern void _ZN10S3423C2_ntD1Ev();
Name_Map name_map_S3423C2_nt[] = {
  NSPAIR(_ZN10S3423C2_ntC1Ev),
  NSPAIR(_ZN10S3423C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C3_nt;
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
extern  VTBL_ENTRY _ZTV10S3423C3_nt[];
static Base_Class bases_S3423C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3423C2_nt[];
extern void _ZN10S3423C2_ntD1Ev();
extern void _ZN10S3423C2_ntD0Ev();
extern void _ZN10S3423C3_nt2v8Ev();
extern void _ZN10S3423C3_nt2v9Ev();
extern void _ZN10S3423C3_nt3v10Ev();
extern void _ZN10S3423C3_nt3v11Ev();
extern void _ZN10S3423C3_nt3v12Ev();
extern void _ZN10S3423C3_nt3v13Ev();
extern void _ZN10S3423C3_nt3v14Ev();
extern void _ZN10S3423C3_nt3v15Ev();
extern void _ZN10S3423C3_nt3v16Ev();
extern void _ZN10S3423C3_nt3v17Ev();
extern void _ZN10S3423C3_nt3v18Ev();
extern void _ZN10S3423C3_nt3v19Ev();
extern void _ZN10S3423C3_nt3v20Ev();
extern void _ZN10S3423C3_nt3v21Ev();
extern void _ZN10S3423C3_nt3v22Ev();
extern void _ZN10S3423C3_nt3v23Ev();
extern void _ZN10S3423C3_nt3v24Ev();
extern void _ZN10S3423C3_nt3v25Ev();
extern void _ZN10S3423C3_nt3v26Ev();
extern void _ZN10S3423C3_nt3v27Ev();
extern void _ZN10S3423C3_nt3v28Ev();
extern void _ZN10S3423C3_nt3v29Ev();
extern void _ZN10S3423C3_nt3v30Ev();
extern void _ZN10S3423C3_nt3v31Ev();
extern void _ZN10S3423C3_nt3v32Ev();
extern void _ZN10S3423C3_nt3v33Ev();
extern void _ZN10S3423C3_nt3v34Ev();
extern void _ZN10S3423C3_nt3v35Ev();
extern void _ZN10S3423C3_nt3v36Ev();
extern void _ZN10S3423C3_nt3v37Ev();
extern void _ZN10S3423C3_nt3v38Ev();
extern void _ZN10S3423C3_nt3v39Ev();
extern void _ZN10S3423C3_nt3v40Ev();
extern void _ZN10S3423C3_nt3v41Ev();
extern void _ZN10S3423C3_nt3v42Ev();
extern void _ZN10S3423C3_nt3v43Ev();
extern void _ZN10S3423C3_nt3v44Ev();
extern void _ZN10S3423C3_nt3v45Ev();
extern void _ZN10S3423C3_nt3v46Ev();
extern void _ZN10S3423C3_nt3v47Ev();
extern void _ZN10S3423C3_nt3v48Ev();
extern void _ZN10S3423C3_nt3v49Ev();
extern void _ZN10S3423C3_nt3v50Ev();
extern void _ZN10S3423C3_nt3v51Ev();
extern void _ZN10S3423C3_nt3v52Ev();
extern void _ZN10S3423C3_nt3v53Ev();
extern void _ZN10S3423C3_nt3v54Ev();
extern void _ZN10S3423C3_nt3v55Ev();
extern void _ZN10S3423C3_nt3v56Ev();
extern void _ZN10S3423C3_nt3v57Ev();
extern void _ZN10S3423C3_nt3v58Ev();
extern void _ZN10S3423C3_nt3v59Ev();
extern void _ZN10S3423C3_nt3v60Ev();
extern void _ZN10S3423C3_nt3v61Ev();
extern void _ZN10S3423C3_nt3v62Ev();
extern void _ZN10S3423C3_nt3v63Ev();
extern void _ZN10S3423C3_nt3v64Ev();
extern void _ZN10S3423C3_nt3v65Ev();
extern void _ZN10S3423C3_nt3v66Ev();
extern void _ZN10S3423C3_nt3v67Ev();
extern void _ZN10S3423C3_nt3v68Ev();
extern void _ZN10S3423C3_nt3v69Ev();
extern void _ZN10S3423C3_nt3v70Ev();
extern void _ZN10S3423C3_nt3v71Ev();
extern void _ZN10S3423C2_nt3v72Ev();
extern void _ZN10S3423C2_nt3v73Ev();
extern void _ZN10S3423C2_nt3v74Ev();
extern void _ZN10S3423C2_nt3v75Ev();
extern void _ZN10S3423C2_nt3v76Ev();
extern void _ZN10S3423C2_nt3v77Ev();
extern void _ZN10S3423C2_nt3v78Ev();
extern void _ZN10S3423C2_nt3v79Ev();
extern void _ZN10S3423C2_nt3v80Ev();
extern void _ZN10S3423C2_nt3v81Ev();
extern void _ZN10S3423C2_nt3v82Ev();
extern void _ZN10S3423C2_nt3v83Ev();
extern void _ZN10S3423C2_nt3v84Ev();
extern void _ZN10S3423C2_nt3v85Ev();
extern void _ZN10S3423C2_nt3v86Ev();
extern void _ZN10S3423C2_nt3v87Ev();
extern void _ZN10S3423C2_nt3v88Ev();
extern void _ZN10S3423C2_nt3v89Ev();
extern void _ZN10S3423C2_nt3v90Ev();
extern void _ZN10S3423C2_nt3v91Ev();
extern void _ZN10S3423C2_nt3v92Ev();
extern void _ZN10S3423C2_nt3v93Ev();
extern void _ZN10S3423C2_nt3v94Ev();
extern void _ZN10S3423C2_nt3v95Ev();
extern void _ZN10S3423C2_nt3v96Ev();
extern void _ZN10S3423C2_nt3v97Ev();
extern void _ZN10S3423C2_nt3v98Ev();
extern void _ZN10S3423C2_nt3v99Ev();
extern void _ZN10S3423C2_nt4v100Ev();
extern void _ZN10S3423C2_nt4v101Ev();
extern void _ZN10S3423C2_nt4v102Ev();
extern void _ZN10S3423C2_nt4v103Ev();
extern void _ZN10S3423C2_nt4v104Ev();
extern void _ZN10S3423C2_nt4v105Ev();
extern void _ZN10S3423C2_nt4v106Ev();
extern void _ZN10S3423C2_nt4v107Ev();
extern void _ZN10S3423C2_nt4v108Ev();
extern void _ZN10S3423C2_nt4v109Ev();
extern void _ZN10S3423C2_nt4v110Ev();
extern void _ZN10S3423C2_nt4v111Ev();
extern void _ZN10S3423C2_nt4v112Ev();
extern void _ZN10S3423C2_nt4v113Ev();
extern void _ZN10S3423C2_nt4v114Ev();
extern void _ZN10S3423C2_nt4v115Ev();
extern void _ZN10S3423C2_nt4v116Ev();
extern void _ZN10S3423C2_nt4v117Ev();
extern void _ZN10S3423C2_nt4v118Ev();
extern void _ZN10S3423C2_nt4v119Ev();
extern void _ZN10S3423C2_nt4v120Ev();
extern void _ZN10S3423C2_nt4v121Ev();
extern void _ZN10S3423C2_nt4v122Ev();
extern void _ZN10S3423C2_nt4v123Ev();
extern void _ZN10S3423C2_nt4v124Ev();
extern void _ZN10S3423C2_nt4v125Ev();
extern void _ZN10S3423C2_nt4v126Ev();
extern void _ZN10S3423C2_nt4v127Ev();
extern void _ZN10S3423C2_nt4v128Ev();
extern void _ZN10S3423C2_nt4v129Ev();
extern void _ZN10S3423C2_nt4v130Ev();
extern void _ZN10S3423C2_nt4v131Ev();
extern void _ZN10S3423C2_nt4v132Ev();
extern void _ZN10S3423C2_nt4v133Ev();
extern void _ZN10S3423C2_nt4v134Ev();
extern void _ZN10S3423C2_nt4v135Ev();
extern void _ZN10S3423C2_nt4v136Ev();
extern void _ZN10S3423C2_nt4v137Ev();
extern void _ZN10S3423C2_nt4v138Ev();
extern void _ZN10S3423C2_nt4v139Ev();
extern void _ZN10S3423C2_nt4v140Ev();
extern void _ZN10S3423C2_nt4v141Ev();
extern void _ZN10S3423C2_nt4v142Ev();
extern void _ZN10S3423C2_nt4v143Ev();
extern void _ZN10S3423C2_nt4v144Ev();
extern void _ZN10S3423C2_nt4v145Ev();
extern void _ZN10S3423C2_nt4v146Ev();
extern void _ZN10S3423C2_nt4v147Ev();
extern void _ZN10S3423C2_nt4v148Ev();
extern void _ZN10S3423C2_nt4v149Ev();
extern void _ZN10S3423C2_nt4v150Ev();
extern void _ZN10S3423C2_nt4v151Ev();
extern void _ZN10S3423C2_nt4v152Ev();
extern void _ZN10S3423C2_nt4v153Ev();
extern void _ZN10S3423C2_nt4v154Ev();
extern void _ZN10S3423C2_nt4v155Ev();
extern void _ZN10S3423C2_nt4v156Ev();
extern void _ZN10S3423C2_nt4v157Ev();
extern void _ZN10S3423C2_nt4v158Ev();
extern void _ZN10S3423C2_nt4v159Ev();
extern void _ZN10S3423C2_nt4v160Ev();
extern void _ZN10S3423C2_nt4v161Ev();
extern void _ZN10S3423C2_nt4v162Ev();
extern void _ZN10S3423C2_nt4v163Ev();
extern void _ZN10S3423C2_nt4v164Ev();
extern void _ZN10S3423C2_nt4v165Ev();
extern void _ZN10S3423C2_nt4v166Ev();
extern void _ZN10S3423C2_nt4v167Ev();
extern void _ZN10S3423C2_nt4v168Ev();
extern void _ZN10S3423C2_nt4v169Ev();
extern void _ZN10S3423C2_nt4v170Ev();
extern void _ZN10S3423C2_nt4v171Ev();
extern void _ZN10S3423C2_nt4v172Ev();
extern void _ZN10S3423C2_nt4v173Ev();
extern void _ZN10S3423C2_nt4v174Ev();
extern void _ZN10S3423C2_nt4v175Ev();
extern void _ZN10S3423C2_nt4v176Ev();
extern void _ZN10S3423C2_nt4v177Ev();
extern void _ZN10S3423C2_nt4v178Ev();
extern void _ZN10S3423C2_nt4v179Ev();
extern void _ZN10S3423C2_nt4v180Ev();
extern void _ZN10S3423C2_nt4v181Ev();
extern void _ZN10S3423C2_nt4v182Ev();
extern void _ZN10S3423C2_nt4v183Ev();
extern void _ZN10S3423C2_nt4v184Ev();
extern void _ZN10S3423C2_nt4v185Ev();
extern void _ZN10S3423C2_nt4v186Ev();
extern void _ZN10S3423C2_nt4v187Ev();
extern void _ZN10S3423C2_nt4v188Ev();
extern void _ZN10S3423C2_nt4v189Ev();
extern void _ZN10S3423C2_nt4v190Ev();
extern void _ZN10S3423C2_nt4v191Ev();
extern void _ZN10S3423C2_nt4v192Ev();
extern void _ZN10S3423C2_nt4v193Ev();
extern void _ZN10S3423C2_nt4v194Ev();
extern void _ZN10S3423C2_nt4v195Ev();
extern void _ZN10S3423C2_nt4v196Ev();
extern void _ZN10S3423C2_nt4v197Ev();
extern void _ZN10S3423C2_nt4v198Ev();
extern void _ZN10S3423C2_nt4v199Ev();
extern void _ZN10S3423C2_nt4v200Ev();
extern void _ZN10S3423C2_nt4v201Ev();
extern void _ZN10S3423C2_nt4v202Ev();
extern void _ZN10S3423C2_nt4v203Ev();
extern void _ZN10S3423C2_nt4v204Ev();
extern void _ZN10S3423C2_nt4v205Ev();
extern void _ZN10S3423C2_nt4v206Ev();
extern void _ZN10S3423C2_nt4v207Ev();
extern void _ZN10S3423C2_nt4v208Ev();
extern void _ZN10S3423C2_nt4v209Ev();
extern void _ZN10S3423C2_nt4v210Ev();
extern void _ZN10S3423C2_nt4v211Ev();
extern void _ZN10S3423C2_nt4v212Ev();
extern void _ZN10S3423C2_nt4v213Ev();
extern void _ZN10S3423C2_nt4v214Ev();
static  VTBL_ENTRY vtc_S3423C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3423C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3423C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v213Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v214Ev,
};
extern VTBL_ENTRY _ZTI10S3423C2_nt[];
VTBL_ENTRY *P__ZTI10S3423C2_nt = _ZTI10S3423C2_nt; 
extern  VTBL_ENTRY _ZTV10S3423C2_nt[];
Class_Descriptor cd_S3423C2_nt = {  "S3423C2_nt", // class name
  bases_S3423C2_nt, 1,
  &(vtc_S3423C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3423C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3423C2_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  S3423C1  : S3423C2_nt {
  void *s3423c1f0;
  virtual  ~S3423C1(); // _ZN7S3423C1D1Ev
  virtual void  v1(); // _ZN7S3423C12v1Ev
  virtual void  v2(); // _ZN7S3423C12v2Ev
  virtual void  v3(); // _ZN7S3423C12v3Ev
  virtual void  v4(); // _ZN7S3423C12v4Ev
  virtual void  v5(); // _ZN7S3423C12v5Ev
  virtual void  v6(); // _ZN7S3423C12v6Ev
  virtual void  v7(); // _ZN7S3423C12v7Ev
  S3423C1(); // tgen
};
//SIG(1 S3423C1) C1{ BC2{ BC3{ 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 FC4{ 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 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 Fp}


 S3423C1 ::~S3423C1(){ note_dtor("S3423C1", this);}
void  S3423C1 ::v1(){vfunc_called(this, "_ZN7S3423C12v1Ev");}
void  S3423C1 ::v2(){vfunc_called(this, "_ZN7S3423C12v2Ev");}
void  S3423C1 ::v3(){vfunc_called(this, "_ZN7S3423C12v3Ev");}
void  S3423C1 ::v4(){vfunc_called(this, "_ZN7S3423C12v4Ev");}
void  S3423C1 ::v5(){vfunc_called(this, "_ZN7S3423C12v5Ev");}
void  S3423C1 ::v6(){vfunc_called(this, "_ZN7S3423C12v6Ev");}
void  S3423C1 ::v7(){vfunc_called(this, "_ZN7S3423C12v7Ev");}
S3423C1 ::S3423C1(){ note_ctor("S3423C1", this);} // tgen

static void Test_S3423C1()
{
  extern Class_Descriptor cd_S3423C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(73,111)];
    init_test(&cd_S3423C1, buf);
    S3423C1 *dp, &lv = *(dp=new (buf) S3423C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,440), "sizeof(S3423C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3423C1)");
    check_base_class_offset(lv, (S3423C3_nt*)(S3423C2_nt*), 0, "S3423C1");
    check_base_class_offset(lv, (S3423C2_nt*), 0, "S3423C1");
    check_field_offset(lv, s3423c1f0, ABISELECT(568,436), "S3423C1.s3423c1f0");
    test_class_info(&lv, &cd_S3423C1);
    dp->~S3423C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3423C1(Test_S3423C1, "S3423C1", ABISELECT(576,440));

#else // __cplusplus

extern void _ZN7S3423C1C1Ev();
extern void _ZN7S3423C1D1Ev();
Name_Map name_map_S3423C1[] = {
  NSPAIR(_ZN7S3423C1C1Ev),
  NSPAIR(_ZN7S3423C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C3_nt;
extern VTBL_ENTRY _ZTI10S3423C3_nt[];
extern  VTBL_ENTRY _ZTV10S3423C3_nt[];
extern Class_Descriptor cd_S3423C2_nt;
extern VTBL_ENTRY _ZTI10S3423C2_nt[];
extern  VTBL_ENTRY _ZTV10S3423C2_nt[];
static Base_Class bases_S3423C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3423C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3423C1[];
extern void _ZN7S3423C1D1Ev();
extern void _ZN7S3423C1D0Ev();
extern void _ZN10S3423C3_nt2v8Ev();
extern void _ZN10S3423C3_nt2v9Ev();
extern void _ZN10S3423C3_nt3v10Ev();
extern void _ZN10S3423C3_nt3v11Ev();
extern void _ZN10S3423C3_nt3v12Ev();
extern void _ZN10S3423C3_nt3v13Ev();
extern void _ZN10S3423C3_nt3v14Ev();
extern void _ZN10S3423C3_nt3v15Ev();
extern void _ZN10S3423C3_nt3v16Ev();
extern void _ZN10S3423C3_nt3v17Ev();
extern void _ZN10S3423C3_nt3v18Ev();
extern void _ZN10S3423C3_nt3v19Ev();
extern void _ZN10S3423C3_nt3v20Ev();
extern void _ZN10S3423C3_nt3v21Ev();
extern void _ZN10S3423C3_nt3v22Ev();
extern void _ZN10S3423C3_nt3v23Ev();
extern void _ZN10S3423C3_nt3v24Ev();
extern void _ZN10S3423C3_nt3v25Ev();
extern void _ZN10S3423C3_nt3v26Ev();
extern void _ZN10S3423C3_nt3v27Ev();
extern void _ZN10S3423C3_nt3v28Ev();
extern void _ZN10S3423C3_nt3v29Ev();
extern void _ZN10S3423C3_nt3v30Ev();
extern void _ZN10S3423C3_nt3v31Ev();
extern void _ZN10S3423C3_nt3v32Ev();
extern void _ZN10S3423C3_nt3v33Ev();
extern void _ZN10S3423C3_nt3v34Ev();
extern void _ZN10S3423C3_nt3v35Ev();
extern void _ZN10S3423C3_nt3v36Ev();
extern void _ZN10S3423C3_nt3v37Ev();
extern void _ZN10S3423C3_nt3v38Ev();
extern void _ZN10S3423C3_nt3v39Ev();
extern void _ZN10S3423C3_nt3v40Ev();
extern void _ZN10S3423C3_nt3v41Ev();
extern void _ZN10S3423C3_nt3v42Ev();
extern void _ZN10S3423C3_nt3v43Ev();
extern void _ZN10S3423C3_nt3v44Ev();
extern void _ZN10S3423C3_nt3v45Ev();
extern void _ZN10S3423C3_nt3v46Ev();
extern void _ZN10S3423C3_nt3v47Ev();
extern void _ZN10S3423C3_nt3v48Ev();
extern void _ZN10S3423C3_nt3v49Ev();
extern void _ZN10S3423C3_nt3v50Ev();
extern void _ZN10S3423C3_nt3v51Ev();
extern void _ZN10S3423C3_nt3v52Ev();
extern void _ZN10S3423C3_nt3v53Ev();
extern void _ZN10S3423C3_nt3v54Ev();
extern void _ZN10S3423C3_nt3v55Ev();
extern void _ZN10S3423C3_nt3v56Ev();
extern void _ZN10S3423C3_nt3v57Ev();
extern void _ZN10S3423C3_nt3v58Ev();
extern void _ZN10S3423C3_nt3v59Ev();
extern void _ZN10S3423C3_nt3v60Ev();
extern void _ZN10S3423C3_nt3v61Ev();
extern void _ZN10S3423C3_nt3v62Ev();
extern void _ZN10S3423C3_nt3v63Ev();
extern void _ZN10S3423C3_nt3v64Ev();
extern void _ZN10S3423C3_nt3v65Ev();
extern void _ZN10S3423C3_nt3v66Ev();
extern void _ZN10S3423C3_nt3v67Ev();
extern void _ZN10S3423C3_nt3v68Ev();
extern void _ZN10S3423C3_nt3v69Ev();
extern void _ZN10S3423C3_nt3v70Ev();
extern void _ZN10S3423C3_nt3v71Ev();
extern void _ZN10S3423C2_nt3v72Ev();
extern void _ZN10S3423C2_nt3v73Ev();
extern void _ZN10S3423C2_nt3v74Ev();
extern void _ZN10S3423C2_nt3v75Ev();
extern void _ZN10S3423C2_nt3v76Ev();
extern void _ZN10S3423C2_nt3v77Ev();
extern void _ZN10S3423C2_nt3v78Ev();
extern void _ZN10S3423C2_nt3v79Ev();
extern void _ZN10S3423C2_nt3v80Ev();
extern void _ZN10S3423C2_nt3v81Ev();
extern void _ZN10S3423C2_nt3v82Ev();
extern void _ZN10S3423C2_nt3v83Ev();
extern void _ZN10S3423C2_nt3v84Ev();
extern void _ZN10S3423C2_nt3v85Ev();
extern void _ZN10S3423C2_nt3v86Ev();
extern void _ZN10S3423C2_nt3v87Ev();
extern void _ZN10S3423C2_nt3v88Ev();
extern void _ZN10S3423C2_nt3v89Ev();
extern void _ZN10S3423C2_nt3v90Ev();
extern void _ZN10S3423C2_nt3v91Ev();
extern void _ZN10S3423C2_nt3v92Ev();
extern void _ZN10S3423C2_nt3v93Ev();
extern void _ZN10S3423C2_nt3v94Ev();
extern void _ZN10S3423C2_nt3v95Ev();
extern void _ZN10S3423C2_nt3v96Ev();
extern void _ZN10S3423C2_nt3v97Ev();
extern void _ZN10S3423C2_nt3v98Ev();
extern void _ZN10S3423C2_nt3v99Ev();
extern void _ZN10S3423C2_nt4v100Ev();
extern void _ZN10S3423C2_nt4v101Ev();
extern void _ZN10S3423C2_nt4v102Ev();
extern void _ZN10S3423C2_nt4v103Ev();
extern void _ZN10S3423C2_nt4v104Ev();
extern void _ZN10S3423C2_nt4v105Ev();
extern void _ZN10S3423C2_nt4v106Ev();
extern void _ZN10S3423C2_nt4v107Ev();
extern void _ZN10S3423C2_nt4v108Ev();
extern void _ZN10S3423C2_nt4v109Ev();
extern void _ZN10S3423C2_nt4v110Ev();
extern void _ZN10S3423C2_nt4v111Ev();
extern void _ZN10S3423C2_nt4v112Ev();
extern void _ZN10S3423C2_nt4v113Ev();
extern void _ZN10S3423C2_nt4v114Ev();
extern void _ZN10S3423C2_nt4v115Ev();
extern void _ZN10S3423C2_nt4v116Ev();
extern void _ZN10S3423C2_nt4v117Ev();
extern void _ZN10S3423C2_nt4v118Ev();
extern void _ZN10S3423C2_nt4v119Ev();
extern void _ZN10S3423C2_nt4v120Ev();
extern void _ZN10S3423C2_nt4v121Ev();
extern void _ZN10S3423C2_nt4v122Ev();
extern void _ZN10S3423C2_nt4v123Ev();
extern void _ZN10S3423C2_nt4v124Ev();
extern void _ZN10S3423C2_nt4v125Ev();
extern void _ZN10S3423C2_nt4v126Ev();
extern void _ZN10S3423C2_nt4v127Ev();
extern void _ZN10S3423C2_nt4v128Ev();
extern void _ZN10S3423C2_nt4v129Ev();
extern void _ZN10S3423C2_nt4v130Ev();
extern void _ZN10S3423C2_nt4v131Ev();
extern void _ZN10S3423C2_nt4v132Ev();
extern void _ZN10S3423C2_nt4v133Ev();
extern void _ZN10S3423C2_nt4v134Ev();
extern void _ZN10S3423C2_nt4v135Ev();
extern void _ZN10S3423C2_nt4v136Ev();
extern void _ZN10S3423C2_nt4v137Ev();
extern void _ZN10S3423C2_nt4v138Ev();
extern void _ZN10S3423C2_nt4v139Ev();
extern void _ZN10S3423C2_nt4v140Ev();
extern void _ZN10S3423C2_nt4v141Ev();
extern void _ZN10S3423C2_nt4v142Ev();
extern void _ZN10S3423C2_nt4v143Ev();
extern void _ZN10S3423C2_nt4v144Ev();
extern void _ZN10S3423C2_nt4v145Ev();
extern void _ZN10S3423C2_nt4v146Ev();
extern void _ZN10S3423C2_nt4v147Ev();
extern void _ZN10S3423C2_nt4v148Ev();
extern void _ZN10S3423C2_nt4v149Ev();
extern void _ZN10S3423C2_nt4v150Ev();
extern void _ZN10S3423C2_nt4v151Ev();
extern void _ZN10S3423C2_nt4v152Ev();
extern void _ZN10S3423C2_nt4v153Ev();
extern void _ZN10S3423C2_nt4v154Ev();
extern void _ZN10S3423C2_nt4v155Ev();
extern void _ZN10S3423C2_nt4v156Ev();
extern void _ZN10S3423C2_nt4v157Ev();
extern void _ZN10S3423C2_nt4v158Ev();
extern void _ZN10S3423C2_nt4v159Ev();
extern void _ZN10S3423C2_nt4v160Ev();
extern void _ZN10S3423C2_nt4v161Ev();
extern void _ZN10S3423C2_nt4v162Ev();
extern void _ZN10S3423C2_nt4v163Ev();
extern void _ZN10S3423C2_nt4v164Ev();
extern void _ZN10S3423C2_nt4v165Ev();
extern void _ZN10S3423C2_nt4v166Ev();
extern void _ZN10S3423C2_nt4v167Ev();
extern void _ZN10S3423C2_nt4v168Ev();
extern void _ZN10S3423C2_nt4v169Ev();
extern void _ZN10S3423C2_nt4v170Ev();
extern void _ZN10S3423C2_nt4v171Ev();
extern void _ZN10S3423C2_nt4v172Ev();
extern void _ZN10S3423C2_nt4v173Ev();
extern void _ZN10S3423C2_nt4v174Ev();
extern void _ZN10S3423C2_nt4v175Ev();
extern void _ZN10S3423C2_nt4v176Ev();
extern void _ZN10S3423C2_nt4v177Ev();
extern void _ZN10S3423C2_nt4v178Ev();
extern void _ZN10S3423C2_nt4v179Ev();
extern void _ZN10S3423C2_nt4v180Ev();
extern void _ZN10S3423C2_nt4v181Ev();
extern void _ZN10S3423C2_nt4v182Ev();
extern void _ZN10S3423C2_nt4v183Ev();
extern void _ZN10S3423C2_nt4v184Ev();
extern void _ZN10S3423C2_nt4v185Ev();
extern void _ZN10S3423C2_nt4v186Ev();
extern void _ZN10S3423C2_nt4v187Ev();
extern void _ZN10S3423C2_nt4v188Ev();
extern void _ZN10S3423C2_nt4v189Ev();
extern void _ZN10S3423C2_nt4v190Ev();
extern void _ZN10S3423C2_nt4v191Ev();
extern void _ZN10S3423C2_nt4v192Ev();
extern void _ZN10S3423C2_nt4v193Ev();
extern void _ZN10S3423C2_nt4v194Ev();
extern void _ZN10S3423C2_nt4v195Ev();
extern void _ZN10S3423C2_nt4v196Ev();
extern void _ZN10S3423C2_nt4v197Ev();
extern void _ZN10S3423C2_nt4v198Ev();
extern void _ZN10S3423C2_nt4v199Ev();
extern void _ZN10S3423C2_nt4v200Ev();
extern void _ZN10S3423C2_nt4v201Ev();
extern void _ZN10S3423C2_nt4v202Ev();
extern void _ZN10S3423C2_nt4v203Ev();
extern void _ZN10S3423C2_nt4v204Ev();
extern void _ZN10S3423C2_nt4v205Ev();
extern void _ZN10S3423C2_nt4v206Ev();
extern void _ZN10S3423C2_nt4v207Ev();
extern void _ZN10S3423C2_nt4v208Ev();
extern void _ZN10S3423C2_nt4v209Ev();
extern void _ZN10S3423C2_nt4v210Ev();
extern void _ZN10S3423C2_nt4v211Ev();
extern void _ZN10S3423C2_nt4v212Ev();
extern void _ZN10S3423C2_nt4v213Ev();
extern void _ZN10S3423C2_nt4v214Ev();
extern void _ZN7S3423C12v1Ev();
extern void _ZN7S3423C12v2Ev();
extern void _ZN7S3423C12v3Ev();
extern void _ZN7S3423C12v4Ev();
extern void _ZN7S3423C12v5Ev();
extern void _ZN7S3423C12v6Ev();
extern void _ZN7S3423C12v7Ev();
static  VTBL_ENTRY vtc_S3423C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3423C1[0]),
  (VTBL_ENTRY)&_ZN7S3423C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3423C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3423C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v213Ev,
  (VTBL_ENTRY)&_ZN10S3423C2_nt4v214Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3423C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S3423C1[];
extern  VTBL_ENTRY _ZTV7S3423C1[];
Class_Descriptor cd_S3423C1 = {  "S3423C1", // class name
  bases_S3423C1, 2,
  &(vtc_S3423C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(576,440), // object size
  NSPAIRA(_ZTI7S3423C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3423C1),218, //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  S4228C6_nt  {
  void  mf4228c6(); // _ZN10S4228C6_nt8mf4228c6Ev
};
//SIG(-1 S4228C6_nt) C1{ m}


void  S4228C6_nt ::mf4228c6(){}

//skip512 S4228C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C5_nt  {
  void *s4228c5f0;
  int s4228c5f1;
  ::S4228C6_nt s4228c5f2;
  ::S4228C6_nt s4228c5f3;
  void  mf4228c5(); // _ZN10S4228C5_nt8mf4228c5Ev
};
//SIG(-1 S4228C5_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S4228C5_nt ::mf4228c5(){}

//skip512 S4228C5_nt

#else // __cplusplus

Class_Descriptor cd_S4228C5_nt = {  "S4228C5_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  S4228C4_nt  : S4228C5_nt {
};
//SIG(-1 S4228C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S4228C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S4228C5_nt;
static Base_Class bases_S4228C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S4228C3_nt  {
  void *s4228c3f0;
  int s4228c3f1;
  ::S4228C4_nt s4228c3f2;
  ::S4228C4_nt s4228c3f3;
  int s4228c3f4;
  virtual  ~S4228C3_nt(); // _ZN10S4228C3_ntD1Ev
  virtual void  v11(); // _ZN10S4228C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4228C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4228C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4228C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4228C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4228C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4228C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4228C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4228C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4228C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4228C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4228C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4228C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4228C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4228C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4228C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4228C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4228C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4228C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4228C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4228C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4228C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4228C3_nt3v33Ev
  S4228C3_nt(); // tgen
};
//SIG(-1 S4228C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp Fi FC2{ BC3{ m Fp Fi FC4{ m} FC4}} FC2 Fi}


 S4228C3_nt ::~S4228C3_nt(){ note_dtor("S4228C3_nt", this);}
void  S4228C3_nt ::v11(){vfunc_called(this, "_ZN10S4228C3_nt3v11Ev");}
void  S4228C3_nt ::v12(){vfunc_called(this, "_ZN10S4228C3_nt3v12Ev");}
void  S4228C3_nt ::v13(){vfunc_called(this, "_ZN10S4228C3_nt3v13Ev");}
void  S4228C3_nt ::v14(){vfunc_called(this, "_ZN10S4228C3_nt3v14Ev");}
void  S4228C3_nt ::v15(){vfunc_called(this, "_ZN10S4228C3_nt3v15Ev");}
void  S4228C3_nt ::v16(){vfunc_called(this, "_ZN10S4228C3_nt3v16Ev");}
void  S4228C3_nt ::v17(){vfunc_called(this, "_ZN10S4228C3_nt3v17Ev");}
void  S4228C3_nt ::v18(){vfunc_called(this, "_ZN10S4228C3_nt3v18Ev");}
void  S4228C3_nt ::v19(){vfunc_called(this, "_ZN10S4228C3_nt3v19Ev");}
void  S4228C3_nt ::v20(){vfunc_called(this, "_ZN10S4228C3_nt3v20Ev");}
void  S4228C3_nt ::v21(){vfunc_called(this, "_ZN10S4228C3_nt3v21Ev");}
void  S4228C3_nt ::v22(){vfunc_called(this, "_ZN10S4228C3_nt3v22Ev");}
void  S4228C3_nt ::v23(){vfunc_called(this, "_ZN10S4228C3_nt3v23Ev");}
void  S4228C3_nt ::v24(){vfunc_called(this, "_ZN10S4228C3_nt3v24Ev");}
void  S4228C3_nt ::v25(){vfunc_called(this, "_ZN10S4228C3_nt3v25Ev");}
void  S4228C3_nt ::v26(){vfunc_called(this, "_ZN10S4228C3_nt3v26Ev");}
void  S4228C3_nt ::v27(){vfunc_called(this, "_ZN10S4228C3_nt3v27Ev");}
void  S4228C3_nt ::v28(){vfunc_called(this, "_ZN10S4228C3_nt3v28Ev");}
void  S4228C3_nt ::v29(){vfunc_called(this, "_ZN10S4228C3_nt3v29Ev");}
void  S4228C3_nt ::v30(){vfunc_called(this, "_ZN10S4228C3_nt3v30Ev");}
void  S4228C3_nt ::v31(){vfunc_called(this, "_ZN10S4228C3_nt3v31Ev");}
void  S4228C3_nt ::v32(){vfunc_called(this, "_ZN10S4228C3_nt3v32Ev");}
void  S4228C3_nt ::v33(){vfunc_called(this, "_ZN10S4228C3_nt3v33Ev");}
S4228C3_nt ::S4228C3_nt(){ note_ctor("S4228C3_nt", this);} // tgen

//skip512 S4228C3_nt

#else // __cplusplus

extern void _ZN10S4228C3_ntC1Ev();
extern void _ZN10S4228C3_ntD1Ev();
Name_Map name_map_S4228C3_nt[] = {
  NSPAIR(_ZN10S4228C3_ntC1Ev),
  NSPAIR(_ZN10S4228C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
extern void _ZN10S4228C3_ntD1Ev();
extern void _ZN10S4228C3_ntD0Ev();
extern void _ZN10S4228C3_nt3v11Ev();
extern void _ZN10S4228C3_nt3v12Ev();
extern void _ZN10S4228C3_nt3v13Ev();
extern void _ZN10S4228C3_nt3v14Ev();
extern void _ZN10S4228C3_nt3v15Ev();
extern void _ZN10S4228C3_nt3v16Ev();
extern void _ZN10S4228C3_nt3v17Ev();
extern void _ZN10S4228C3_nt3v18Ev();
extern void _ZN10S4228C3_nt3v19Ev();
extern void _ZN10S4228C3_nt3v20Ev();
extern void _ZN10S4228C3_nt3v21Ev();
extern void _ZN10S4228C3_nt3v22Ev();
extern void _ZN10S4228C3_nt3v23Ev();
extern void _ZN10S4228C3_nt3v24Ev();
extern void _ZN10S4228C3_nt3v25Ev();
extern void _ZN10S4228C3_nt3v26Ev();
extern void _ZN10S4228C3_nt3v27Ev();
extern void _ZN10S4228C3_nt3v28Ev();
extern void _ZN10S4228C3_nt3v29Ev();
extern void _ZN10S4228C3_nt3v30Ev();
extern void _ZN10S4228C3_nt3v31Ev();
extern void _ZN10S4228C3_nt3v32Ev();
extern void _ZN10S4228C3_nt3v33Ev();
static  VTBL_ENTRY vtc_S4228C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4228C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4228C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
VTBL_ENTRY *P__ZTI10S4228C3_nt = _ZTI10S4228C3_nt; 
extern  VTBL_ENTRY _ZTV10S4228C3_nt[];
Class_Descriptor cd_S4228C3_nt = {  "S4228C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4228C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S4228C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4228C3_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C13_nt  {
  __tsi64 s4228c13f0[2];
  void  mf4228c13(); // _ZN11S4228C13_nt9mf4228c13Ev
};
//SIG(-1 S4228C13_nt) C1{ m FL[2]}


void  S4228C13_nt ::mf4228c13(){}

//skip512 S4228C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C12_nt  {
  ::S4228C13_nt s4228c12f0;
  void  mf4228c12(); // _ZN11S4228C12_nt9mf4228c12Ev
};
//SIG(-1 S4228C12_nt) C1{ m FC2{ m FL[2]}}


void  S4228C12_nt ::mf4228c12(){}

//skip512 S4228C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C16_nt  {
  ::S4228C12_nt s4228c16f0;
  void  mf4228c16(); // _ZN11S4228C16_nt9mf4228c16Ev
};
//SIG(-1 S4228C16_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S4228C16_nt ::mf4228c16(){}

//skip512 S4228C16_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C17_nt  {
  ::S4228C12_nt s4228c17f0;
  ::S4228C12_nt s4228c17f1;
  ::S4228C12_nt s4228c17f2;
  ::S4228C12_nt s4228c17f3;
  void  mf4228c17(); // _ZN11S4228C17_nt9mf4228c17Ev
};
//SIG(-1 S4228C17_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S4228C17_nt ::mf4228c17(){}

//skip512 S4228C17_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C20  {
  void  mf4228c20(); // _ZN8S4228C209mf4228c20Ev
};
//SIG(-1 S4228C20) C1{ m}


void  S4228C20 ::mf4228c20(){}

static void Test_S4228C20()
{
  {
    init_simple_test("S4228C20");
    S4228C20 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C20)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C20)");
  }
}
static Arrange_To_Call_Me vS4228C20(Test_S4228C20, "S4228C20", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C20[];
VTBL_ENTRY *P__ZTI8S4228C20 = _ZTI8S4228C20; 
Class_Descriptor cd_S4228C20 = {  "S4228C20", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C20),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  S4228C19_nt  {
  void *s4228c19f0;
  int s4228c19f1;
  ::S4228C20 s4228c19f2;
  void  mf4228c19(); // _ZN11S4228C19_nt9mf4228c19Ev
};
//SIG(-1 S4228C19_nt) C1{ m Fp Fi FC2{ m}}


void  S4228C19_nt ::mf4228c19(){}

//skip512 S4228C19_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C18_nt  {
  ::S4228C19_nt s4228c18f0;
  int s4228c18f1;
  void  mf4228c18(); // _ZN11S4228C18_nt9mf4228c18Ev
};
//SIG(-1 S4228C18_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S4228C18_nt ::mf4228c18(){}

//skip512 S4228C18_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C23  {
  void  mf4228c23(); // _ZN8S4228C239mf4228c23Ev
};
//SIG(-1 S4228C23) C1{ m}


void  S4228C23 ::mf4228c23(){}

static void Test_S4228C23()
{
  {
    init_simple_test("S4228C23");
    S4228C23 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C23)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C23)");
  }
}
static Arrange_To_Call_Me vS4228C23(Test_S4228C23, "S4228C23", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C23[];
VTBL_ENTRY *P__ZTI8S4228C23 = _ZTI8S4228C23; 
Class_Descriptor cd_S4228C23 = {  "S4228C23", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C23),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  S4228C21  {
  void *s4228c21f0;
  int s4228c21f1;
  ::S4228C20 s4228c21f2;
  ::S4228C23 s4228c21f3;
  void  mf4228c21(); // _ZN8S4228C219mf4228c21Ev
};
//SIG(-1 S4228C21) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4228C21 ::mf4228c21(){}

static void Test_S4228C21()
{
  {
    init_simple_test("S4228C21");
    S4228C21 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4228C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C21)");
    check_field_offset(lv, s4228c21f0, 0, "S4228C21.s4228c21f0");
    check_field_offset(lv, s4228c21f1, ABISELECT(8,4), "S4228C21.s4228c21f1");
    check_field_offset(lv, s4228c21f2, ABISELECT(12,8), "S4228C21.s4228c21f2");
    check_field_offset(lv, s4228c21f3, ABISELECT(13,9), "S4228C21.s4228c21f3");
  }
}
static Arrange_To_Call_Me vS4228C21(Test_S4228C21, "S4228C21", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C27  {
  void  mf4228c27(); // _ZN8S4228C279mf4228c27Ev
};
//SIG(-1 S4228C27) C1{ m}


void  S4228C27 ::mf4228c27(){}

static void Test_S4228C27()
{
  {
    init_simple_test("S4228C27");
    S4228C27 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C27)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C27)");
  }
}
static Arrange_To_Call_Me vS4228C27(Test_S4228C27, "S4228C27", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C27[];
VTBL_ENTRY *P__ZTI8S4228C27 = _ZTI8S4228C27; 
Class_Descriptor cd_S4228C27 = {  "S4228C27", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C27),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  S4228C25  {
  void *s4228c25f0;
  int s4228c25f1;
  ::S4228C23 s4228c25f2;
  ::S4228C27 s4228c25f3;
  void  mf4228c25(); // _ZN8S4228C259mf4228c25Ev
};
//SIG(-1 S4228C25) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4228C25 ::mf4228c25(){}

static void Test_S4228C25()
{
  {
    init_simple_test("S4228C25");
    S4228C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4228C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C25)");
    check_field_offset(lv, s4228c25f0, 0, "S4228C25.s4228c25f0");
    check_field_offset(lv, s4228c25f1, ABISELECT(8,4), "S4228C25.s4228c25f1");
    check_field_offset(lv, s4228c25f2, ABISELECT(12,8), "S4228C25.s4228c25f2");
    check_field_offset(lv, s4228c25f3, ABISELECT(13,9), "S4228C25.s4228c25f3");
  }
}
static Arrange_To_Call_Me vS4228C25(Test_S4228C25, "S4228C25", ABISELECT(16,12));

#else // __cplusplus

Class_Descriptor cd_S4228C25 = {  "S4228C25", // 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  S4228C24  : S4228C25 {
};
//SIG(-1 S4228C24) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



static void Test_S4228C24()
{
  extern Class_Descriptor cd_S4228C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4228C24, buf);
    S4228C24 &lv = *(new (buf) S4228C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4228C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C24)");
    check_base_class_offset(lv, (S4228C25*), 0, "S4228C24");
    test_class_info(&lv, &cd_S4228C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4228C24(Test_S4228C24, "S4228C24", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S4228C25;
static Base_Class bases_S4228C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S4228C24 = {  "S4228C24", // class name
  bases_S4228C24, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(16,12), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C28_nt  {
  void *s4228c28f0;
  int s4228c28f1[2];
  ::S4228C27 s4228c28f2;
  void  mf4228c28(); // _ZN11S4228C28_nt9mf4228c28Ev
};
//SIG(-1 S4228C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S4228C28_nt ::mf4228c28(){}

//skip512 S4228C28_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C37  {
  void  mf4228c37(); // _ZN8S4228C379mf4228c37Ev
};
//SIG(-1 S4228C37) C1{ m}


void  S4228C37 ::mf4228c37(){}

static void Test_S4228C37()
{
  {
    init_simple_test("S4228C37");
    S4228C37 lv;
    check2(sizeof(lv), 1, "sizeof(S4228C37)");
    check2(__alignof__(lv), 1, "__alignof__(S4228C37)");
  }
}
static Arrange_To_Call_Me vS4228C37(Test_S4228C37, "S4228C37", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4228C37[];
VTBL_ENTRY *P__ZTI8S4228C37 = _ZTI8S4228C37; 
Class_Descriptor cd_S4228C37 = {  "S4228C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4228C37),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  S4228C36  {
  void *s4228c36f0;
  int s4228c36f1[2];
  ::S4228C37 s4228c36f2;
  void  mf4228c36(); // _ZN8S4228C369mf4228c36Ev
};
//SIG(-1 S4228C36) C1{ m Fp Fi[2] FC2{ m}}


void  S4228C36 ::mf4228c36(){}

static void Test_S4228C36()
{
  {
    init_simple_test("S4228C36");
    S4228C36 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4228C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C36)");
    check_field_offset(lv, s4228c36f0, 0, "S4228C36.s4228c36f0");
    check_field_offset(lv, s4228c36f1, ABISELECT(8,4), "S4228C36.s4228c36f1");
    check_field_offset(lv, s4228c36f2, ABISELECT(16,12), "S4228C36.s4228c36f2");
  }
}
static Arrange_To_Call_Me vS4228C36(Test_S4228C36, "S4228C36", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C2_nt  : S4228C3_nt {
  ::S4228C12_nt s4228c2f0;
  ::S4228C12_nt s4228c2f1;
  ::S4228C12_nt s4228c2f2;
  ::S4228C12_nt s4228c2f3;
  ::S4228C16_nt s4228c2f4;
  ::S4228C17_nt s4228c2f5;
  ::S4228C17_nt s4228c2f6;
  ::S4228C12_nt s4228c2f7;
  ::S4228C12_nt s4228c2f8;
  ::S4228C12_nt s4228c2f9;
  void *s4228c2f10;
  ::S4228C16_nt s4228c2f11;
  ::S4228C18_nt s4228c2f12;
  int s4228c2f13;
  void *s4228c2f14[7];
  ::S4228C21 s4228c2f15;
  int s4228c2f16:8;
  int s4228c2f17:8;
  int s4228c2f18:16;
  int s4228c2f19:16;
  int s4228c2f20:8;
  int s4228c2f21:8;
  int s4228c2f22:8;
  int s4228c2f23:32;
  int s4228c2f24:8;
  int s4228c2f25:4;
  int s4228c2f26:4;
  int s4228c2f27:4;
  int s4228c2f28:4;
  int s4228c2f29:4;
  int s4228c2f30:4;
  int s4228c2f31:4;
  int s4228c2f32:4;
  int s4228c2f33:4;
  int s4228c2f34:4;
  unsigned char s4228c2f35:1;
  unsigned char s4228c2f36:1;
  unsigned char s4228c2f37:1;
  unsigned char s4228c2f38:1;
  unsigned char s4228c2f39:1;
  unsigned char s4228c2f40:1;
  unsigned char s4228c2f41:1;
  unsigned char s4228c2f42:1;
  unsigned char s4228c2f43:1;
  unsigned char s4228c2f44:1;
  unsigned char s4228c2f45:1;
  unsigned char s4228c2f46:1;
  unsigned char s4228c2f47:1;
  unsigned char s4228c2f48:1;
  unsigned char s4228c2f49:1;
  unsigned char s4228c2f50:1;
  unsigned char s4228c2f51:1;
  unsigned char s4228c2f52:1;
  unsigned char s4228c2f53:1;
  unsigned char s4228c2f54:1;
  unsigned char s4228c2f55:1;
  unsigned char s4228c2f56:1;
  unsigned char s4228c2f57:1;
  unsigned char s4228c2f58:1;
  unsigned char s4228c2f59:1;
  unsigned char s4228c2f60:1;
  unsigned char s4228c2f61:1;
  unsigned char s4228c2f62:1;
  unsigned char s4228c2f63:1;
  unsigned char s4228c2f64:1;
  unsigned char s4228c2f65:1;
  unsigned char s4228c2f66:1;
  unsigned char s4228c2f67:1;
  unsigned char s4228c2f68:1;
  unsigned char s4228c2f69:1;
  unsigned char s4228c2f70:1;
  unsigned char s4228c2f71:1;
  unsigned char s4228c2f72:1;
  unsigned char s4228c2f73:1;
  unsigned char s4228c2f74:1;
  unsigned char s4228c2f75:1;
  int s4228c2f76[7];
  void *s4228c2f77[6];
  int s4228c2f78:8;
  int s4228c2f79:8;
  int s4228c2f80:8;
  int s4228c2f81:8;
  int s4228c2f82:8;
  int s4228c2f83:8;
  ::S4228C24 s4228c2f84;
  void *s4228c2f85[4];
  int s4228c2f86:8;
  int s4228c2f87:8;
  int s4228c2f88:8;
  int s4228c2f89:8;
  int s4228c2f90:8;
  int s4228c2f91:16;
  int s4228c2f92:16;
  int s4228c2f93:16;
  int s4228c2f94:4;
  int s4228c2f95:4;
  int s4228c2f96:4;
  int s4228c2f97:4;
  int s4228c2f98:4;
  int s4228c2f99:4;
  int s4228c2f100:4;
  int s4228c2f101:4;
  int s4228c2f102:4;
  int s4228c2f103:4;
  int s4228c2f104:4;
  int s4228c2f105:4;
  int s4228c2f106:8;
  int s4228c2f107:8;
  int s4228c2f108:8;
  void *s4228c2f109[7];
  ::S4228C28_nt s4228c2f110;
  void *s4228c2f111[2];
  int s4228c2f112:16;
  int s4228c2f113:16;
  ::S4228C24 s4228c2f114;
  ::S4228C28_nt s4228c2f115;
  ::S4228C36 s4228c2f116;
  void *s4228c2f117[2];
  int s4228c2f118:24;
  int s4228c2f119:8;
  void *s4228c2f120;
  virtual  ~S4228C2_nt(); // _ZN10S4228C2_ntD1Ev
  virtual void  v34(); // _ZN10S4228C2_nt3v34Ev
  virtual void  v35(); // _ZN10S4228C2_nt3v35Ev
  virtual void  v36(); // _ZN10S4228C2_nt3v36Ev
  virtual void  v37(); // _ZN10S4228C2_nt3v37Ev
  virtual void  v38(); // _ZN10S4228C2_nt3v38Ev
  virtual void  v39(); // _ZN10S4228C2_nt3v39Ev
  virtual void  v40(); // _ZN10S4228C2_nt3v40Ev
  virtual void  v41(); // _ZN10S4228C2_nt3v41Ev
  virtual void  v42(); // _ZN10S4228C2_nt3v42Ev
  virtual void  v43(); // _ZN10S4228C2_nt3v43Ev
  virtual void  v44(); // _ZN10S4228C2_nt3v44Ev
  virtual void  v45(); // _ZN10S4228C2_nt3v45Ev
  virtual void  v46(); // _ZN10S4228C2_nt3v46Ev
  virtual void  v47(); // _ZN10S4228C2_nt3v47Ev
  virtual void  v48(); // _ZN10S4228C2_nt3v48Ev
  virtual void  v49(); // _ZN10S4228C2_nt3v49Ev
  virtual void  v50(); // _ZN10S4228C2_nt3v50Ev
  virtual void  v51(); // _ZN10S4228C2_nt3v51Ev
  virtual void  v52(); // _ZN10S4228C2_nt3v52Ev
  virtual void  v53(); // _ZN10S4228C2_nt3v53Ev
  virtual void  v54(); // _ZN10S4228C2_nt3v54Ev
  virtual void  v55(); // _ZN10S4228C2_nt3v55Ev
  virtual void  v56(); // _ZN10S4228C2_nt3v56Ev
  virtual void  v57(); // _ZN10S4228C2_nt3v57Ev
  virtual void  v58(); // _ZN10S4228C2_nt3v58Ev
  virtual void  v59(); // _ZN10S4228C2_nt3v59Ev
  virtual void  v60(); // _ZN10S4228C2_nt3v60Ev
  virtual void  v61(); // _ZN10S4228C2_nt3v61Ev
  virtual void  v62(); // _ZN10S4228C2_nt3v62Ev
  virtual void  v63(); // _ZN10S4228C2_nt3v63Ev
  virtual void  v64(); // _ZN10S4228C2_nt3v64Ev
  virtual void  v65(); // _ZN10S4228C2_nt3v65Ev
  virtual void  v66(); // _ZN10S4228C2_nt3v66Ev
  virtual void  v67(); // _ZN10S4228C2_nt3v67Ev
  virtual void  v68(); // _ZN10S4228C2_nt3v68Ev
  virtual void  v69(); // _ZN10S4228C2_nt3v69Ev
  virtual void  v70(); // _ZN10S4228C2_nt3v70Ev
  virtual void  v71(); // _ZN10S4228C2_nt3v71Ev
  virtual void  v72(); // _ZN10S4228C2_nt3v72Ev
  virtual void  v73(); // _ZN10S4228C2_nt3v73Ev
  virtual void  v74(); // _ZN10S4228C2_nt3v74Ev
  virtual void  v75(); // _ZN10S4228C2_nt3v75Ev
  virtual void  v76(); // _ZN10S4228C2_nt3v76Ev
  virtual void  v77(); // _ZN10S4228C2_nt3v77Ev
  virtual void  v78(); // _ZN10S4228C2_nt3v78Ev
  virtual void  v79(); // _ZN10S4228C2_nt3v79Ev
  virtual void  v80(); // _ZN10S4228C2_nt3v80Ev
  virtual void  v81(); // _ZN10S4228C2_nt3v81Ev
  virtual void  v82(); // _ZN10S4228C2_nt3v82Ev
  virtual void  v83(); // _ZN10S4228C2_nt3v83Ev
  virtual void  v84(); // _ZN10S4228C2_nt3v84Ev
  virtual void  v85(); // _ZN10S4228C2_nt3v85Ev
  virtual void  v86(); // _ZN10S4228C2_nt3v86Ev
  virtual void  v87(); // _ZN10S4228C2_nt3v87Ev
  virtual void  v88(); // _ZN10S4228C2_nt3v88Ev
  virtual void  v89(); // _ZN10S4228C2_nt3v89Ev
  virtual void  v90(); // _ZN10S4228C2_nt3v90Ev
  virtual void  v91(); // _ZN10S4228C2_nt3v91Ev
  virtual void  v92(); // _ZN10S4228C2_nt3v92Ev
  virtual void  v93(); // _ZN10S4228C2_nt3v93Ev
  virtual void  v94(); // _ZN10S4228C2_nt3v94Ev
  virtual void  v95(); // _ZN10S4228C2_nt3v95Ev
  virtual void  v96(); // _ZN10S4228C2_nt3v96Ev
  virtual void  v97(); // _ZN10S4228C2_nt3v97Ev
  virtual void  v98(); // _ZN10S4228C2_nt3v98Ev
  virtual void  v99(); // _ZN10S4228C2_nt3v99Ev
  virtual void  v100(); // _ZN10S4228C2_nt4v100Ev
  virtual void  v101(); // _ZN10S4228C2_nt4v101Ev
  virtual void  v102(); // _ZN10S4228C2_nt4v102Ev
  virtual void  v103(); // _ZN10S4228C2_nt4v103Ev
  virtual void  v104(); // _ZN10S4228C2_nt4v104Ev
  virtual void  v105(); // _ZN10S4228C2_nt4v105Ev
  virtual void  v106(); // _ZN10S4228C2_nt4v106Ev
  virtual void  v107(); // _ZN10S4228C2_nt4v107Ev
  virtual void  v108(); // _ZN10S4228C2_nt4v108Ev
  virtual void  v109(); // _ZN10S4228C2_nt4v109Ev
  virtual void  v110(); // _ZN10S4228C2_nt4v110Ev
  virtual void  v111(); // _ZN10S4228C2_nt4v111Ev
  S4228C2_nt(); // tgen
};
//SIG(-1 S4228C2_nt) C1{ BC2{ vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 Fp Fi FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC3 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 FC6{ m FC7{ m FL[2]}} FC6 FC6 FC6 FC8{ m FC6} FC9{ m FC6 FC6 FC6 FC6} FC9 FC6 FC6 FC6 Fp FC8 FC10{ m FC11{ m Fp Fi FC12{ m}} Fi} Fi Fp[7] FC13{ m Fp Fi FC12 FC14{ m}} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC15{ BC16{ m Fp Fi FC14 FC17{ m}}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC18{ m Fp Fi[2] FC17} Fp[2] Fi:16 Fi:16 FC15 FC18 FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:24 Fi:8 Fp}


 S4228C2_nt ::~S4228C2_nt(){ note_dtor("S4228C2_nt", this);}
void  S4228C2_nt ::v34(){vfunc_called(this, "_ZN10S4228C2_nt3v34Ev");}
void  S4228C2_nt ::v35(){vfunc_called(this, "_ZN10S4228C2_nt3v35Ev");}
void  S4228C2_nt ::v36(){vfunc_called(this, "_ZN10S4228C2_nt3v36Ev");}
void  S4228C2_nt ::v37(){vfunc_called(this, "_ZN10S4228C2_nt3v37Ev");}
void  S4228C2_nt ::v38(){vfunc_called(this, "_ZN10S4228C2_nt3v38Ev");}
void  S4228C2_nt ::v39(){vfunc_called(this, "_ZN10S4228C2_nt3v39Ev");}
void  S4228C2_nt ::v40(){vfunc_called(this, "_ZN10S4228C2_nt3v40Ev");}
void  S4228C2_nt ::v41(){vfunc_called(this, "_ZN10S4228C2_nt3v41Ev");}
void  S4228C2_nt ::v42(){vfunc_called(this, "_ZN10S4228C2_nt3v42Ev");}
void  S4228C2_nt ::v43(){vfunc_called(this, "_ZN10S4228C2_nt3v43Ev");}
void  S4228C2_nt ::v44(){vfunc_called(this, "_ZN10S4228C2_nt3v44Ev");}
void  S4228C2_nt ::v45(){vfunc_called(this, "_ZN10S4228C2_nt3v45Ev");}
void  S4228C2_nt ::v46(){vfunc_called(this, "_ZN10S4228C2_nt3v46Ev");}
void  S4228C2_nt ::v47(){vfunc_called(this, "_ZN10S4228C2_nt3v47Ev");}
void  S4228C2_nt ::v48(){vfunc_called(this, "_ZN10S4228C2_nt3v48Ev");}
void  S4228C2_nt ::v49(){vfunc_called(this, "_ZN10S4228C2_nt3v49Ev");}
void  S4228C2_nt ::v50(){vfunc_called(this, "_ZN10S4228C2_nt3v50Ev");}
void  S4228C2_nt ::v51(){vfunc_called(this, "_ZN10S4228C2_nt3v51Ev");}
void  S4228C2_nt ::v52(){vfunc_called(this, "_ZN10S4228C2_nt3v52Ev");}
void  S4228C2_nt ::v53(){vfunc_called(this, "_ZN10S4228C2_nt3v53Ev");}
void  S4228C2_nt ::v54(){vfunc_called(this, "_ZN10S4228C2_nt3v54Ev");}
void  S4228C2_nt ::v55(){vfunc_called(this, "_ZN10S4228C2_nt3v55Ev");}
void  S4228C2_nt ::v56(){vfunc_called(this, "_ZN10S4228C2_nt3v56Ev");}
void  S4228C2_nt ::v57(){vfunc_called(this, "_ZN10S4228C2_nt3v57Ev");}
void  S4228C2_nt ::v58(){vfunc_called(this, "_ZN10S4228C2_nt3v58Ev");}
void  S4228C2_nt ::v59(){vfunc_called(this, "_ZN10S4228C2_nt3v59Ev");}
void  S4228C2_nt ::v60(){vfunc_called(this, "_ZN10S4228C2_nt3v60Ev");}
void  S4228C2_nt ::v61(){vfunc_called(this, "_ZN10S4228C2_nt3v61Ev");}
void  S4228C2_nt ::v62(){vfunc_called(this, "_ZN10S4228C2_nt3v62Ev");}
void  S4228C2_nt ::v63(){vfunc_called(this, "_ZN10S4228C2_nt3v63Ev");}
void  S4228C2_nt ::v64(){vfunc_called(this, "_ZN10S4228C2_nt3v64Ev");}
void  S4228C2_nt ::v65(){vfunc_called(this, "_ZN10S4228C2_nt3v65Ev");}
void  S4228C2_nt ::v66(){vfunc_called(this, "_ZN10S4228C2_nt3v66Ev");}
void  S4228C2_nt ::v67(){vfunc_called(this, "_ZN10S4228C2_nt3v67Ev");}
void  S4228C2_nt ::v68(){vfunc_called(this, "_ZN10S4228C2_nt3v68Ev");}
void  S4228C2_nt ::v69(){vfunc_called(this, "_ZN10S4228C2_nt3v69Ev");}
void  S4228C2_nt ::v70(){vfunc_called(this, "_ZN10S4228C2_nt3v70Ev");}
void  S4228C2_nt ::v71(){vfunc_called(this, "_ZN10S4228C2_nt3v71Ev");}
void  S4228C2_nt ::v72(){vfunc_called(this, "_ZN10S4228C2_nt3v72Ev");}
void  S4228C2_nt ::v73(){vfunc_called(this, "_ZN10S4228C2_nt3v73Ev");}
void  S4228C2_nt ::v74(){vfunc_called(this, "_ZN10S4228C2_nt3v74Ev");}
void  S4228C2_nt ::v75(){vfunc_called(this, "_ZN10S4228C2_nt3v75Ev");}
void  S4228C2_nt ::v76(){vfunc_called(this, "_ZN10S4228C2_nt3v76Ev");}
void  S4228C2_nt ::v77(){vfunc_called(this, "_ZN10S4228C2_nt3v77Ev");}
void  S4228C2_nt ::v78(){vfunc_called(this, "_ZN10S4228C2_nt3v78Ev");}
void  S4228C2_nt ::v79(){vfunc_called(this, "_ZN10S4228C2_nt3v79Ev");}
void  S4228C2_nt ::v80(){vfunc_called(this, "_ZN10S4228C2_nt3v80Ev");}
void  S4228C2_nt ::v81(){vfunc_called(this, "_ZN10S4228C2_nt3v81Ev");}
void  S4228C2_nt ::v82(){vfunc_called(this, "_ZN10S4228C2_nt3v82Ev");}
void  S4228C2_nt ::v83(){vfunc_called(this, "_ZN10S4228C2_nt3v83Ev");}
void  S4228C2_nt ::v84(){vfunc_called(this, "_ZN10S4228C2_nt3v84Ev");}
void  S4228C2_nt ::v85(){vfunc_called(this, "_ZN10S4228C2_nt3v85Ev");}
void  S4228C2_nt ::v86(){vfunc_called(this, "_ZN10S4228C2_nt3v86Ev");}
void  S4228C2_nt ::v87(){vfunc_called(this, "_ZN10S4228C2_nt3v87Ev");}
void  S4228C2_nt ::v88(){vfunc_called(this, "_ZN10S4228C2_nt3v88Ev");}
void  S4228C2_nt ::v89(){vfunc_called(this, "_ZN10S4228C2_nt3v89Ev");}
void  S4228C2_nt ::v90(){vfunc_called(this, "_ZN10S4228C2_nt3v90Ev");}
void  S4228C2_nt ::v91(){vfunc_called(this, "_ZN10S4228C2_nt3v91Ev");}
void  S4228C2_nt ::v92(){vfunc_called(this, "_ZN10S4228C2_nt3v92Ev");}
void  S4228C2_nt ::v93(){vfunc_called(this, "_ZN10S4228C2_nt3v93Ev");}
void  S4228C2_nt ::v94(){vfunc_called(this, "_ZN10S4228C2_nt3v94Ev");}
void  S4228C2_nt ::v95(){vfunc_called(this, "_ZN10S4228C2_nt3v95Ev");}
void  S4228C2_nt ::v96(){vfunc_called(this, "_ZN10S4228C2_nt3v96Ev");}
void  S4228C2_nt ::v97(){vfunc_called(this, "_ZN10S4228C2_nt3v97Ev");}
void  S4228C2_nt ::v98(){vfunc_called(this, "_ZN10S4228C2_nt3v98Ev");}
void  S4228C2_nt ::v99(){vfunc_called(this, "_ZN10S4228C2_nt3v99Ev");}
void  S4228C2_nt ::v100(){vfunc_called(this, "_ZN10S4228C2_nt4v100Ev");}
void  S4228C2_nt ::v101(){vfunc_called(this, "_ZN10S4228C2_nt4v101Ev");}
void  S4228C2_nt ::v102(){vfunc_called(this, "_ZN10S4228C2_nt4v102Ev");}
void  S4228C2_nt ::v103(){vfunc_called(this, "_ZN10S4228C2_nt4v103Ev");}
void  S4228C2_nt ::v104(){vfunc_called(this, "_ZN10S4228C2_nt4v104Ev");}
void  S4228C2_nt ::v105(){vfunc_called(this, "_ZN10S4228C2_nt4v105Ev");}
void  S4228C2_nt ::v106(){vfunc_called(this, "_ZN10S4228C2_nt4v106Ev");}
void  S4228C2_nt ::v107(){vfunc_called(this, "_ZN10S4228C2_nt4v107Ev");}
void  S4228C2_nt ::v108(){vfunc_called(this, "_ZN10S4228C2_nt4v108Ev");}
void  S4228C2_nt ::v109(){vfunc_called(this, "_ZN10S4228C2_nt4v109Ev");}
void  S4228C2_nt ::v110(){vfunc_called(this, "_ZN10S4228C2_nt4v110Ev");}
void  S4228C2_nt ::v111(){vfunc_called(this, "_ZN10S4228C2_nt4v111Ev");}
S4228C2_nt ::S4228C2_nt(){ note_ctor("S4228C2_nt", this);} // tgen

//skip512 S4228C2_nt

#else // __cplusplus

extern void _ZN10S4228C2_ntC1Ev();
extern void _ZN10S4228C2_ntD1Ev();
Name_Map name_map_S4228C2_nt[] = {
  NSPAIR(_ZN10S4228C2_ntC1Ev),
  NSPAIR(_ZN10S4228C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C3_nt;
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
extern  VTBL_ENTRY _ZTV10S4228C3_nt[];
static Base_Class bases_S4228C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4228C2_nt[];
extern void _ZN10S4228C2_ntD1Ev();
extern void _ZN10S4228C2_ntD0Ev();
extern void _ZN10S4228C3_nt3v11Ev();
extern void _ZN10S4228C3_nt3v12Ev();
extern void _ZN10S4228C3_nt3v13Ev();
extern void _ZN10S4228C3_nt3v14Ev();
extern void _ZN10S4228C3_nt3v15Ev();
extern void _ZN10S4228C3_nt3v16Ev();
extern void _ZN10S4228C3_nt3v17Ev();
extern void _ZN10S4228C3_nt3v18Ev();
extern void _ZN10S4228C3_nt3v19Ev();
extern void _ZN10S4228C3_nt3v20Ev();
extern void _ZN10S4228C3_nt3v21Ev();
extern void _ZN10S4228C3_nt3v22Ev();
extern void _ZN10S4228C3_nt3v23Ev();
extern void _ZN10S4228C3_nt3v24Ev();
extern void _ZN10S4228C3_nt3v25Ev();
extern void _ZN10S4228C3_nt3v26Ev();
extern void _ZN10S4228C3_nt3v27Ev();
extern void _ZN10S4228C3_nt3v28Ev();
extern void _ZN10S4228C3_nt3v29Ev();
extern void _ZN10S4228C3_nt3v30Ev();
extern void _ZN10S4228C3_nt3v31Ev();
extern void _ZN10S4228C3_nt3v32Ev();
extern void _ZN10S4228C3_nt3v33Ev();
extern void _ZN10S4228C2_nt3v34Ev();
extern void _ZN10S4228C2_nt3v35Ev();
extern void _ZN10S4228C2_nt3v36Ev();
extern void _ZN10S4228C2_nt3v37Ev();
extern void _ZN10S4228C2_nt3v38Ev();
extern void _ZN10S4228C2_nt3v39Ev();
extern void _ZN10S4228C2_nt3v40Ev();
extern void _ZN10S4228C2_nt3v41Ev();
extern void _ZN10S4228C2_nt3v42Ev();
extern void _ZN10S4228C2_nt3v43Ev();
extern void _ZN10S4228C2_nt3v44Ev();
extern void _ZN10S4228C2_nt3v45Ev();
extern void _ZN10S4228C2_nt3v46Ev();
extern void _ZN10S4228C2_nt3v47Ev();
extern void _ZN10S4228C2_nt3v48Ev();
extern void _ZN10S4228C2_nt3v49Ev();
extern void _ZN10S4228C2_nt3v50Ev();
extern void _ZN10S4228C2_nt3v51Ev();
extern void _ZN10S4228C2_nt3v52Ev();
extern void _ZN10S4228C2_nt3v53Ev();
extern void _ZN10S4228C2_nt3v54Ev();
extern void _ZN10S4228C2_nt3v55Ev();
extern void _ZN10S4228C2_nt3v56Ev();
extern void _ZN10S4228C2_nt3v57Ev();
extern void _ZN10S4228C2_nt3v58Ev();
extern void _ZN10S4228C2_nt3v59Ev();
extern void _ZN10S4228C2_nt3v60Ev();
extern void _ZN10S4228C2_nt3v61Ev();
extern void _ZN10S4228C2_nt3v62Ev();
extern void _ZN10S4228C2_nt3v63Ev();
extern void _ZN10S4228C2_nt3v64Ev();
extern void _ZN10S4228C2_nt3v65Ev();
extern void _ZN10S4228C2_nt3v66Ev();
extern void _ZN10S4228C2_nt3v67Ev();
extern void _ZN10S4228C2_nt3v68Ev();
extern void _ZN10S4228C2_nt3v69Ev();
extern void _ZN10S4228C2_nt3v70Ev();
extern void _ZN10S4228C2_nt3v71Ev();
extern void _ZN10S4228C2_nt3v72Ev();
extern void _ZN10S4228C2_nt3v73Ev();
extern void _ZN10S4228C2_nt3v74Ev();
extern void _ZN10S4228C2_nt3v75Ev();
extern void _ZN10S4228C2_nt3v76Ev();
extern void _ZN10S4228C2_nt3v77Ev();
extern void _ZN10S4228C2_nt3v78Ev();
extern void _ZN10S4228C2_nt3v79Ev();
extern void _ZN10S4228C2_nt3v80Ev();
extern void _ZN10S4228C2_nt3v81Ev();
extern void _ZN10S4228C2_nt3v82Ev();
extern void _ZN10S4228C2_nt3v83Ev();
extern void _ZN10S4228C2_nt3v84Ev();
extern void _ZN10S4228C2_nt3v85Ev();
extern void _ZN10S4228C2_nt3v86Ev();
extern void _ZN10S4228C2_nt3v87Ev();
extern void _ZN10S4228C2_nt3v88Ev();
extern void _ZN10S4228C2_nt3v89Ev();
extern void _ZN10S4228C2_nt3v90Ev();
extern void _ZN10S4228C2_nt3v91Ev();
extern void _ZN10S4228C2_nt3v92Ev();
extern void _ZN10S4228C2_nt3v93Ev();
extern void _ZN10S4228C2_nt3v94Ev();
extern void _ZN10S4228C2_nt3v95Ev();
extern void _ZN10S4228C2_nt3v96Ev();
extern void _ZN10S4228C2_nt3v97Ev();
extern void _ZN10S4228C2_nt3v98Ev();
extern void _ZN10S4228C2_nt3v99Ev();
extern void _ZN10S4228C2_nt4v100Ev();
extern void _ZN10S4228C2_nt4v101Ev();
extern void _ZN10S4228C2_nt4v102Ev();
extern void _ZN10S4228C2_nt4v103Ev();
extern void _ZN10S4228C2_nt4v104Ev();
extern void _ZN10S4228C2_nt4v105Ev();
extern void _ZN10S4228C2_nt4v106Ev();
extern void _ZN10S4228C2_nt4v107Ev();
extern void _ZN10S4228C2_nt4v108Ev();
extern void _ZN10S4228C2_nt4v109Ev();
extern void _ZN10S4228C2_nt4v110Ev();
extern void _ZN10S4228C2_nt4v111Ev();
static  VTBL_ENTRY vtc_S4228C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4228C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4228C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v111Ev,
};
extern VTBL_ENTRY _ZTI10S4228C2_nt[];
VTBL_ENTRY *P__ZTI10S4228C2_nt = _ZTI10S4228C2_nt; 
extern  VTBL_ENTRY _ZTV10S4228C2_nt[];
Class_Descriptor cd_S4228C2_nt = {  "S4228C2_nt", // class name
  bases_S4228C2_nt, 1,
  &(vtc_S4228C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S4228C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4228C2_nt),105, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C40_nt  {
  __tsi64 s4228c40f0[4];
  void  mf4228c40(); // _ZN11S4228C40_nt9mf4228c40Ev
};
//SIG(-1 S4228C40_nt) C1{ m FL[4]}


void  S4228C40_nt ::mf4228c40(){}

//skip512 S4228C40_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C42_nt  {
  char s4228c42f0;
  long s4228c42f1[2];
  short s4228c42f2[12];
  char s4228c42f3[5];
  void  mf4228c42(); // _ZN11S4228C42_nt9mf4228c42Ev
};
//SIG(-1 S4228C42_nt) C1{ m Fc Fl[2] Fs[12] Fc[5]}


void  S4228C42_nt ::mf4228c42(){}

//skip512 S4228C42_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C41_nt  {
  ::S4228C42_nt s4228c41f0;
  ::S3423C4_nt s4228c41f1;
  char s4228c41f2[2];
  void  mf4228c41(); // _ZN11S4228C41_nt9mf4228c41Ev
  virtual  ~S4228C41_nt(); // _ZN11S4228C41_ntD1Ev
  S4228C41_nt(); // tgen
};
//SIG(-1 S4228C41_nt) C1{ vd m FC2{ m Fc Fl[2] Fs[12] Fc[5]} FC3{ m Fi[2]} Fc[2]}


void  S4228C41_nt ::mf4228c41(){}
 S4228C41_nt ::~S4228C41_nt(){ note_dtor("S4228C41_nt", this);}
S4228C41_nt ::S4228C41_nt(){ note_ctor("S4228C41_nt", this);} // tgen

//skip512 S4228C41_nt

#else // __cplusplus

extern void _ZN11S4228C41_ntC1Ev();
extern void _ZN11S4228C41_ntD1Ev();
Name_Map name_map_S4228C41_nt[] = {
  NSPAIR(_ZN11S4228C41_ntC1Ev),
  NSPAIR(_ZN11S4228C41_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S4228C41_nt[];
extern void _ZN11S4228C41_ntD1Ev();
extern void _ZN11S4228C41_ntD0Ev();
static  VTBL_ENTRY vtc_S4228C41_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S4228C41_nt[0]),
  (VTBL_ENTRY)&_ZN11S4228C41_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S4228C41_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S4228C41_nt[];
VTBL_ENTRY *P__ZTI11S4228C41_nt = _ZTI11S4228C41_nt; 
extern  VTBL_ENTRY _ZTV11S4228C41_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C44  {
  void *s4228c44f0;
  int s4228c44f1[2];
  ::S4228C37 s4228c44f2;
  void  mf4228c44(); // _ZN8S4228C449mf4228c44Ev
};
//SIG(-1 S4228C44) C1{ m Fp Fi[2] FC2{ m}}


void  S4228C44 ::mf4228c44(){}

static void Test_S4228C44()
{
  {
    init_simple_test("S4228C44");
    S4228C44 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4228C44)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C44)");
    check_field_offset(lv, s4228c44f0, 0, "S4228C44.s4228c44f0");
    check_field_offset(lv, s4228c44f1, ABISELECT(8,4), "S4228C44.s4228c44f1");
    check_field_offset(lv, s4228c44f2, ABISELECT(16,12), "S4228C44.s4228c44f2");
  }
}
static Arrange_To_Call_Me vS4228C44(Test_S4228C44, "S4228C44", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4228C1  : S4228C2_nt {
  int s4228c1f0[3];
  ::S4228C36 s4228c1f1;
  ::S4228C36 s4228c1f2;
  int s4228c1f3[3];
  ::S4228C40_nt s4228c1f4;
  ::S4228C41_nt s4228c1f5;
  ::S4228C44 s4228c1f6;
  int s4228c1f7[2];
  void *s4228c1f8[2];
  ::S4228C12_nt s4228c1f9;
  void *s4228c1f10;
  int s4228c1f11;
  virtual  ~S4228C1(); // _ZN7S4228C1D1Ev
  virtual void  v1(); // _ZN7S4228C12v1Ev
  virtual void  v2(); // _ZN7S4228C12v2Ev
  virtual void  v3(); // _ZN7S4228C12v3Ev
  virtual void  v4(); // _ZN7S4228C12v4Ev
  virtual void  v5(); // _ZN7S4228C12v5Ev
  virtual void  v6(); // _ZN7S4228C12v6Ev
  virtual void  v7(); // _ZN7S4228C12v7Ev
  virtual void  v8(); // _ZN7S4228C12v8Ev
  virtual void  v9(); // _ZN7S4228C12v9Ev
  virtual void  v10(); // _ZN7S4228C13v10Ev
  S4228C1(); // tgen
};
//SIG(1 S4228C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC6}} FC4 Fi} vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 FC7{ m FC8{ m FL[2]}} FC7 FC7 FC7 FC9{ m FC7} FC10{ m FC7 FC7 FC7 FC7} FC10 FC7 FC7 FC7 Fp FC9 FC11{ m FC12{ m Fp Fi FC13{ m}} Fi} Fi Fp[7] FC14{ m Fp Fi FC13 FC15{ m}} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC16{ BC17{ m Fp Fi FC15 FC18{ m}}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC19{ m Fp Fi[2] FC18} Fp[2] Fi:16 Fi:16 FC16 FC19 FC20{ m Fp Fi[2] FC21{ m}} Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi[3] FC20 FC20 Fi[3] FC22{ m FL[4]} FC23{ vd m FC24{ m Fc Fl[2] Fs[12] Fc[5]} FC25{ m Fi[2]} Fc[2]} FC26{ m Fp Fi[2] FC21} Fi[2] Fp[2] FC7 Fp Fi}


 S4228C1 ::~S4228C1(){ note_dtor("S4228C1", this);}
void  S4228C1 ::v1(){vfunc_called(this, "_ZN7S4228C12v1Ev");}
void  S4228C1 ::v2(){vfunc_called(this, "_ZN7S4228C12v2Ev");}
void  S4228C1 ::v3(){vfunc_called(this, "_ZN7S4228C12v3Ev");}
void  S4228C1 ::v4(){vfunc_called(this, "_ZN7S4228C12v4Ev");}
void  S4228C1 ::v5(){vfunc_called(this, "_ZN7S4228C12v5Ev");}
void  S4228C1 ::v6(){vfunc_called(this, "_ZN7S4228C12v6Ev");}
void  S4228C1 ::v7(){vfunc_called(this, "_ZN7S4228C12v7Ev");}
void  S4228C1 ::v8(){vfunc_called(this, "_ZN7S4228C12v8Ev");}
void  S4228C1 ::v9(){vfunc_called(this, "_ZN7S4228C12v9Ev");}
void  S4228C1 ::v10(){vfunc_called(this, "_ZN7S4228C13v10Ev");}
S4228C1 ::S4228C1(){ note_ctor("S4228C1", this);} // tgen

static void Test_S4228C1()
{
  extern Class_Descriptor cd_S4228C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,210)];
    init_test(&cd_S4228C1, buf);
    S4228C1 *dp, &lv = *(dp=new (buf) S4228C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,836), "sizeof(S4228C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4228C1)");
    check_base_class_offset(lv, (S4228C3_nt*)(S4228C2_nt*), 0, "S4228C1");
    check_base_class_offset(lv, (S4228C2_nt*), 0, "S4228C1");
    check_field_offset(lv, s4228c1f0, ABISELECT(832,632), "S4228C1.s4228c1f0");
    check_field_offset(lv, s4228c1f1, ABISELECT(848,644), "S4228C1.s4228c1f1");
    check_field_offset(lv, s4228c1f2, ABISELECT(872,660), "S4228C1.s4228c1f2");
    check_field_offset(lv, s4228c1f3, ABISELECT(896,676), "S4228C1.s4228c1f3");
    check_field_offset(lv, s4228c1f4, ABISELECT(912,688), "S4228C1.s4228c1f4");
    check_field_offset(lv, s4228c1f5, ABISELECT(944,720), "S4228C1.s4228c1f5");
    check_field_offset(lv, s4228c1f6, ABISELECT(1024,780), "S4228C1.s4228c1f6");
    check_field_offset(lv, s4228c1f7, ABISELECT(1048,796), "S4228C1.s4228c1f7");
    check_field_offset(lv, s4228c1f8, ABISELECT(1056,804), "S4228C1.s4228c1f8");
    check_field_offset(lv, s4228c1f9, ABISELECT(1072,812), "S4228C1.s4228c1f9");
    check_field_offset(lv, s4228c1f10, ABISELECT(1088,828), "S4228C1.s4228c1f10");
    check_field_offset(lv, s4228c1f11, ABISELECT(1096,832), "S4228C1.s4228c1f11");
    test_class_info(&lv, &cd_S4228C1);
    dp->~S4228C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4228C1(Test_S4228C1, "S4228C1", ABISELECT(1104,836));

#else // __cplusplus

extern void _ZN7S4228C1C1Ev();
extern void _ZN7S4228C1D1Ev();
Name_Map name_map_S4228C1[] = {
  NSPAIR(_ZN7S4228C1C1Ev),
  NSPAIR(_ZN7S4228C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C3_nt;
extern VTBL_ENTRY _ZTI10S4228C3_nt[];
extern  VTBL_ENTRY _ZTV10S4228C3_nt[];
extern Class_Descriptor cd_S4228C2_nt;
extern VTBL_ENTRY _ZTI10S4228C2_nt[];
extern  VTBL_ENTRY _ZTV10S4228C2_nt[];
static Base_Class bases_S4228C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4228C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4228C1[];
extern void _ZN7S4228C1D1Ev();
extern void _ZN7S4228C1D0Ev();
extern void _ZN10S4228C3_nt3v11Ev();
extern void _ZN10S4228C3_nt3v12Ev();
extern void _ZN10S4228C3_nt3v13Ev();
extern void _ZN10S4228C3_nt3v14Ev();
extern void _ZN10S4228C3_nt3v15Ev();
extern void _ZN10S4228C3_nt3v16Ev();
extern void _ZN10S4228C3_nt3v17Ev();
extern void _ZN10S4228C3_nt3v18Ev();
extern void _ZN10S4228C3_nt3v19Ev();
extern void _ZN10S4228C3_nt3v20Ev();
extern void _ZN10S4228C3_nt3v21Ev();
extern void _ZN10S4228C3_nt3v22Ev();
extern void _ZN10S4228C3_nt3v23Ev();
extern void _ZN10S4228C3_nt3v24Ev();
extern void _ZN10S4228C3_nt3v25Ev();
extern void _ZN10S4228C3_nt3v26Ev();
extern void _ZN10S4228C3_nt3v27Ev();
extern void _ZN10S4228C3_nt3v28Ev();
extern void _ZN10S4228C3_nt3v29Ev();
extern void _ZN10S4228C3_nt3v30Ev();
extern void _ZN10S4228C3_nt3v31Ev();
extern void _ZN10S4228C3_nt3v32Ev();
extern void _ZN10S4228C3_nt3v33Ev();
extern void _ZN10S4228C2_nt3v34Ev();
extern void _ZN10S4228C2_nt3v35Ev();
extern void _ZN10S4228C2_nt3v36Ev();
extern void _ZN10S4228C2_nt3v37Ev();
extern void _ZN10S4228C2_nt3v38Ev();
extern void _ZN10S4228C2_nt3v39Ev();
extern void _ZN10S4228C2_nt3v40Ev();
extern void _ZN10S4228C2_nt3v41Ev();
extern void _ZN10S4228C2_nt3v42Ev();
extern void _ZN10S4228C2_nt3v43Ev();
extern void _ZN10S4228C2_nt3v44Ev();
extern void _ZN10S4228C2_nt3v45Ev();
extern void _ZN10S4228C2_nt3v46Ev();
extern void _ZN10S4228C2_nt3v47Ev();
extern void _ZN10S4228C2_nt3v48Ev();
extern void _ZN10S4228C2_nt3v49Ev();
extern void _ZN10S4228C2_nt3v50Ev();
extern void _ZN10S4228C2_nt3v51Ev();
extern void _ZN10S4228C2_nt3v52Ev();
extern void _ZN10S4228C2_nt3v53Ev();
extern void _ZN10S4228C2_nt3v54Ev();
extern void _ZN10S4228C2_nt3v55Ev();
extern void _ZN10S4228C2_nt3v56Ev();
extern void _ZN10S4228C2_nt3v57Ev();
extern void _ZN10S4228C2_nt3v58Ev();
extern void _ZN10S4228C2_nt3v59Ev();
extern void _ZN10S4228C2_nt3v60Ev();
extern void _ZN10S4228C2_nt3v61Ev();
extern void _ZN10S4228C2_nt3v62Ev();
extern void _ZN10S4228C2_nt3v63Ev();
extern void _ZN10S4228C2_nt3v64Ev();
extern void _ZN10S4228C2_nt3v65Ev();
extern void _ZN10S4228C2_nt3v66Ev();
extern void _ZN10S4228C2_nt3v67Ev();
extern void _ZN10S4228C2_nt3v68Ev();
extern void _ZN10S4228C2_nt3v69Ev();
extern void _ZN10S4228C2_nt3v70Ev();
extern void _ZN10S4228C2_nt3v71Ev();
extern void _ZN10S4228C2_nt3v72Ev();
extern void _ZN10S4228C2_nt3v73Ev();
extern void _ZN10S4228C2_nt3v74Ev();
extern void _ZN10S4228C2_nt3v75Ev();
extern void _ZN10S4228C2_nt3v76Ev();
extern void _ZN10S4228C2_nt3v77Ev();
extern void _ZN10S4228C2_nt3v78Ev();
extern void _ZN10S4228C2_nt3v79Ev();
extern void _ZN10S4228C2_nt3v80Ev();
extern void _ZN10S4228C2_nt3v81Ev();
extern void _ZN10S4228C2_nt3v82Ev();
extern void _ZN10S4228C2_nt3v83Ev();
extern void _ZN10S4228C2_nt3v84Ev();
extern void _ZN10S4228C2_nt3v85Ev();
extern void _ZN10S4228C2_nt3v86Ev();
extern void _ZN10S4228C2_nt3v87Ev();
extern void _ZN10S4228C2_nt3v88Ev();
extern void _ZN10S4228C2_nt3v89Ev();
extern void _ZN10S4228C2_nt3v90Ev();
extern void _ZN10S4228C2_nt3v91Ev();
extern void _ZN10S4228C2_nt3v92Ev();
extern void _ZN10S4228C2_nt3v93Ev();
extern void _ZN10S4228C2_nt3v94Ev();
extern void _ZN10S4228C2_nt3v95Ev();
extern void _ZN10S4228C2_nt3v96Ev();
extern void _ZN10S4228C2_nt3v97Ev();
extern void _ZN10S4228C2_nt3v98Ev();
extern void _ZN10S4228C2_nt3v99Ev();
extern void _ZN10S4228C2_nt4v100Ev();
extern void _ZN10S4228C2_nt4v101Ev();
extern void _ZN10S4228C2_nt4v102Ev();
extern void _ZN10S4228C2_nt4v103Ev();
extern void _ZN10S4228C2_nt4v104Ev();
extern void _ZN10S4228C2_nt4v105Ev();
extern void _ZN10S4228C2_nt4v106Ev();
extern void _ZN10S4228C2_nt4v107Ev();
extern void _ZN10S4228C2_nt4v108Ev();
extern void _ZN10S4228C2_nt4v109Ev();
extern void _ZN10S4228C2_nt4v110Ev();
extern void _ZN10S4228C2_nt4v111Ev();
extern void _ZN7S4228C12v1Ev();
extern void _ZN7S4228C12v2Ev();
extern void _ZN7S4228C12v3Ev();
extern void _ZN7S4228C12v4Ev();
extern void _ZN7S4228C12v5Ev();
extern void _ZN7S4228C12v6Ev();
extern void _ZN7S4228C12v7Ev();
extern void _ZN7S4228C12v8Ev();
extern void _ZN7S4228C12v9Ev();
extern void _ZN7S4228C13v10Ev();
static  VTBL_ENTRY vtc_S4228C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4228C1[0]),
  (VTBL_ENTRY)&_ZN7S4228C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4228C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4228C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4228C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4228C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4228C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4228C1[];
extern  VTBL_ENTRY _ZTV7S4228C1[];
Class_Descriptor cd_S4228C1 = {  "S4228C1", // class name
  bases_S4228C1, 2,
  &(vtc_S4228C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1104,836), // object size
  NSPAIRA(_ZTI7S4228C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4228C1),115, //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  S19763C5  {
  short s19763c5f0:6;
  long s19763c5f1;
  short s19763c5f2:4;
  __tsi64 s19763c5f3[6];
  long s19763c5f4[7];
  void *s19763c5f5;
  virtual void  v3(); // _ZN8S19763C52v3Ev
  ~S19763C5(); // tgen
  S19763C5(); // tgen
};
//SIG(-1 S19763C5) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S19763C5 ::v3(){vfunc_called(this, "_ZN8S19763C52v3Ev");}
S19763C5 ::~S19763C5(){ note_dtor("S19763C5", this);} // tgen
S19763C5 ::S19763C5(){ note_ctor("S19763C5", this);} // tgen

static void Test_S19763C5()
{
  extern Class_Descriptor cd_S19763C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19763C5, buf);
    S19763C5 *dp, &lv = *(dp=new (buf) S19763C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19763C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C5)");
    set_bf_and_test(lv, s19763c5f0, ABISELECT(8,4), 0, 6, 1, "S19763C5");
    set_bf_and_test(lv, s19763c5f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S19763C5");
    check_field_offset(lv, s19763c5f1, ABISELECT(16,8), "S19763C5.s19763c5f1");
    set_bf_and_test(lv, s19763c5f2, ABISELECT(24,12), 0, 4, 1, "S19763C5");
    set_bf_and_test(lv, s19763c5f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S19763C5");
    check_field_offset(lv, s19763c5f3, ABISELECT(32,16), "S19763C5.s19763c5f3");
    check_field_offset(lv, s19763c5f4, ABISELECT(80,64), "S19763C5.s19763c5f4");
    check_field_offset(lv, s19763c5f5, ABISELECT(136,92), "S19763C5.s19763c5f5");
    test_class_info(&lv, &cd_S19763C5);
    dp->~S19763C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C5(Test_S19763C5, "S19763C5", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S19763C5C1Ev();
extern void _ZN8S19763C5D1Ev();
Name_Map name_map_S19763C5[] = {
  NSPAIR(_ZN8S19763C5C1Ev),
  NSPAIR(_ZN8S19763C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19763C5[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C5[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
Class_Descriptor cd_S19763C5 = {  "S19763C5", // class name
  0,0,//no base classes
  &(vtc_S19763C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S19763C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19763C5),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  S19763C4  {
  int s19763c4f0[2];
  long s19763c4f1[2];
  ::S19763C5 s19763c4f2[3];
  virtual void  v4(); // _ZN8S19763C42v4Ev
  virtual void  v5(); // _ZN8S19763C42v5Ev
  virtual void  v6(); // _ZN8S19763C42v6Ev
  ~S19763C4(); // tgen
  S19763C4(); // tgen
};
//SIG(-1 S19763C4) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S19763C4 ::v4(){vfunc_called(this, "_ZN8S19763C42v4Ev");}
void  S19763C4 ::v5(){vfunc_called(this, "_ZN8S19763C42v5Ev");}
void  S19763C4 ::v6(){vfunc_called(this, "_ZN8S19763C42v6Ev");}
S19763C4 ::~S19763C4(){ note_dtor("S19763C4", this);} // tgen
S19763C4 ::S19763C4(){ note_ctor("S19763C4", this);} // tgen

static void Test_S19763C4()
{
  extern Class_Descriptor cd_S19763C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S19763C4, buf);
    S19763C4 *dp, &lv = *(dp=new (buf) S19763C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S19763C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C4)");
    check_field_offset(lv, s19763c4f0, ABISELECT(8,4), "S19763C4.s19763c4f0");
    check_field_offset(lv, s19763c4f1, ABISELECT(16,12), "S19763C4.s19763c4f1");
    check_field_offset(lv, s19763c4f2, ABISELECT(32,20), "S19763C4.s19763c4f2");
    test_class_info(&lv, &cd_S19763C4);
    dp->~S19763C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C4(Test_S19763C4, "S19763C4", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S19763C4C1Ev();
extern void _ZN8S19763C4D1Ev();
Name_Map name_map_S19763C4[] = {
  NSPAIR(_ZN8S19763C4C1Ev),
  NSPAIR(_ZN8S19763C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19763C4[];
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY vtc_S19763C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C4[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
Class_Descriptor cd_S19763C4 = {  "S19763C4", // class name
  0,0,//no base classes
  &(vtc_S19763C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S19763C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19763C4),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  S19763C8  : virtual S19763C5 {
  void *s19763c8f0;
  ::S19763C5 s19763c8f1;
  __tsi64 s19763c8f2:3;
  ~S19763C8(); // tgen
  S19763C8(); // tgen
};
//SIG(-1 S19763C8) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S19763C8 ::~S19763C8(){ note_dtor("S19763C8", this);} // tgen
S19763C8 ::S19763C8(){ note_ctor("S19763C8", this);} // tgen

static void Test_S19763C8()
{
  extern Class_Descriptor cd_S19763C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S19763C8, buf);
    S19763C8 *dp, &lv = *(dp=new (buf) S19763C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S19763C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C8)");
    check_base_class_offset(lv, (S19763C5*), ABISELECT(168,108), "S19763C8");
    check_field_offset(lv, s19763c8f0, ABISELECT(8,4), "S19763C8.s19763c8f0");
    check_field_offset(lv, s19763c8f1, ABISELECT(16,8), "S19763C8.s19763c8f1");
    set_bf_and_test(lv, s19763c8f2, ABISELECT(160,104), 0, 3, 1, "S19763C8");
    set_bf_and_test(lv, s19763c8f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S19763C8");
    test_class_info(&lv, &cd_S19763C8);
    dp->~S19763C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C8(Test_S19763C8, "S19763C8", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S19763C8C1Ev();
extern void _ZN8S19763C8D1Ev();
Name_Map name_map_S19763C8[] = {
  NSPAIR(_ZN8S19763C8C1Ev),
  NSPAIR(_ZN8S19763C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
static Base_Class bases_S19763C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(168,108), //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 _ZTI8S19763C8[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C8[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S19763C8[];
static  VTT_ENTRY vtt_S19763C8[] = {
  {&(_ZTV8S19763C8[3]),  3,7},
  {&(_ZTV8S19763C8[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
Class_Descriptor cd_S19763C8 = {  "S19763C8", // class name
  bases_S19763C8, 1,
  &(vtc_S19763C8[0]), // expected_vtbl_contents
  &(vtt_S19763C8[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S19763C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19763C8),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C8),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  S19763C9  {
  __tsi64 s19763c9f0;
  long double s19763c9f1;
  void *s19763c9f2;
  char s19763c9f3;
  ::S19763C5 s19763c9f4;
  void *s19763c9f5[2];
  long s19763c9f6[8];
  short s19763c9f7;
  void *s19763c9f8;
  __tsi64 s19763c9f9:64;
  virtual void  v7(); // _ZN8S19763C92v7Ev
  ~S19763C9(); // tgen
  S19763C9(); // tgen
};
//SIG(-1 S19763C9) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S19763C9 ::v7(){vfunc_called(this, "_ZN8S19763C92v7Ev");}
S19763C9 ::~S19763C9(){ note_dtor("S19763C9", this);} // tgen
S19763C9 ::S19763C9(){ note_ctor("S19763C9", this);} // tgen

static void Test_S19763C9()
{
  extern Class_Descriptor cd_S19763C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S19763C9, buf);
    S19763C9 *dp, &lv = *(dp=new (buf) S19763C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S19763C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C9)");
    check_field_offset(lv, s19763c9f0, ABISELECT(8,4), "S19763C9.s19763c9f0");
    check_field_offset(lv, s19763c9f1, ABISELECT(16,12), "S19763C9.s19763c9f1");
    check_field_offset(lv, s19763c9f2, ABISELECT(32,24), "S19763C9.s19763c9f2");
    check_field_offset(lv, s19763c9f3, ABISELECT(40,28), "S19763C9.s19763c9f3");
    check_field_offset(lv, s19763c9f4, ABISELECT(48,32), "S19763C9.s19763c9f4");
    check_field_offset(lv, s19763c9f5, ABISELECT(192,128), "S19763C9.s19763c9f5");
    check_field_offset(lv, s19763c9f6, ABISELECT(208,136), "S19763C9.s19763c9f6");
    check_field_offset(lv, s19763c9f7, ABISELECT(272,168), "S19763C9.s19763c9f7");
    check_field_offset(lv, s19763c9f8, ABISELECT(280,172), "S19763C9.s19763c9f8");
    set_bf_and_test(lv, s19763c9f9, ABISELECT(288,176), 0, 64, 1, "S19763C9");
    set_bf_and_test(lv, s19763c9f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S19763C9");
    test_class_info(&lv, &cd_S19763C9);
    dp->~S19763C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C9(Test_S19763C9, "S19763C9", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S19763C9C1Ev();
extern void _ZN8S19763C9D1Ev();
Name_Map name_map_S19763C9[] = {
  NSPAIR(_ZN8S19763C9C1Ev),
  NSPAIR(_ZN8S19763C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19763C9[];
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY vtc_S19763C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C9[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
Class_Descriptor cd_S19763C9 = {  "S19763C9", // class name
  0,0,//no base classes
  &(vtc_S19763C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S19763C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19763C9),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  S19763C7  : S19763C5 , virtual S19763C4 , virtual S19763C8 , virtual S19763C9 {
  ::S19763C9 s19763c7f0;
  short s19763c7f1;
  int s19763c7f2[2];
  ~S19763C7(); // tgen
  S19763C7(); // tgen
};
//SIG(-1 S19763C7) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S19763C7 ::~S19763C7(){ note_dtor("S19763C7", this);} // tgen
S19763C7 ::S19763C7(){ note_ctor("S19763C7", this);} // tgen

static void Test_S19763C7()
{
  extern Class_Descriptor cd_S19763C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S19763C7, buf);
    S19763C7 *dp, &lv = *(dp=new (buf) S19763C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S19763C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C7)");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), 0, "S19763C7");
    check_base_class_offset(lv, (S19763C4*), ABISELECT(464,292), "S19763C7");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(1096,708), "S19763C7");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(928,600), "S19763C7");
    check_base_class_offset(lv, (S19763C9*), ABISELECT(1248,804), "S19763C7");
    check_field_offset(lv, s19763c7f0, ABISELECT(144,96), "S19763C7.s19763c7f0");
    check_field_offset(lv, s19763c7f1, ABISELECT(448,280), "S19763C7.s19763c7f1");
    check_field_offset(lv, s19763c7f2, ABISELECT(452,284), "S19763C7.s19763c7f2");
    test_class_info(&lv, &cd_S19763C7);
    dp->~S19763C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C7(Test_S19763C7, "S19763C7", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN8S19763C7C1Ev();
extern void _ZN8S19763C7D1Ev();
Name_Map name_map_S19763C7[] = {
  NSPAIR(_ZN8S19763C7C1Ev),
  NSPAIR(_ZN8S19763C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
static Base_Class bases_S19763C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(464,292), //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_S19763C5,    ABISELECT(1096,708), //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_S19763C8,    ABISELECT(928,600), //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_S19763C9,    ABISELECT(1248,804), //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 _ZTI8S19763C7[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY vtc_S19763C7[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern VTBL_ENTRY _ZTV8S19763C7[];
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C7[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C7[] = {
  {&(_ZTV8S19763C7[6]),  6,26},
  {&(_ZTV8S19763C7[12]),  12,26},
  {&(_ZTV8S19763C7[18]),  18,26},
  {&(_ZTV8S19763C7[21]),  21,26},
  {&(_ZTV8S19763C7[25]),  25,26},
  {&(_tg__ZTV8S19763C8__8S19763C7[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
Class_Descriptor cd_S19763C7 = {  "S19763C7", // class name
  bases_S19763C7, 5,
  &(vtc_S19763C7[0]), // expected_vtbl_contents
  &(vtt_S19763C7[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI8S19763C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19763C7),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C7),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  S19763C10  : S19763C9 , S19763C4 , S19763C5 {
  long s19763c10f0;
  __tsi64 s19763c10f1;
  void *s19763c10f2[8];
  ::S19763C7 s19763c10f3;
  void *s19763c10f4;
  int s19763c10f5;
  ::S19763C7 s19763c10f6;
  int s19763c10f7;
  virtual  ~S19763C10(); // _ZN9S19763C10D1Ev
  virtual void  v8(); // _ZN9S19763C102v8Ev
  S19763C10(); // tgen
};
//SIG(-1 S19763C10) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S19763C10 ::~S19763C10(){ note_dtor("S19763C10", this);}
void  S19763C10 ::v8(){vfunc_called(this, "_ZN9S19763C102v8Ev");}
S19763C10 ::S19763C10(){ note_ctor("S19763C10", this);} // tgen

static void Test_S19763C10()
{
  extern Class_Descriptor cd_S19763C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S19763C10, buf);
    S19763C10 *dp, &lv = *(dp=new (buf) S19763C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S19763C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C10)");
    check_base_class_offset(lv, (S19763C9*), 0, "S19763C10");
    check_base_class_offset(lv, (S19763C4*), ABISELECT(296,184), "S19763C10");
    check_base_class_offset(lv, (S19763C5*), ABISELECT(760,492), "S19763C10");
    check_field_offset(lv, s19763c10f0, ABISELECT(904,588), "S19763C10.s19763c10f0");
    check_field_offset(lv, s19763c10f1, ABISELECT(912,592), "S19763C10.s19763c10f1");
    check_field_offset(lv, s19763c10f2, ABISELECT(920,600), "S19763C10.s19763c10f2");
    check_field_offset(lv, s19763c10f3, ABISELECT(992,632), "S19763C10.s19763c10f3");
    check_field_offset(lv, s19763c10f4, ABISELECT(2544,1620), "S19763C10.s19763c10f4");
    check_field_offset(lv, s19763c10f5, ABISELECT(2552,1624), "S19763C10.s19763c10f5");
    check_field_offset(lv, s19763c10f6, ABISELECT(2560,1628), "S19763C10.s19763c10f6");
    check_field_offset(lv, s19763c10f7, ABISELECT(4112,2616), "S19763C10.s19763c10f7");
    test_class_info(&lv, &cd_S19763C10);
    dp->~S19763C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C10(Test_S19763C10, "S19763C10", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN9S19763C10C1Ev();
extern void _ZN9S19763C10D1Ev();
Name_Map name_map_S19763C10[] = {
  NSPAIR(_ZN9S19763C10C1Ev),
  NSPAIR(_ZN9S19763C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
static Base_Class bases_S19763C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //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_S19763C5,    ABISELECT(760,492), //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 _ZTI9S19763C10[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C10D1Ev();
extern void _ZN9S19763C10D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C10[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S19763C10[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S19763C10[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
Class_Descriptor cd_S19763C10 = {  "S19763C10", // class name
  bases_S19763C10, 3,
  &(vtc_S19763C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI9S19763C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C10),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  S19763C13  : S19763C9 {
  ::S19763C8 s19763c13f0;
  int s19763c13f1;
  void *s19763c13f2;
  int s19763c13f3;
  virtual  ~S19763C13(); // _ZN9S19763C13D1Ev
  virtual void  v12(); // _ZN9S19763C133v12Ev
  S19763C13(); // tgen
};
//SIG(-1 S19763C13) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S19763C13 ::~S19763C13(){ note_dtor("S19763C13", this);}
void  S19763C13 ::v12(){vfunc_called(this, "_ZN9S19763C133v12Ev");}
S19763C13 ::S19763C13(){ note_ctor("S19763C13", this);} // tgen

static void Test_S19763C13()
{
  extern Class_Descriptor cd_S19763C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S19763C13, buf);
    S19763C13 *dp, &lv = *(dp=new (buf) S19763C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S19763C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C13)");
    check_base_class_offset(lv, (S19763C9*), 0, "S19763C13");
    check_field_offset(lv, s19763c13f0, ABISELECT(296,184), "S19763C13.s19763c13f0");
    check_field_offset(lv, s19763c13f1, ABISELECT(608,388), "S19763C13.s19763c13f1");
    check_field_offset(lv, s19763c13f2, ABISELECT(616,392), "S19763C13.s19763c13f2");
    check_field_offset(lv, s19763c13f3, ABISELECT(624,396), "S19763C13.s19763c13f3");
    test_class_info(&lv, &cd_S19763C13);
    dp->~S19763C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C13(Test_S19763C13, "S19763C13", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN9S19763C13C1Ev();
extern void _ZN9S19763C13D1Ev();
Name_Map name_map_S19763C13[] = {
  NSPAIR(_ZN9S19763C13C1Ev),
  NSPAIR(_ZN9S19763C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
static Base_Class bases_S19763C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C13[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C13D1Ev();
extern void _ZN9S19763C13D0Ev();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY vtc_S19763C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C13[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
Class_Descriptor cd_S19763C13 = {  "S19763C13", // class name
  bases_S19763C13, 1,
  &(vtc_S19763C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI9S19763C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19763C13),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  S19763C12  : virtual S19763C9 , virtual S19763C10 , virtual S19763C5 , virtual S19763C8 {
  __tsi64 s19763c12f0:44;
  void *s19763c12f1;
  int s19763c12f2;
  ::S19763C7 s19763c12f3;
  long s19763c12f4[2];
  int s19763c12f5[3];
  ::S19763C10 s19763c12f6;
  char s19763c12f7:7;
  ::S19763C13 s19763c12f8;
  ~S19763C12(); // tgen
  S19763C12(); // tgen
};
//SIG(-1 S19763C12) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL: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}}


S19763C12 ::~S19763C12(){ note_dtor("S19763C12", this);} // tgen
S19763C12 ::S19763C12(){ note_ctor("S19763C12", this);} // tgen

static void Test_S19763C12()
{
  extern Class_Descriptor cd_S19763C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S19763C12, buf);
    S19763C12 *dp, &lv = *(dp=new (buf) S19763C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S19763C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C12)");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*), ABISELECT(6400,4052), "S19763C12");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(6704,4236), "S19763C12");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(7000,4420), "S19763C12");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(7464,4728), "S19763C12");
    check_base_class_offset(lv, (S19763C10*), ABISELECT(6704,4236), "S19763C12");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(10824,6856), "S19763C12");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(10824,6856), "S19763C12");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(10968,6952), "S19763C12");
    set_bf_and_test(lv, s19763c12f0, ABISELECT(8,4), 0, 44, 1, "S19763C12");
    set_bf_and_test(lv, s19763c12f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S19763C12");
    check_field_offset(lv, s19763c12f1, ABISELECT(16,12), "S19763C12.s19763c12f1");
    check_field_offset(lv, s19763c12f2, ABISELECT(24,16), "S19763C12.s19763c12f2");
    check_field_offset(lv, s19763c12f3, ABISELECT(32,20), "S19763C12.s19763c12f3");
    check_field_offset(lv, s19763c12f4, ABISELECT(1584,1008), "S19763C12.s19763c12f4");
    check_field_offset(lv, s19763c12f5, ABISELECT(1600,1016), "S19763C12.s19763c12f5");
    check_field_offset(lv, s19763c12f6, ABISELECT(1616,1028), "S19763C12.s19763c12f6");
    set_bf_and_test(lv, s19763c12f7, ABISELECT(5744,3648), 0, 7, 1, "S19763C12");
    set_bf_and_test(lv, s19763c12f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S19763C12");
    check_field_offset(lv, s19763c12f8, ABISELECT(5760,3652), "S19763C12.s19763c12f8");
    test_class_info(&lv, &cd_S19763C12);
    dp->~S19763C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C12(Test_S19763C12, "S19763C12", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S19763C12C1Ev();
extern void _ZN9S19763C12D1Ev();
Name_Map name_map_S19763C12[] = {
  NSPAIR(_ZN9S19763C12C1Ev),
  NSPAIR(_ZN9S19763C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
static Base_Class bases_S19763C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(6400,4052), //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_S19763C9,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19763C4,    ABISELECT(7000,4420), //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_S19763C5,    ABISELECT(7464,4728), //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_S19763C10,    ABISELECT(6704,4236), //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_S19763C5,    ABISELECT(10824,6856), //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_S19763C8,    ABISELECT(10968,6952), //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 _ZTI9S19763C12[];
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C12[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern VTBL_ENTRY _ZTV9S19763C12[];
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C12[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C12[] = {
  {&(_ZTV9S19763C12[6]),  6,40},
  {&(_ZTV9S19763C12[11]),  11,40},
  {&(_ZTV9S19763C12[21]),  21,40},
  {&(_ZTV9S19763C12[27]),  27,40},
  {&(_ZTV9S19763C12[32]),  32,40},
  {&(_ZTV9S19763C12[36]),  36,40},
  {&(_ZTV9S19763C12[40]),  40,40},
  {&(_tg__ZTV8S19763C8__9S19763C12[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C12 = {  "S19763C12", // class name
  bases_S19763C12, 7,
  &(vtc_S19763C12[0]), // expected_vtbl_contents
  &(vtt_S19763C12[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S19763C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19763C12),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C11  : virtual S19763C10 , virtual S19763C5 , virtual S19763C8 , S19763C7 , S19763C12 {
  ::S19763C10 s19763c11f0;
  __tsi64 s19763c11f1;
  char s19763c11f2:7;
  virtual void  v9(); // _ZN9S19763C112v9Ev
  ~S19763C11(); // tgen
  S19763C11(); // tgen
};
//SIG(-1 S19763C11) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL: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  S19763C11 ::v9(){vfunc_called(this, "_ZN9S19763C112v9Ev");}
S19763C11 ::~S19763C11(){ note_dtor("S19763C11", this);} // tgen
S19763C11 ::S19763C11(){ note_ctor("S19763C11", this);} // tgen

static void Test_S19763C11()
{
  extern Class_Descriptor cd_S19763C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S19763C11, buf);
    S19763C11 *dp, &lv = *(dp=new (buf) S19763C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S19763C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C11)");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(11008,6976), "S19763C11");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(11304,7160), "S19763C11");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(11768,7468), "S19763C11");
    check_base_class_offset(lv, (S19763C10*), ABISELECT(11008,6976), "S19763C11");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(11008,6976), "S19763C11");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(15128,9596), "S19763C11");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(15128,9596), "S19763C11");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(15128,9596), "S19763C11");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(15272,9692), "S19763C11");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(15272,9692), "S19763C11");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(15272,9692), "S19763C11");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), 0, "S19763C11");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(15440,9800), "S19763C11");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(15904,10108), "S19763C11");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(15904,10108), "S19763C11");
    check_base_class_offset(lv, (S19763C7*), 0, "S19763C11");
    check_base_class_offset(lv, (S19763C12*), ABISELECT(464,292), "S19763C11");
    check_field_offset(lv, s19763c11f0, ABISELECT(6864,4344), "S19763C11.s19763c11f0");
    check_field_offset(lv, s19763c11f1, ABISELECT(10992,6964), "S19763C11.s19763c11f1");
    set_bf_and_test(lv, s19763c11f2, ABISELECT(11000,6972), 0, 7, 1, "S19763C11");
    set_bf_and_test(lv, s19763c11f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S19763C11");
    test_class_info(&lv, &cd_S19763C11);
    dp->~S19763C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C11(Test_S19763C11, "S19763C11", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN9S19763C11C1Ev();
extern void _ZN9S19763C11D1Ev();
Name_Map name_map_S19763C11[] = {
  NSPAIR(_ZN9S19763C11C1Ev),
  NSPAIR(_ZN9S19763C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
static Base_Class bases_S19763C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19763C4,    ABISELECT(11304,7160), //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_S19763C5,    ABISELECT(11768,7468), //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_S19763C10,    ABISELECT(11008,6976), //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_S19763C5,    ABISELECT(15128,9596), //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_S19763C8,    ABISELECT(15272,9692), //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_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(15440,9800), //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_S19763C9,    ABISELECT(15904,10108), //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_S19763C7,    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_S19763C12,    ABISELECT(464,292), //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 _ZTI9S19763C11[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY vtc_S19763C11[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern VTBL_ENTRY _ZTV9S19763C11[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C11[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__9S19763C11[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__9S19763C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__9S19763C11[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__9S19763C11[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__9S19763C11[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__9S19763C11[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C11[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C11[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__9S19763C11[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__9S19763C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C11[] = {
  {&(_ZTV9S19763C11[7]),  7,59},
  {&(_tg__ZTV8S19763C7__9S19763C11[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__9S19763C11[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__9S19763C11[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__9S19763C11[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__9S19763C11[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__9S19763C11[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__9S19763C11[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C11[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C11[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__9S19763C11[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__9S19763C11[3]),  3,3},
  {&(_ZTV9S19763C11[28]),  28,59},
  {&(_ZTV9S19763C11[34]),  34,59},
  {&(_ZTV9S19763C11[39]),  39,59},
  {&(_ZTV9S19763C11[43]),  43,59},
  {&(_ZTV9S19763C11[47]),  47,59},
  {&(_ZTV9S19763C11[52]),  52,59},
  {&(_ZTV9S19763C11[58]),  58,59},
  {&(_ZTV9S19763C11[17]),  17,59},
  {&(_tg__ZTV8S19763C8__9S19763C11[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C11 = {  "S19763C11", // class name
  bases_S19763C11, 11,
  &(vtc_S19763C11[0]), // expected_vtbl_contents
  &(vtt_S19763C11[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI9S19763C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19763C11),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C11),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C6  : virtual S19763C5 , virtual S19763C7 , S19763C10 , S19763C11 {
  ::S19763C12 s19763c6f0;
  short s19763c6f1;
  __tsi64 s19763c6f2:8;
  virtual void  v10(); // _ZN8S19763C63v10Ev
  virtual void  v11(); // _ZN8S19763C63v11Ev
  ~S19763C6(); // tgen
  S19763C6(); // tgen
};
//SIG(-1 S19763C6) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL: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 FL 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 FL:8}


void  S19763C6 ::v10(){vfunc_called(this, "_ZN8S19763C63v10Ev");}
void  S19763C6 ::v11(){vfunc_called(this, "_ZN8S19763C63v11Ev");}
S19763C6 ::~S19763C6(){ note_dtor("S19763C6", this);} // tgen
S19763C6 ::S19763C6(){ note_ctor("S19763C6", this);} // tgen

static void Test_S19763C6()
{
  extern Class_Descriptor cd_S19763C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S19763C6, buf);
    S19763C6 *dp, &lv = *(dp=new (buf) S19763C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S19763C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C6)");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(26280,16660), "S19763C6");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(26280,16660), "S19763C6");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(26280,16660), "S19763C6");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(26280,16660), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(26432,16756), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(26896,17048), "S19763C6");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(26896,17048), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(27360,17356), "S19763C6");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(27360,17356), "S19763C6");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(27360,17356), "S19763C6");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(27360,17356), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(27536,17464), "S19763C6");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(27536,17464), "S19763C6");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(27536,17464), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*), ABISELECT(26432,16756), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), 0, "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(296,184), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(760,492), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*), 0, "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(27840,17648), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(28136,17832), "S19763C6");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(28600,18140), "S19763C6");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(27840,17648), "S19763C6");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(27840,17648), "S19763C6");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(4128,2620), "S19763C6");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(4128,2620), "S19763C6");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(4592,2912), "S19763C6");
    check_base_class_offset(lv, (S19763C11*), ABISELECT(4128,2620), "S19763C6");
    check_field_offset(lv, s19763c6f0, ABISELECT(15136,9596), "S19763C6.s19763c6f0");
    check_field_offset(lv, s19763c6f1, ABISELECT(26272,16656), "S19763C6.s19763c6f1");
    set_bf_and_test(lv, s19763c6f2, ABISELECT(26274,16658), 0, 8, 1, "S19763C6");
    set_bf_and_test(lv, s19763c6f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S19763C6");
    test_class_info(&lv, &cd_S19763C6);
    dp->~S19763C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C6(Test_S19763C6, "S19763C6", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN8S19763C6C1Ev();
extern void _ZN8S19763C6D1Ev();
Name_Map name_map_S19763C6[] = {
  NSPAIR(_ZN8S19763C6C1Ev),
  NSPAIR(_ZN8S19763C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
static Base_Class bases_S19763C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(26280,16660), //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_S19763C5,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(26896,17048), //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_S19763C8,    ABISELECT(27360,17356), //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_S19763C9,    ABISELECT(27536,17464), //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_S19763C7,    ABISELECT(26432,16756), //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_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(296,184), //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_S19763C5,    ABISELECT(760,492), //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_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C9,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(28136,17832), //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_S19763C5,    ABISELECT(28600,18140), //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_S19763C10,    ABISELECT(27840,17648), //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_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C7,    ABISELECT(4128,2620), //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_S19763C12,    ABISELECT(4592,2912), //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_S19763C11,    ABISELECT(4128,2620), //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 _ZTI8S19763C6[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn27840_N8S19763C6D1Ev,_ZThn17648_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn27840_N8S19763C6D0Ev,_ZThn17648_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C6[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S19763C6[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C6[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A1__8S19763C6[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A1__8S19763C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A1__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__8S19763C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A1__8S19763C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn23248_N9S19763C12D1Ev,_ZThn14736_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn23248_N9S19763C12D0Ev,_ZThn14736_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn23712_N9S19763C11D1Ev,_ZThn15028_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn23712_N9S19763C11D0Ev,_ZThn15028_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__8S19763C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__8S19763C6[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__8S19763C6[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__8S19763C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__8S19763C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__8S19763C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C6[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__8S19763C6[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__8S19763C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__8S19763C6[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__8S19763C6[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C6[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C6[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C6[] = {
  {&(_ZTV8S19763C6[8]),  8,89},
  {&(_tg__ZTV9S19763C11__8S19763C6[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A1__8S19763C6[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A1__8S19763C6[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A1__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A1__8S19763C6[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C6[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__8S19763C6[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__8S19763C6[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__8S19763C6[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__8S19763C6[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__8S19763C6[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__8S19763C6[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__8S19763C6[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__8S19763C6[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__8S19763C6[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__8S19763C6[6]),  6,8},
  {&(_ZTV8S19763C6[44]),  44,89},
  {&(_ZTV8S19763C6[52]),  52,89},
  {&(_ZTV8S19763C6[58]),  58,89},
  {&(_ZTV8S19763C6[64]),  64,89},
  {&(_ZTV8S19763C6[67]),  67,89},
  {&(_ZTV8S19763C6[29]),  29,89},
  {&(_ZTV8S19763C6[77]),  77,89},
  {&(_ZTV8S19763C6[83]),  83,89},
  {&(_ZTV8S19763C6[88]),  88,89},
  {&(_ZTV8S19763C6[39]),  39,89},
  {&(_tg__ZTV8S19763C7__8S19763C6[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__8S19763C6[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__8S19763C6[3]),  3,4},
  {&(_tg__ZTV8S19763C8__8S19763C6[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S19763C11D0Ev,_ZThn15028_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S19763C11D1Ev,_ZThn15028_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S19763C12D0Ev,_ZThn14736_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S19763C12D1Ev,_ZThn14736_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S19763C6D0Ev,_ZThn17648_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S19763C6D1Ev,_ZThn17648_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C6 = {  "S19763C6", // class name
  bases_S19763C6, 18,
  &(vtc_S19763C6[0]), // expected_vtbl_contents
  &(vtt_S19763C6[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI8S19763C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19763C6),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C6),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C14  : virtual S19763C8 {
  ::S19763C12 s19763c14f0;
  __tsi64 s19763c14f1:6;
  int s19763c14f2;
  long s19763c14f3;
  ~S19763C14(); // tgen
  S19763C14(); // tgen
};
//SIG(-1 S19763C14) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} FL:6 Fi Fl}


S19763C14 ::~S19763C14(){ note_dtor("S19763C14", this);} // tgen
S19763C14 ::S19763C14(){ note_ctor("S19763C14", this);} // tgen

static void Test_S19763C14()
{
  extern Class_Descriptor cd_S19763C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,1821)];
    init_test(&cd_S19763C14, buf);
    S19763C14 *dp, &lv = *(dp=new (buf) S19763C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,7280), "sizeof(S19763C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C14)");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(11336,7184), "S19763C14");
    check_base_class_offset(lv, (S19763C8*), ABISELECT(11168,7076), "S19763C14");
    check_field_offset(lv, s19763c14f0, ABISELECT(16,4), "S19763C14.s19763c14f0");
    set_bf_and_test(lv, s19763c14f1, ABISELECT(11152,7064), 0, 6, 1, "S19763C14");
    set_bf_and_test(lv, s19763c14f1, ABISELECT(11152,7064), 0, 6, hide_sll(1LL<<5), "S19763C14");
    check_field_offset(lv, s19763c14f2, ABISELECT(11156,7068), "S19763C14.s19763c14f2");
    check_field_offset(lv, s19763c14f3, ABISELECT(11160,7072), "S19763C14.s19763c14f3");
    test_class_info(&lv, &cd_S19763C14);
    dp->~S19763C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C14(Test_S19763C14, "S19763C14", ABISELECT(11488,7280));

#else // __cplusplus

extern void _ZN9S19763C14C1Ev();
extern void _ZN9S19763C14D1Ev();
Name_Map name_map_S19763C14[] = {
  NSPAIR(_ZN9S19763C14C1Ev),
  NSPAIR(_ZN9S19763C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
static Base_Class bases_S19763C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(11336,7184), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(11168,7076), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C14[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C14[] = {
  ABISELECT(11336,7184),
  ABISELECT(11168,7076),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  ABISELECT(168,108),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  0,
  ABISELECT(-11336,-7184),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S19763C14[];
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C14[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C14[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C14[] = {
  {&(_ZTV9S19763C14[4]),  4,11},
  {&(_ZTV9S19763C14[7]),  7,11},
  {&(_ZTV9S19763C14[10]),  10,11},
  {&(_tg__ZTV8S19763C8__9S19763C14[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C14[];
extern  VTBL_ENTRY _ZTV9S19763C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C14[];
Class_Descriptor cd_S19763C14 = {  "S19763C14", // class name
  bases_S19763C14, 2,
  &(vtc_S19763C14[0]), // expected_vtbl_contents
  &(vtt_S19763C14[0]), // expected_vtt_contents
  ABISELECT(11488,7280), // object size
  NSPAIRA(_ZTI9S19763C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19763C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C14),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C15  : virtual S19763C9 , S19763C4 , virtual S19763C11 {
  char s19763c15f0:8;
  int s19763c15f1;
  ~S19763C15(); // tgen
  S19763C15(); // tgen
};
//SIG(-1 S19763C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL: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}


S19763C15 ::~S19763C15(){ note_dtor("S19763C15", this);} // tgen
S19763C15 ::S19763C15(){ note_ctor("S19763C15", this);} // tgen

static void Test_S19763C15()
{
  extern Class_Descriptor cd_S19763C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S19763C15, buf);
    S19763C15 *dp, &lv = *(dp=new (buf) S19763C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S19763C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C15)");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*), ABISELECT(480,316), "S19763C15");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(480,316), "S19763C15");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(480,316), "S19763C15");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*), 0, "S19763C15");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(11792,7476), "S19763C15");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(12088,7660), "S19763C15");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(12552,7968), "S19763C15");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(11792,7476), "S19763C15");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(11792,7476), "S19763C15");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(15912,10096), "S19763C15");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(15912,10096), "S19763C15");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(15912,10096), "S19763C15");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(16056,10192), "S19763C15");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(16056,10192), "S19763C15");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(16056,10192), "S19763C15");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(784,500), "S19763C15");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(16224,10300), "S19763C15");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(784,500), "S19763C15");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(1248,792), "S19763C15");
    check_base_class_offset(lv, (S19763C11*), ABISELECT(784,500), "S19763C15");
    set_bf_and_test(lv, s19763c15f0, ABISELECT(464,308), 0, 8, 1, "S19763C15");
    set_bf_and_test(lv, s19763c15f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S19763C15");
    check_field_offset(lv, s19763c15f1, ABISELECT(468,312), "S19763C15.s19763c15f1");
    test_class_info(&lv, &cd_S19763C15);
    dp->~S19763C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C15(Test_S19763C15, "S19763C15", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN9S19763C15C1Ev();
extern void _ZN9S19763C15D1Ev();
Name_Map name_map_S19763C15[] = {
  NSPAIR(_ZN9S19763C15C1Ev),
  NSPAIR(_ZN9S19763C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
static Base_Class bases_S19763C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(480,316), //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_S19763C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C9,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19763C4,    ABISELECT(12088,7660), //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_S19763C5,    ABISELECT(12552,7968), //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_S19763C10,    ABISELECT(11792,7476), //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_S19763C5,    ABISELECT(15912,10096), //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_S19763C8,    ABISELECT(16056,10192), //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_S19763C5,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(16224,10300), //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_S19763C7,    ABISELECT(784,500), //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_S19763C12,    ABISELECT(1248,792), //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_S19763C11,    ABISELECT(784,500), //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 _ZTI9S19763C15[];
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn784_N9S19763C15D1Ev,_ZThn500_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn784_N9S19763C15D0Ev,_ZThn500_N9S19763C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn11792_N9S19763C15D1Ev,_ZThn7476_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn11792_N9S19763C15D0Ev,_ZThn7476_N9S19763C15D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY vtc_S19763C15[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19763C15[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__9S19763C15[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C15[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C15[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C15[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C15[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C15[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C15[] = {
  {&(_ZTV9S19763C15[8]),  8,75},
  {&(_ZTV9S19763C15[16]),  16,75},
  {&(_ZTV9S19763C15[27]),  27,75},
  {&(_ZTV9S19763C15[48]),  48,75},
  {&(_ZTV9S19763C15[54]),  54,75},
  {&(_ZTV9S19763C15[59]),  59,75},
  {&(_ZTV9S19763C15[63]),  63,75},
  {&(_ZTV9S19763C15[67]),  67,75},
  {&(_ZTV9S19763C15[72]),  72,75},
  {&(_ZTV9S19763C15[37]),  37,75},
  {&(_tg__ZTV9S19763C11__9S19763C15[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__9S19763C15[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C15[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C15[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C15[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C15[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C15[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C15[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C15[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C15[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C15[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C15[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C15[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C15[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C15[6]),  6,8},
  {&(_tg__ZTV8S19763C8__9S19763C15[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S19763C15D0Ev,_ZThn7476_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S19763C15D1Ev,_ZThn7476_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19763C15D0Ev,_ZThn500_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19763C15D1Ev,_ZThn500_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C15 = {  "S19763C15", // class name
  bases_S19763C15, 13,
  &(vtc_S19763C15[0]), // expected_vtbl_contents
  &(vtt_S19763C15[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI9S19763C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C16  : S19763C5 , virtual S19763C9 , virtual S19763C15 , S19763C7 , S19763C13 {
  int s19763c16f0;
  ::S19763C7 s19763c16f1;
  int s19763c16f2;
  short s19763c16f3;
  __tsi64 s19763c16f4:8;
  int s19763c16f5;
  virtual  ~S19763C16(); // _ZN9S19763C16D2Ev
  virtual void  v13(); // _ZN9S19763C163v13Ev
  S19763C16(); // tgen
};
//SIG(-1 S19763C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL: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}


 S19763C16 ::~S19763C16(){ note_dtor("S19763C16", this);}
void  S19763C16 ::v13(){vfunc_called(this, "_ZN9S19763C163v13Ev");}
S19763C16 ::S19763C16(){ note_ctor("S19763C16", this);} // tgen

static void Test_S19763C16()
{
  extern Class_Descriptor cd_S19763C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S19763C16, buf);
    S19763C16 *dp, &lv = *(dp=new (buf) S19763C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S19763C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C16)");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), 0, "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(2816,1792), "S19763C16");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(2816,1792), "S19763C16");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(3112,1976), "S19763C16");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(14592,9268), "S19763C16");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(14888,9452), "S19763C16");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(15352,9760), "S19763C16");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(14592,9268), "S19763C16");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(14592,9268), "S19763C16");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(18712,11888), "S19763C16");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(18712,11888), "S19763C16");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(18712,11888), "S19763C16");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(18856,11984), "S19763C16");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(18856,11984), "S19763C16");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(18856,11984), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(18856,11984), "S19763C16");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(3584,2292), "S19763C16");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(19024,12092), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(19024,12092), "S19763C16");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(3584,2292), "S19763C16");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(4048,2584), "S19763C16");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(3584,2292), "S19763C16");
    check_base_class_offset(lv, (S19763C15*), ABISELECT(3112,1976), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(144,96), "S19763C16");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*), ABISELECT(144,96), "S19763C16");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(608,388), "S19763C16");
    check_base_class_offset(lv, (S19763C13*), ABISELECT(608,388), "S19763C16");
    check_field_offset(lv, s19763c16f0, ABISELECT(1236,788), "S19763C16.s19763c16f0");
    check_field_offset(lv, s19763c16f1, ABISELECT(1248,792), "S19763C16.s19763c16f1");
    check_field_offset(lv, s19763c16f2, ABISELECT(2800,1780), "S19763C16.s19763c16f2");
    check_field_offset(lv, s19763c16f3, ABISELECT(2804,1784), "S19763C16.s19763c16f3");
    set_bf_and_test(lv, s19763c16f4, ABISELECT(2806,1786), 0, 8, 1, "S19763C16");
    set_bf_and_test(lv, s19763c16f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S19763C16");
    check_field_offset(lv, s19763c16f5, ABISELECT(2808,1788), "S19763C16.s19763c16f5");
    test_class_info(&lv, &cd_S19763C16);
    dp->~S19763C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C16(Test_S19763C16, "S19763C16", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN9S19763C16C1Ev();
extern void _ZN9S19763C16D2Ev();
Name_Map name_map_S19763C16[] = {
  NSPAIR(_ZN9S19763C16C1Ev),
  NSPAIR(_ZN9S19763C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
static Base_Class bases_S19763C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C9,    ABISELECT(2816,1792), //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_S19763C4,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C9,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19763C4,    ABISELECT(14888,9452), //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_S19763C5,    ABISELECT(15352,9760), //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_S19763C10,    ABISELECT(14592,9268), //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_S19763C5,    ABISELECT(18712,11888), //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_S19763C8,    ABISELECT(18856,11984), //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_S19763C5,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(19024,12092), //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_S19763C7,    ABISELECT(3584,2292), //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_S19763C12,    ABISELECT(4048,2584), //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_S19763C11,    ABISELECT(3584,2292), //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_S19763C15,    ABISELECT(3112,1976), //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_S19763C5,    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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(144,96), //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_S19763C9,    ABISELECT(608,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(608,388), //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 _ZTI9S19763C16[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn608_N9S19763C16D1Ev,_ZThn388_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S19763C16D0Ev,_ZThn388_N9S19763C16D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn3112_N9S19763C16D1Ev,_ZThn1976_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn3112_N9S19763C16D0Ev,_ZThn1976_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn3584_N9S19763C16D1Ev,_ZThn2292_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn3584_N9S19763C16D0Ev,_ZThn2292_N9S19763C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn14592_N9S19763C16D1Ev,_ZThn9268_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn14592_N9S19763C16D0Ev,_ZThn9268_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY vtc_S19763C16[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C16D1Ev,_ZThn388_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C16D0Ev,_ZThn388_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19763C16[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__A1__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__A1__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__A1__9S19763C16[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__A1__9S19763C16[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C16[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C16[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C16[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C16[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C16[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__9S19763C16[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C16[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C16[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C16[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C16[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C16[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C16[] = {
  {&(_ZTV9S19763C16[9]),  9,105},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__A1__9S19763C16[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__A1__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__A1__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__A1__9S19763C16[3]),  3,4},
  {&(_ZTV9S19763C16[29]),  29,105},
  {&(_ZTV9S19763C16[42]),  42,105},
  {&(_ZTV9S19763C16[57]),  57,105},
  {&(_ZTV9S19763C16[78]),  78,105},
  {&(_ZTV9S19763C16[84]),  84,105},
  {&(_ZTV9S19763C16[89]),  89,105},
  {&(_ZTV9S19763C16[93]),  93,105},
  {&(_ZTV9S19763C16[97]),  97,105},
  {&(_ZTV9S19763C16[102]),  102,105},
  {&(_ZTV9S19763C16[67]),  67,105},
  {&(_ZTV9S19763C16[19]),  19,105},
  {&(_tg__ZTV9S19763C15__9S19763C16[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C16[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C16[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C16[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C16[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C16[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C16[6]),  6,8},
  {&(_tg__ZTV9S19763C11__9S19763C16[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__9S19763C16[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__9S19763C16[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C16[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C16[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C16[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C16[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C16[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C16[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C16[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C16[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C16[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C16[6]),  6,8},
  {&(_tg__ZTV8S19763C8__9S19763C16[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S19763C16D0Ev,_ZThn9268_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S19763C16D1Ev,_ZThn9268_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S19763C16D0Ev,_ZThn2292_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S19763C16D1Ev,_ZThn2292_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S19763C16D0Ev,_ZThn1976_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S19763C16D1Ev,_ZThn1976_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C16 = {  "S19763C16", // class name
  bases_S19763C16, 19,
  &(vtc_S19763C16[0]), // expected_vtbl_contents
  &(vtt_S19763C16[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI9S19763C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19763C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C3  : virtual S19763C4 , S19763C6 , S19763C14 , virtual S19763C15 , virtual S19763C16 {
  ::S19763C15 s19763c3f0;
  ::S19763C6 s19763c3f1;
  virtual void  v19(); // _ZN8S19763C33v19Ev
  ~S19763C3(); // tgen
  S19763C3(); // tgen
};
//SIG(-1 S19763C3) C1{ VBC2{ v2 v3 v4 Fi[2] Fl[2] FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v6 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v7 Fl FL Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v11 FC6 Fi Fp Fi}} v8 FC8 FL Fc:7} v9 v10 FC10 Fs FL:8} BC12{ VBC6 FC10 FL:6 Fi Fl} VBC13{ VBC7 BC2 VBC9 Fc:8 Fi} VBC14{ BC3 VBC7 VBC13 BC5 BC11 vd v12 Fi FC5 Fi Fs FL:8 Fi} v1 FC13 FC4}


void  S19763C3 ::v19(){vfunc_called(this, "_ZN8S19763C33v19Ev");}
S19763C3 ::~S19763C3(){ note_dtor("S19763C3", this);} // tgen
S19763C3 ::S19763C3(){ note_ctor("S19763C3", this);} // tgen

static void Test_S19763C3()
{
  extern Class_Descriptor cd_S19763C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6631,16827)];
    init_test(&cd_S19763C3, buf);
    S19763C3 *dp, &lv = *(dp=new (buf) S19763C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(106080,67304), "sizeof(S19763C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C3)");
    /*is_ambiguous_... S19763C3::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(86112,54612), "S19763C3");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*), ABISELECT(86112,54612), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C6*), ABISELECT(86576,54920), "S19763C3");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*)(S19763C6*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(86576,54920), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(86720,55016), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*)(S19763C6*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(87184,55308), "S19763C3");
    check_base_class_offset(lv, (S19763C8*)(S19763C14*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*), ABISELECT(87184,55308), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(87360,55416), "S19763C3");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*), ABISELECT(87360,55416), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C6*), ABISELECT(86720,55016), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*)(S19763C6*), 0, "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*)(S19763C6*), ABISELECT(296,184), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*)(S19763C6*), ABISELECT(760,492), "S19763C3");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C6*), 0, "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(87960,55784), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(88424,56092), "S19763C3");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*)(S19763C6*), ABISELECT(87664,55600), "S19763C3");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(87664,55600), "S19763C3");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C3");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C3");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(4592,2912), "S19763C3");
    check_base_class_offset(lv, (S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C3");
    check_base_class_offset(lv, (S19763C6*), 0, "S19763C3");
    check_base_class_offset(lv, (S19763C14*), ABISELECT(26288,16660), "S19763C3");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(91784,58220), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(92256,58536), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(92256,58536), "S19763C3");
    /*is_ambiguous_... S19763C3::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(92720,58828), "S19763C3");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(92256,58536), "S19763C3");
    check_base_class_offset(lv, (S19763C15*), ABISELECT(91784,58220), "S19763C3");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*), ABISELECT(91784,58220), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*), ABISELECT(103264,65512), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*), ABISELECT(103408,65608), "S19763C3");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*), ABISELECT(103408,65608), "S19763C3");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*), ABISELECT(103872,65900), "S19763C3");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*), ABISELECT(103872,65900), "S19763C3");
    check_base_class_offset(lv, (S19763C16*), ABISELECT(103264,65512), "S19763C3");
    check_field_offset(lv, s19763c3f0, ABISELECT(37456,23736), "S19763C3.s19763c3f0");
    check_field_offset(lv, s19763c3f1, ABISELECT(54144,34344), "S19763C3.s19763c3f1");
    test_class_info(&lv, &cd_S19763C3);
    dp->~S19763C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C3(Test_S19763C3, "S19763C3", ABISELECT(106080,67304));

#else // __cplusplus

extern void _ZN8S19763C3C1Ev();
extern void _ZN8S19763C3D1Ev();
Name_Map name_map_S19763C3[] = {
  NSPAIR(_ZN8S19763C3C1Ev),
  NSPAIR(_ZN8S19763C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C6;
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
extern Class_Descriptor cd_S19763C14;
extern VTBL_ENTRY _ZTI9S19763C14[];
extern  VTBL_ENTRY _ZTV9S19763C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C14[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static Base_Class bases_S19763C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C4,    ABISELECT(86112,54612), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(86576,54920), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(86720,55016), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C8,    ABISELECT(87184,55308), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(87360,55416), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(86720,55016), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(87664,55600), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(87960,55784), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(88424,56092), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(87664,55600), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C14,    ABISELECT(26288,16660), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(91784,58220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(92720,58828), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(92256,58536), //bcp->offset
    114, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(91784,58220), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(103264,65512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(103408,65608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(103408,65608), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(103872,65900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(103872,65900), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(103264,65512), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C3[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C3D1Ev();
extern void _ZN8S19763C3D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C33v19Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C3D1Ev,_ZThn2620_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C3D0Ev,_ZThn2620_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C3D1Ev,_ZThn2912_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C3D0Ev,_ZThn2912_N8S19763C3D0Ev)();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C3D1Ev,_ZTv0_n16_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C3D1Ev,_ZThn55600_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C3D0Ev,_ZTv0_n16_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C3D0Ev,_ZThn55600_N8S19763C3D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S19763C3D1Ev,_ZTv0_n48_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn91784_N8S19763C3D1Ev,_ZThn58220_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19763C3D0Ev,_ZTv0_n48_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn91784_N8S19763C3D0Ev,_ZThn58220_N8S19763C3D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S19763C3D1Ev,_ZTv0_n40_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn92256_N8S19763C3D1Ev,_ZThn58536_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19763C3D0Ev,_ZTv0_n40_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn92256_N8S19763C3D0Ev,_ZThn58536_N8S19763C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19763C3D1Ev,_ZTvn292_n40_N8S19763C3D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19763C3D0Ev,_ZTvn292_n40_N8S19763C3D0Ev)();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S19763C3D1Ev,_ZTv0_n44_N8S19763C3D1Ev)();
extern void ABISELECT(_ZThn103264_N8S19763C3D1Ev,_ZThn65512_N8S19763C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19763C3D0Ev,_ZTv0_n44_N8S19763C3D0Ev)();
extern void ABISELECT(_ZThn103264_N8S19763C3D0Ev,_ZThn65512_N8S19763C3D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S19763C3D1Ev,_ZTvn388_n44_N8S19763C3D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S19763C3D0Ev,_ZTvn388_n44_N8S19763C3D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY vtc_S19763C3[] = {
  ABISELECT(103264,65512),
  ABISELECT(92256,58536),
  ABISELECT(91784,58220),
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C3D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19763C33v19Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C3D1Ev,_ZThn2620_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C3D0Ev,_ZThn2620_N8S19763C3D0Ev),
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C3D1Ev,_ZThn2912_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C3D0Ev,_ZThn2912_N8S19763C3D0Ev),
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C3D1Ev,_ZTv0_n16_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C3D0Ev,_ZTv0_n16_N8S19763C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-91784,-58220),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-91784,-58220),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C3D1Ev,_ZTv0_n48_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C3D0Ev,_ZTv0_n48_N8S19763C3D0Ev),
  ABISELECT(-92256,-58536),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-92256,-58536),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C3D1Ev,_ZTv0_n40_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C3D0Ev,_ZTv0_n40_N8S19763C3D0Ev),
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-92720,-58828),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C3D1Ev,_ZTvn292_n40_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C3D0Ev,_ZTvn292_n40_N8S19763C3D0Ev),
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-103264,-65512),
  0,
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-103264,-65512),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19763C3D1Ev,_ZTv0_n44_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19763C3D0Ev,_ZTv0_n44_N8S19763C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-103408,-65608),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-103872,-65900),
  (VTBL_ENTRY)&(_ZTI8S19763C3[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S19763C3D1Ev,_ZTvn388_n44_N8S19763C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S19763C3D0Ev,_ZTvn388_n44_N8S19763C3D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern VTBL_ENTRY _ZTV8S19763C3[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C6__8S19763C3[] = {
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__8S19763C3[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-82768,-52504),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn83072_N9S19763C12D1Ev,_ZThn52688_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn83072_N9S19763C12D0Ev,_ZThn52688_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83072,-52688),
  0,
  ABISELECT(-83072,-52688),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-83368,-52872),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-83832,-53180),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-81984,-52008),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-82592,-52396),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn83536_N9S19763C11D1Ev,_ZThn52980_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn83536_N9S19763C11D0Ev,_ZThn52980_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83536,-52980),
  0,
  ABISELECT(-83536,-52980),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-83832,-53164),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-84296,-53472),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C118S19763C6__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C118S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C118S19763C6__8S19763C3[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C6__8S19763C3[] = {
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C6__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C6__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C6__8S19763C3[] = {
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C6__8S19763C3[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C6D1Ev,_ZThn55600_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn87664_N8S19763C6D0Ev,_ZThn55600_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__8S19763C6__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__8S19763C6__8S19763C3[] = {
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__8S19763C6__8S19763C3[] = {
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C6__8S19763C3[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19763C14__8S19763C3[] = {
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C14__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-60896,-38648),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C14__8S19763C3[] = {
  0,
  ABISELECT(-60288,-38260),
  (VTBL_ENTRY)&(_ZTI9S19763C14[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C3[] = {
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(608,404),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__8S19763C3[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__8S19763C3[] = {
  0,
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C3[] = {
  ABISELECT(-608,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C3[] = {
  0,
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__8S19763C3[] = {
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__8S19763C3[] = {
  0,
  ABISELECT(4424,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__8S19763C3[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4120,2620),
  0,
  ABISELECT(4120,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C3[] = {
  ABISELECT(3824,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C3[] = {
  ABISELECT(3360,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__8S19763C3[] = {
  0,
  ABISELECT(5208,3300),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(4600,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(5672,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__8S19763C3[] = {
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A2__8S19763C3[] = {
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A2__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A2__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A2__8S19763C3[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A2__8S19763C3[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(5360,3412),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5056,3228),
  0,
  ABISELECT(5056,3228),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(4760,3044),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(4296,2736),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(6144,3908),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A1__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(5536,3520),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4592,2936),
  0,
  ABISELECT(4592,2936),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(4296,2752),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(3832,2444),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C3[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__A1__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__8S19763C3[] = {
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__8S19763C3[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C16__A3__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(17296,10996),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C16__A3__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(16224,10300),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__8S19763C3[] = {
  0,
  ABISELECT(16832,10688),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C16__A3__8S19763C3[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C16__8S19763C3[] = {
  0,
  ABISELECT(15904,10096),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16__8S19763C3[] = {
  ABISELECT(11480,7292),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(11480,7292),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16__8S19763C3[] = {
  ABISELECT(11008,6976),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(11008,6976),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C16__8S19763C3[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(15600,9912),
  0,
  ABISELECT(15600,9912),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C16__8S19763C3[] = {
  ABISELECT(15304,9728),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C16__8S19763C3[] = {
  ABISELECT(14840,9420),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C16__8S19763C3[] = {
  0,
  ABISELECT(16688,10592),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16__8S19763C3[] = {
  ABISELECT(-608,-388),
  ABISELECT(16080,10204),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C16__8S19763C3[] = {
  0,
  0,
  0,
  ABISELECT(17152,10900),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16__8S19763C3[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(10544,6684),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16__8S19763C3[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C3[] = {
  {&(_ZTV8S19763C3[11]),  11,167},
  {&(_tg__ZTV8S19763C6__8S19763C3[8]),  8,14},
  {&(_tg__ZTV9S19763C118S19763C6__8S19763C3[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C118S19763C6__A1__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C118S19763C6__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__8S19763C3[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C118S19763C6__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C118S19763C6__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C118S19763C6__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C118S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C118S19763C6__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C5__8S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C7__8S19763C6__8S19763C3[7]),  7,8},
  {&(_tg__ZTV8S19763C4__8S19763C6__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C6__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C9__8S19763C6__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C11__8S19763C6__8S19763C3[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__8S19763C6__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__8S19763C6__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__8S19763C6__8S19763C3[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C6__8S19763C3[6]),  6,8},
  {&(_tg__ZTV9S19763C14__8S19763C3[4]),  4,4},
  {&(_tg__ZTV8S19763C8__9S19763C14__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__9S19763C14__8S19763C3[3]),  3,4},
  {&(_ZTV8S19763C3[54]),  54,167},
  {&(_ZTV8S19763C3[60]),  60,167},
  {&(_ZTV8S19763C3[68]),  68,167},
  {&(_ZTV8S19763C3[72]),  72,167},
  {&(_ZTV8S19763C3[75]),  75,167},
  {&(_ZTV8S19763C3[33]),  33,167},
  {&(_ZTV8S19763C3[85]),  85,167},
  {&(_ZTV8S19763C3[91]),  91,167},
  {&(_ZTV8S19763C3[96]),  96,167},
  {&(_ZTV8S19763C3[43]),  43,167},
  {&(_ZTV8S19763C3[49]),  49,167},
  {&(_ZTV8S19763C3[109]),  109,167},
  {&(_ZTV8S19763C3[124]),  124,167},
  {&(_ZTV8S19763C3[134]),  134,167},
  {&(_ZTV8S19763C3[150]),  150,167},
  {&(_ZTV8S19763C3[160]),  160,167},
  {&(_ZTV8S19763C3[163]),  163,167},
  {&(_tg__ZTV8S19763C7__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C15__8S19763C3[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__8S19763C3[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__8S19763C3[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C3[6]),  6,8},
  {&(_tg__ZTV9S19763C11__A1__8S19763C3[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A2__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A2__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A2__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A2__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A2__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A1__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A1__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A1__8S19763C3[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__A1__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__A1__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__A1__8S19763C3[6]),  6,8},
  {&(_tg__ZTV9S19763C16__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A3__8S19763C3[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C16__A3__8S19763C3[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C16__A3__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C16__A3__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C16__8S19763C3[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C16__8S19763C3[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C16__8S19763C3[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C16__8S19763C3[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C16__8S19763C3[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C16__8S19763C3[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C16__8S19763C3[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C16__8S19763C3[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C16__8S19763C3[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16__8S19763C3[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16__8S19763C3[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19763C3[];
extern  VTBL_ENTRY _ZTV8S19763C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C3[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C6D0Ev,_ZThn55600_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C6D1Ev,_ZThn55600_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S19763C11D0Ev,_ZThn52980_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S19763C11D1Ev,_ZThn52980_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S19763C12D0Ev,_ZThn52688_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S19763C12D1Ev,_ZThn52688_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19763C3D0Ev,_ZTv0_n44_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N8S19763C3D0Ev,_ZThn65512_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19763C3D1Ev,_ZTv0_n44_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N8S19763C3D1Ev,_ZThn65512_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C3D0Ev,_ZTv0_n40_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N8S19763C3D0Ev,_ZThn58536_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C3D1Ev,_ZTv0_n40_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N8S19763C3D1Ev,_ZThn58536_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C3D0Ev,_ZTv0_n48_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N8S19763C3D0Ev,_ZThn58220_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C3D1Ev,_ZTv0_n48_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N8S19763C3D1Ev,_ZThn58220_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C3D0Ev,_ZTv0_n16_N8S19763C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C3D0Ev,_ZThn55600_N8S19763C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C3D1Ev,_ZTv0_n16_N8S19763C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S19763C3D1Ev,_ZThn55600_N8S19763C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C3 = {  "S19763C3", // class name
  bases_S19763C3, 32,
  &(vtc_S19763C3[0]), // expected_vtbl_contents
  &(vtt_S19763C3[0]), // expected_vtt_contents
  ABISELECT(106080,67304), // object size
  NSPAIRA(_ZTI8S19763C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19763C3),167, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C3),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C2  {
  void *s19763c2f0;
  int s19763c2f1[2];
  short s19763c2f2;
  char s19763c2f3;
  int s19763c2f4;
  ::S19763C3 s19763c2f5;
  int s19763c2f6;
  void  mf19763c2(); // _ZN8S19763C29mf19763c2Ev
};
//SIG(-1 S19763C2) C1{ m Fp Fi[2] Fs Fc Fi FC2{ VBC3{ v2 v3 v4 Fi[2] Fl[2] FC4{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC5{ VBC4 VBC6{ BC4 VBC3 VBC7{ VBC4 Fp FC4 FL:3} VBC8{ v6 FL FD Fp Fc FC4 Fp[2] Fl[8] Fs Fp FL:64} FC8 Fs Fi[2]} BC9{ BC8 BC3 BC4 vd v7 Fl FL Fp[8] FC6 Fp Fi FC6 Fi} BC10{ VBC9 VBC4 VBC7 BC6 BC11{ VBC8 VBC9 VBC4 VBC7 FL:44 Fp Fi FC6 Fl[2] Fi[3] FC9 Fc:7 FC12{ BC8 vd v11 FC7 Fi Fp Fi}} v8 FC9 FL Fc:7} v9 v10 FC11 Fs FL:8} BC13{ VBC7 FC11 FL:6 Fi Fl} VBC14{ VBC8 BC3 VBC10 Fc:8 Fi} VBC15{ BC4 VBC8 VBC14 BC6 BC12 vd v12 Fi FC6 Fi Fs FL:8 Fi} v1 FC14 FC5} Fi}


void  S19763C2 ::mf19763c2(){}

static void Test_S19763C2()
{
  {
    init_simple_test("S19763C2");
    static S19763C2 lv;
    check2(sizeof(lv), ABISELECT(106128,67328), "sizeof(S19763C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C2)");
    check_field_offset(lv, s19763c2f0, 0, "S19763C2.s19763c2f0");
    check_field_offset(lv, s19763c2f1, ABISELECT(8,4), "S19763C2.s19763c2f1");
    check_field_offset(lv, s19763c2f2, ABISELECT(16,12), "S19763C2.s19763c2f2");
    check_field_offset(lv, s19763c2f3, ABISELECT(18,14), "S19763C2.s19763c2f3");
    check_field_offset(lv, s19763c2f4, ABISELECT(20,16), "S19763C2.s19763c2f4");
    check_field_offset(lv, s19763c2f5, ABISELECT(32,20), "S19763C2.s19763c2f5");
    check_field_offset(lv, s19763c2f6, ABISELECT(106112,67324), "S19763C2.s19763c2f6");
  }
}
static Arrange_To_Call_Me vS19763C2(Test_S19763C2, "S19763C2", ABISELECT(106128,67328));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19763C2[];
VTBL_ENTRY *P__ZTI8S19763C2 = _ZTI8S19763C2; 
Class_Descriptor cd_S19763C2 = {  "S19763C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(106128,67328), // object size
  NSPAIRA(_ZTI8S19763C2),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  S19763C18_nt  {
};
//SIG(-1 S19763C18_nt) C1{}



//skip512 S19763C18_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19763C18_nt[];
VTBL_ENTRY *P__ZTI12S19763C18_nt = _ZTI12S19763C18_nt; 
Class_Descriptor cd_S19763C18_nt = {  "S19763C18_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S19763C18_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  S19763C19  : S19763C7 , virtual S19763C15 , S19763C16 {
  ::S19763C15 s19763c19f0;
  int s19763c19f1[2];
  char s19763c19f2;
  int s19763c19f3;
  __tsi64 s19763c19f4;
  int s19763c19f5[2];
  void *s19763c19f6[2];
  int s19763c19f7[2];
  virtual void  v14(); // _ZN9S19763C193v14Ev
  virtual void  v15(); // _ZN9S19763C193v15Ev
  ~S19763C19(); // tgen
  S19763C19(); // tgen
};
//SIG(-1 S19763C19) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} VBC7{ VBC6 BC4 VBC8{ VBC9{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 BC2 BC10{ VBC6 VBC9 VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC9 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC9 FL Fc:7} Fc:8 Fi} BC12{ BC3 VBC6 VBC7 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v1 v2 FC7 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]}


void  S19763C19 ::v14(){vfunc_called(this, "_ZN9S19763C193v14Ev");}
void  S19763C19 ::v15(){vfunc_called(this, "_ZN9S19763C193v15Ev");}
S19763C19 ::~S19763C19(){ note_dtor("S19763C19", this);} // tgen
S19763C19 ::S19763C19(){ note_ctor("S19763C19", this);} // tgen

static void Test_S19763C19()
{
  extern Class_Descriptor cd_S19763C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2295,5838)];
    init_test(&cd_S19763C19, buf);
    S19763C19 *dp, &lv = *(dp=new (buf) S19763C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36704,23348), "sizeof(S19763C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C19)");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), 0, "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(20024,12740), "S19763C19");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(20024,12740), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*), ABISELECT(20024,12740), "S19763C19");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(20656,13156), "S19763C19");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(20656,13156), "S19763C19");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(20656,13156), "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(20488,13048), "S19763C19");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(20488,13048), "S19763C19");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(20488,13048), "S19763C19");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(20488,13048), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*), ABISELECT(20488,13048), "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(20800,13252), "S19763C19");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*), ABISELECT(20800,13252), "S19763C19");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*), 0, "S19763C19");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(21096,13436), "S19763C19");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(32576,20728), "S19763C19");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(32872,20912), "S19763C19");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(33336,21220), "S19763C19");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(32576,20728), "S19763C19");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(32576,20728), "S19763C19");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(21568,13752), "S19763C19");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(21568,13752), "S19763C19");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(22032,14044), "S19763C19");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(21568,13752), "S19763C19");
    check_base_class_offset(lv, (S19763C15*), ABISELECT(21096,13436), "S19763C19");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*), ABISELECT(21096,13436), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*), ABISELECT(464,292), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*), ABISELECT(608,388), "S19763C19");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*), ABISELECT(608,388), "S19763C19");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*), ABISELECT(1072,680), "S19763C19");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*), ABISELECT(1072,680), "S19763C19");
    check_base_class_offset(lv, (S19763C16*), ABISELECT(464,292), "S19763C19");
    check_field_offset(lv, s19763c19f0, ABISELECT(3280,2084), "S19763C19.s19763c19f0");
    check_field_offset(lv, s19763c19f1, ABISELECT(19968,12692), "S19763C19.s19763c19f1");
    check_field_offset(lv, s19763c19f2, ABISELECT(19976,12700), "S19763C19.s19763c19f2");
    check_field_offset(lv, s19763c19f3, ABISELECT(19980,12704), "S19763C19.s19763c19f3");
    check_field_offset(lv, s19763c19f4, ABISELECT(19984,12708), "S19763C19.s19763c19f4");
    check_field_offset(lv, s19763c19f5, ABISELECT(19992,12716), "S19763C19.s19763c19f5");
    check_field_offset(lv, s19763c19f6, ABISELECT(20000,12724), "S19763C19.s19763c19f6");
    check_field_offset(lv, s19763c19f7, ABISELECT(20016,12732), "S19763C19.s19763c19f7");
    test_class_info(&lv, &cd_S19763C19);
    dp->~S19763C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C19(Test_S19763C19, "S19763C19", ABISELECT(36704,23348));

#else // __cplusplus

extern void _ZN9S19763C19C1Ev();
extern void _ZN9S19763C19D1Ev();
Name_Map name_map_S19763C19[] = {
  NSPAIR(_ZN9S19763C19C1Ev),
  NSPAIR(_ZN9S19763C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static Base_Class bases_S19763C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(20024,12740), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(20656,13156), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(20488,13048), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(20800,13252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C4,    ABISELECT(21096,13436), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C9,    ABISELECT(32576,20728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(32872,20912), //bcp->offset
    111, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(33336,21220), //bcp->offset
    116, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(32576,20728), //bcp->offset
    98, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(22032,14044), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(21568,13752), //bcp->offset
    76, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(21096,13436), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(464,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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(608,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(608,388), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(1072,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(1072,680), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(464,292), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C19[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn1072_N9S19763C19D1Ev,_ZThn680_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn1072_N9S19763C19D0Ev,_ZThn680_N9S19763C19D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn21096_N9S19763C19D1Ev,_ZThn13436_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn21096_N9S19763C19D0Ev,_ZThn13436_N9S19763C19D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn21568_N9S19763C19D1Ev,_ZThn13752_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn21568_N9S19763C19D0Ev,_ZThn13752_N9S19763C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn32576_N9S19763C19D1Ev,_ZThn20728_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn32576_N9S19763C19D0Ev,_ZThn20728_N9S19763C19D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C19[] = {
  ABISELECT(32576,20728),
  ABISELECT(21568,13752),
  ABISELECT(21096,13436),
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-1072,-680),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N9S19763C19D1Ev,_ZThn680_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N9S19763C19D0Ev,_ZThn680_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(-21096,-13436),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-21096,-13436),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
  ABISELECT(-21568,-13752),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-22032,-14044),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32576,-20728),
  0,
  ABISELECT(-32576,-20728),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-32872,-20912),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-33336,-21220),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S19763C19[];
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C19[] = {
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__9S19763C19[] = {
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__9S19763C19[] = {
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19[] = {
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C16__A2__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-12352),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C16__A2__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(-19880,-12660),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A2__9S19763C19[] = {
  0,
  ABISELECT(-20048,-12768),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C16__A2__9S19763C19[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C16__9S19763C19[] = {
  0,
  ABISELECT(-20336,-12960),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20632_N9S19763C16D1Ev,_ZThn13144_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20632_N9S19763C16D0Ev,_ZThn13144_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16__9S19763C19[] = {
  ABISELECT(-20632,-13144),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-20632,-13144),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn21104_N9S19763C16D1Ev,_ZThn13460_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn21104_N9S19763C16D0Ev,_ZThn13460_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16__9S19763C19[] = {
  ABISELECT(-21104,-13460),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21104,-13460),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn32112_N9S19763C16D1Ev,_ZThn20436_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn32112_N9S19763C16D0Ev,_ZThn20436_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C16__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32112,-20436),
  0,
  ABISELECT(-32112,-20436),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C16__9S19763C19[] = {
  ABISELECT(-32408,-20620),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C16__9S19763C19[] = {
  ABISELECT(-32872,-20928),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C16__9S19763C19[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(-20024,-12756),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C16__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16__9S19763C19[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C19[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19[] = {
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C19[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C19[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C19[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C19[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C19[] = {
  0,
  ABISELECT(440,280),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(1072,696),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A1__9S19763C19[] = {
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C19[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C19[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C19[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C19[] = {
  0,
  ABISELECT(1376,888),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(1544,996),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C19[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C19[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C19[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C19[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C19[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C19[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C19[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C19[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C19[] = {
  {&(_ZTV9S19763C19[9]),  9,119},
  {&(_tg__ZTV8S19763C7__9S19763C19[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C16__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C16__A2__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C16__A2__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A2__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C16__A2__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C16__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C16__9S19763C19[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C16__9S19763C19[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C16__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C16__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C16__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C16__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C16__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C16__9S19763C19[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16__9S19763C19[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16__9S19763C19[6]),  6,7},
  {&(_ZTV9S19763C19[45]),  45,119},
  {&(_ZTV9S19763C19[51]),  51,119},
  {&(_ZTV9S19763C19[54]),  54,119},
  {&(_ZTV9S19763C19[58]),  58,119},
  {&(_ZTV9S19763C19[71]),  71,119},
  {&(_ZTV9S19763C19[86]),  86,119},
  {&(_ZTV9S19763C19[107]),  107,119},
  {&(_ZTV9S19763C19[113]),  113,119},
  {&(_ZTV9S19763C19[118]),  118,119},
  {&(_ZTV9S19763C19[96]),  96,119},
  {&(_ZTV9S19763C19[23]),  23,119},
  {&(_ZTV9S19763C19[33]),  33,119},
  {&(_tg__ZTV8S19763C8__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C19[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C19[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C19[6]),  6,8},
  {&(_tg__ZTV9S19763C11__9S19763C19[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A1__9S19763C19[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__9S19763C19[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C19[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C19[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C19[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C19[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C19[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C19[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C19[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D0Ev,_ZThn6976_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S19763C11D1Ev,_ZThn6976_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D0Ev,_ZThn6684_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19763C12D1Ev,_ZThn6684_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D0Ev,_ZThn7292_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S19763C15D1Ev,_ZThn7292_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N9S19763C16D0Ev,_ZThn20436_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N9S19763C16D1Ev,_ZThn20436_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N9S19763C16D0Ev,_ZThn13460_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N9S19763C16D1Ev,_ZThn13460_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N9S19763C16D0Ev,_ZThn13144_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N9S19763C16D1Ev,_ZThn13144_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N9S19763C19D0Ev,_ZThn20728_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N9S19763C19D1Ev,_ZThn20728_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N9S19763C19D0Ev,_ZThn13752_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N9S19763C19D1Ev,_ZThn13752_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N9S19763C19D0Ev,_ZThn13436_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N9S19763C19D1Ev,_ZThn13436_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C19 = {  "S19763C19", // class name
  bases_S19763C19, 22,
  &(vtc_S19763C19[0]), // expected_vtbl_contents
  &(vtt_S19763C19[0]), // expected_vtt_contents
  ABISELECT(36704,23348), // object size
  NSPAIRA(_ZTI9S19763C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C19),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C19),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C17  {
  ::S19763C18_nt s19763c17f0;
  ::S19763C19 s19763c17f1;
  int s19763c17f2;
  char s19763c17f3:5;
  virtual void  v2(); // _ZN9S19763C172v2Ev
  ~S19763C17(); // tgen
  S19763C17(); // tgen
};
//SIG(-1 S19763C17) C1{ v1 FC2{} FC3{ BC4{ BC5{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC6{ v5 v6 v7 Fi[2] Fl[2] FC5[3]} VBC7{ VBC5 Fp FC5 FL:3} VBC8{ v8 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC8 Fs Fi[2]} VBC9{ VBC8 BC6 VBC10{ VBC11{ BC8 BC6 BC5 vd v9 Fl FL Fp[8] FC4 Fp Fi FC4 Fi} VBC5 VBC7 BC4 BC12{ VBC8 VBC11 VBC5 VBC7 FL:44 Fp Fi FC4 Fl[2] Fi[3] FC11 Fc:7 FC13{ BC8 vd v11 FC7 Fi Fp Fi}} v10 FC11 FL Fc:7} Fc:8 Fi} BC14{ BC5 VBC8 VBC9 BC4 BC13 vd v12 Fi FC4 Fi Fs FL:8 Fi} v2 v3 FC9 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5}


void  S19763C17 ::v2(){vfunc_called(this, "_ZN9S19763C172v2Ev");}
S19763C17 ::~S19763C17(){ note_dtor("S19763C17", this);} // tgen
S19763C17 ::S19763C17(){ note_ctor("S19763C17", this);} // tgen

static void Test_S19763C17()
{
  extern Class_Descriptor cd_S19763C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2297,5842)];
    init_test(&cd_S19763C17, buf);
    S19763C17 *dp, &lv = *(dp=new (buf) S19763C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36736,23364), "sizeof(S19763C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C17)");
    check_field_offset(lv, s19763c17f0, ABISELECT(8,4), "S19763C17.s19763c17f0");
    check_field_offset(lv, s19763c17f1, ABISELECT(16,8), "S19763C17.s19763c17f1");
    check_field_offset(lv, s19763c17f2, ABISELECT(36720,23356), "S19763C17.s19763c17f2");
    set_bf_and_test(lv, s19763c17f3, ABISELECT(36724,23360), 0, 5, 1, "S19763C17");
    set_bf_and_test(lv, s19763c17f3, ABISELECT(36724,23360), 0, 5, hide_sll(1LL<<4), "S19763C17");
    test_class_info(&lv, &cd_S19763C17);
    dp->~S19763C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C17(Test_S19763C17, "S19763C17", ABISELECT(36736,23364));

#else // __cplusplus

extern void _ZN9S19763C17C1Ev();
extern void _ZN9S19763C17D1Ev();
Name_Map name_map_S19763C17[] = {
  NSPAIR(_ZN9S19763C17C1Ev),
  NSPAIR(_ZN9S19763C17D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19763C17[];
extern void _ZN9S19763C172v2Ev();
static  VTBL_ENTRY vtc_S19763C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C17[0]),
  (VTBL_ENTRY)&_ZN9S19763C172v2Ev,
};
extern VTBL_ENTRY _ZTI9S19763C17[];
extern  VTBL_ENTRY _ZTV9S19763C17[];
Class_Descriptor cd_S19763C17 = {  "S19763C17", // class name
  0,0,//no base classes
  &(vtc_S19763C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(36736,23364), // object size
  NSPAIRA(_ZTI9S19763C17),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19763C17),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S19763C23  {
  int s19763c23f0:8;
  int s19763c23f1;
  void *s19763c23f2;
  __tsi64 s19763c23f3;
  void *s19763c23f4;
  void *s19763c23f5;
  int s19763c23f6;
  void  mf19763c23(); // _ZN9S19763C2310mf19763c23Ev
};
//SIG(1 S19763C23) U1{ m Fi:8 Fi Fp FL Fp Fp Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19763C22  : virtual S19763C13 , virtual S19763C5 , virtual S19763C12 {
  int s19763c22f0;
  long double s19763c22f1;
  int s19763c22f2;
  void *s19763c22f3;
  long s19763c22f4;
  ::S19763C23 s19763c22f5;
  int s19763c22f6;
  long s19763c22f7;
  virtual  ~S19763C22(); // _ZN9S19763C22D2Ev
  S19763C22(); // tgen
};
//SIG(-1 S19763C22) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC9{ BC4 VBC8 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU10{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl}


 S19763C22 ::~S19763C22(){ note_dtor("S19763C22", this);}
S19763C22 ::S19763C22(){ note_ctor("S19763C22", this);} // tgen

static void Test_S19763C22()
{
  extern Class_Descriptor cd_S19763C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,1878)];
    init_test(&cd_S19763C22, buf);
    S19763C22 *dp, &lv = *(dp=new (buf) S19763C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,7508), "sizeof(S19763C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C22)");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(80,48), "S19763C22");
    check_base_class_offset(lv, (S19763C13*), ABISELECT(80,48), "S19763C22");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*), ABISELECT(712,448), "S19763C22");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(712,448), "S19763C22");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(712,448), "S19763C22");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(7264,4596), "S19763C22");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(7568,4780), "S19763C22");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(7864,4964), "S19763C22");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(8328,5272), "S19763C22");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(7568,4780), "S19763C22");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(11688,7400), "S19763C22");
    check_base_class_offset(lv, (S19763C12*), ABISELECT(864,544), "S19763C22");
    check_field_offset(lv, s19763c22f0, ABISELECT(8,4), "S19763C22.s19763c22f0");
    check_field_offset(lv, s19763c22f1, ABISELECT(16,8), "S19763C22.s19763c22f1");
    check_field_offset(lv, s19763c22f2, ABISELECT(32,20), "S19763C22.s19763c22f2");
    check_field_offset(lv, s19763c22f3, ABISELECT(40,24), "S19763C22.s19763c22f3");
    check_field_offset(lv, s19763c22f4, ABISELECT(48,28), "S19763C22.s19763c22f4");
    check_field_offset(lv, s19763c22f5, ABISELECT(56,32), "S19763C22.s19763c22f5");
    check_field_offset(lv, s19763c22f6, ABISELECT(64,40), "S19763C22.s19763c22f6");
    check_field_offset(lv, s19763c22f7, ABISELECT(72,44), "S19763C22.s19763c22f7");
    test_class_info(&lv, &cd_S19763C22);
    dp->~S19763C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C22(Test_S19763C22, "S19763C22", ABISELECT(11856,7508));

#else // __cplusplus

extern void _ZN9S19763C22C1Ev();
extern void _ZN9S19763C22D2Ev();
Name_Map name_map_S19763C22[] = {
  NSPAIR(_ZN9S19763C22C1Ev),
  NSPAIR(_ZN9S19763C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
static Base_Class bases_S19763C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(80,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(712,448), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C9,    ABISELECT(7264,4596), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(7568,4780), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(7864,4964), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(8328,5272), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(7568,4780), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(11688,7400), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(864,544), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C22[];
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY vtc_S19763C22[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern VTBL_ENTRY _ZTV9S19763C22[];
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__9S19763C22[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__9S19763C22[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C22[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C22[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__9S19763C22[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__9S19763C22[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C22[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTT_ENTRY vtt_S19763C22[] = {
  {&(_ZTV9S19763C22[8]),  8,60},
  {&(_ZTV9S19763C22[15]),  15,60},
  {&(_ZTV9S19763C22[22]),  22,60},
  {&(_ZTV9S19763C22[30]),  30,60},
  {&(_ZTV9S19763C22[35]),  35,60},
  {&(_ZTV9S19763C22[45]),  45,60},
  {&(_ZTV9S19763C22[51]),  51,60},
  {&(_ZTV9S19763C22[56]),  56,60},
  {&(_ZTV9S19763C22[60]),  60,60},
  {&(_tg__ZTV9S19763C12__9S19763C22[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__9S19763C22[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__9S19763C22[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C22[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C22[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__9S19763C22[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__9S19763C22[3]),  3,3},
  {&(_tg__ZTV8S19763C8__9S19763C22[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C22 = {  "S19763C22", // class name
  bases_S19763C22, 10,
  &(vtc_S19763C22[0]), // expected_vtbl_contents
  &(vtt_S19763C22[0]), // expected_vtt_contents
  ABISELECT(11856,7508), // object size
  NSPAIRA(_ZTI9S19763C22),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C22),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C22),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C21  : virtual S19763C22 , virtual S19763C19 , S19763C16 {
  int s19763c21f0;
  long s19763c21f1;
  int s19763c21f2[4];
  virtual void  v16(); // _ZN9S19763C213v16Ev
  ~S19763C21(); // tgen
  S19763C21(); // tgen
};
//SIG(-1 S19763C21) C1{ VBC2{ VBC3{ BC4{ v2 FL FD Fp Fc FC5{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v3 FC6{ VBC5 Fp FC5 FL:3} Fi Fp Fi} VBC5 VBC7{ VBC4 VBC8{ BC4 BC9{ v5 v6 v7 Fi[2] Fl[2] FC5[3]} BC5 vd v8 Fl FL Fp[8] FC10{ BC5 VBC9 VBC6 VBC4 FC4 Fs Fi[2]} Fp Fi FC10 Fi} VBC5 VBC6 FL:44 Fp Fi FC10 Fl[2] Fi[3] FC8 Fc:7 FC3} vd Fi FD Fi Fp Fl FU11{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} VBC12{ BC10 VBC13{ VBC4 BC9 VBC14{ VBC8 VBC5 VBC6 BC10 BC7 v9 FC8 FL Fc:7} Fc:8 Fi} BC15{ BC5 VBC4 VBC13 BC10 BC3 vd v10 Fi FC10 Fi Fs FL:8 Fi} v11 v12 FC13 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} BC15 v1 Fi Fl Fi[4]}


void  S19763C21 ::v16(){vfunc_called(this, "_ZN9S19763C213v16Ev");}
S19763C21 ::~S19763C21(){ note_dtor("S19763C21", this);} // tgen
S19763C21 ::S19763C21(){ note_ctor("S19763C21", this);} // tgen

static void Test_S19763C21()
{
  extern Class_Descriptor cd_S19763C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2918,7417)];
    init_test(&cd_S19763C21, buf);
    S19763C21 *dp, &lv = *(dp=new (buf) S19763C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(46672,29664), "sizeof(S19763C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C21)");
    /*is_ambiguous_... S19763C21::S19763C13 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(2928,1864), "S19763C21");
    check_base_class_offset(lv, (S19763C13*)(S19763C22*), ABISELECT(2928,1864), "S19763C21");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C22*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(3560,2264), "S19763C21");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(3560,2264), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C19*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(10112,6412), "S19763C21");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C19*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*), ABISELECT(10112,6412), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*), ABISELECT(10112,6412), "S19763C21");
    check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(10416,6596), "S19763C21");
    check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(10712,6780), "S19763C21");
    check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(11176,7088), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(10416,6596), "S19763C21");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(10416,6596), "S19763C21");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(10416,6596), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(14536,9216), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C19*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(14536,9216), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(14536,9216), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*), ABISELECT(14536,9216), "S19763C21");
    check_base_class_offset(lv, (S19763C12*)(S19763C22*), ABISELECT(3712,2360), "S19763C21");
    check_base_class_offset(lv, (S19763C22*), ABISELECT(2848,1816), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C19*), ABISELECT(14704,9324), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C19*), ABISELECT(34728,22064), "S19763C21");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(34728,22064), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(34728,22064), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*), ABISELECT(34728,22064), "S19763C21");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C19*), ABISELECT(14704,9324), "S19763C21");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(35192,22372), "S19763C21");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(35664,22688), "S19763C21");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(35664,22688), "S19763C21");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(36128,22980), "S19763C21");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(35664,22688), "S19763C21");
    check_base_class_offset(lv, (S19763C15*)(S19763C19*), ABISELECT(35192,22372), "S19763C21");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C19*), ABISELECT(35192,22372), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*), ABISELECT(35192,22372), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C19*), ABISELECT(15168,9616), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(15312,9712), "S19763C21");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(15312,9712), "S19763C21");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(15776,10004), "S19763C21");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(15776,10004), "S19763C21");
    check_base_class_offset(lv, (S19763C16*)(S19763C19*), ABISELECT(15168,9616), "S19763C21");
    check_base_class_offset(lv, (S19763C19*), ABISELECT(14704,9324), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*), 0, "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*), ABISELECT(144,96), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*), ABISELECT(144,96), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*), ABISELECT(608,388), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*), ABISELECT(608,388), "S19763C21");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C16*), 0, "S19763C21");
    check_field_offset(lv, s19763c21f0, ABISELECT(2812,1792), "S19763C21.s19763c21f0");
    check_field_offset(lv, s19763c21f1, ABISELECT(2816,1796), "S19763C21.s19763c21f1");
    check_field_offset(lv, s19763c21f2, ABISELECT(2824,1800), "S19763C21.s19763c21f2");
    test_class_info(&lv, &cd_S19763C21);
    dp->~S19763C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C21(Test_S19763C21, "S19763C21", ABISELECT(46672,29664));

#else // __cplusplus

extern void _ZN9S19763C21C1Ev();
extern void _ZN9S19763C21D1Ev();
Name_Map name_map_S19763C21[] = {
  NSPAIR(_ZN9S19763C21C1Ev),
  NSPAIR(_ZN9S19763C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C22;
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C19;
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
static Base_Class bases_S19763C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C9,    ABISELECT(2928,1864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(2928,1864), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(3560,2264), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(10112,6412), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(10416,6596), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(10712,6780), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(11176,7088), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(10416,6596), //bcp->offset
    68, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(14536,9216), //bcp->offset
    89, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(3712,2360), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19763C22,    ABISELECT(2848,1816), //bcp->offset
    31, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(14704,9324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(34728,22064), //bcp->offset
    139, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(14704,9324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(35192,22372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(35664,22688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(35664,22688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(36128,22980), //bcp->offset
    178, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(35664,22688), //bcp->offset
    164, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(35192,22372), //bcp->offset
    147, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(15168,9616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(15312,9712), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C7,    ABISELECT(15312,9712), //bcp->offset
    126, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(15776,10004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(15776,10004), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(15168,9616), //bcp->offset
    113, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19763C19,    ABISELECT(14704,9324), //bcp->offset
    92, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C5,    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
    29, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(144,96), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(608,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
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(608,388), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C21[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn608_N9S19763C21D1Ev,_ZThn388_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn608_N9S19763C21D0Ev,_ZThn388_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn3712_N9S19763C21D1Ev,_ZThn2360_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn3712_N9S19763C21D0Ev,_ZThn2360_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C21D1Ev,_ZThn6596_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C21D0Ev,_ZThn6596_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn14704_N9S19763C21D1Ev,_ZThn9324_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn14704_N9S19763C21D0Ev,_ZThn9324_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C21D1Ev,_ZThn22372_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C21D0Ev,_ZThn22372_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C21D1Ev,_ZThn22688_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C21D0Ev,_ZThn22688_N9S19763C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY vtc_S19763C21[] = {
  ABISELECT(14704,9324),
  ABISELECT(3712,2360),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(34728,22064),
  ABISELECT(14536,9216),
  ABISELECT(3560,2264),
  ABISELECT(10416,6596),
  ABISELECT(35664,22688),
  ABISELECT(35192,22372),
  ABISELECT(10112,6412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(9968,6316),
  ABISELECT(3416,2168),
  ABISELECT(14392,9120),
  ABISELECT(34584,21968),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C21D1Ev,_ZThn388_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S19763C21D0Ev,_ZThn388_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-2848,-1816),
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  ABISELECT(-2848,-1816),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
  0,
  ABISELECT(-2928,-1864),
  0,
  ABISELECT(-2928,-1864),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-3560,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-3712,-2360),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-3712,-2360),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
  0,
  ABISELECT(-10112,-6412),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10416,-6596),
  0,
  ABISELECT(-10416,-6596),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-10712,-6780),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-11176,-7088),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-14536,-9216),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-14704,-9324),
  0,
  0,
  0,
  ABISELECT(-4288,-2728),
  ABISELECT(20960,13364),
  ABISELECT(20488,13048),
  ABISELECT(-4592,-2912),
  ABISELECT(-11144,-7060),
  ABISELECT(-168,-108),
  ABISELECT(20024,12740),
  ABISELECT(-14704,-9324),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
  ABISELECT(19560,12448),
  ABISELECT(-632,-400),
  ABISELECT(-11608,-7352),
  ABISELECT(-4752,-3020),
  ABISELECT(20496,13072),
  ABISELECT(20024,12756),
  ABISELECT(-5056,-3204),
  ABISELECT(-15168,-9616),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  ABISELECT(-15312,-9712),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-15776,-10004),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  0,
  0,
  ABISELECT(-34728,-22064),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-35192,-22372),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-35192,-22372),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
  ABISELECT(-35664,-22688),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-35664,-22688),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-36128,-22980),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S19763C21[];
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__A1__9S19763C21[] = {
  ABISELECT(34728,22064),
  ABISELECT(14536,9216),
  ABISELECT(3560,2264),
  ABISELECT(10416,6596),
  ABISELECT(35664,22688),
  ABISELECT(35192,22372),
  ABISELECT(10112,6412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21[] = {
  ABISELECT(9968,6316),
  ABISELECT(3416,2168),
  ABISELECT(14392,9120),
  ABISELECT(34584,21968),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C16__A3__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-34584,-21968),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C16__A3__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-14392,-9120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__9S19763C21[] = {
  0,
  ABISELECT(-3416,-2168),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C16__A3__9S19763C21[] = {
  0,
  ABISELECT(-9968,-6316),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C16__A1__9S19763C21[] = {
  0,
  ABISELECT(-10112,-6412),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C16D1Ev,_ZThn22372_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn35192_N9S19763C16D0Ev,_ZThn22372_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-35192,-22372),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-35192,-22372),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C16D1Ev,_ZThn22688_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn35664_N9S19763C16D0Ev,_ZThn22688_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-35664,-22688),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-35664,-22688),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C16D1Ev,_ZThn6596_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn10416_N9S19763C16D0Ev,_ZThn6596_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10416,-6596),
  0,
  ABISELECT(-10416,-6596),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-10712,-6780),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-11176,-7088),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C16__A1__9S19763C21[] = {
  0,
  ABISELECT(-3560,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-14536,-9216),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C16__A1__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-34728,-22064),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-36128,-22980),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C16__A1__9S19763C21[] = {
  ABISELECT(9968,6316),
  ABISELECT(3416,2168),
  ABISELECT(14392,9120),
  ABISELECT(34584,21968),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C22__9S19763C21[] = {
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C22__9S19763C21[] = {
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22__9S19763C21[] = {
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C22__9S19763C21[] = {
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C22__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C21[] = {
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C21[] = {
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__9S19763C21[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C21[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C21[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__9S19763C21[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C21[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21[] = {
  ABISELECT(-4288,-2728),
  ABISELECT(20960,13364),
  ABISELECT(20488,13048),
  ABISELECT(-4592,-2912),
  ABISELECT(-11144,-7060),
  ABISELECT(-168,-108),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C19__9S19763C21[] = {
  ABISELECT(-4592,-2912),
  ABISELECT(-11144,-7060),
  ABISELECT(-168,-108),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C19__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C19__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C19__9S19763C21[] = {
  0,
  ABISELECT(11144,7060),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C19__9S19763C21[] = {
  0,
  ABISELECT(4592,2912),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(19560,12448),
  ABISELECT(-632,-400),
  ABISELECT(-11608,-7352),
  ABISELECT(-4752,-3020),
  ABISELECT(20496,13072),
  ABISELECT(20024,12756),
  ABISELECT(-5056,-3204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-12352),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(776,496),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  0,
  ABISELECT(11752,7448),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A2__9S19763C21[] = {
  0,
  ABISELECT(5200,3300),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C21[] = {
  0,
  ABISELECT(5056,3204),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C16D1Ev,_ZThn12756_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C16D0Ev,_ZThn12756_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-20024,-12756),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-20024,-12756),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C16D1Ev,_ZThn13072_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C16D0Ev,_ZThn13072_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-20496,-13072),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-20496,-13072),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4752,3020),
  0,
  ABISELECT(4752,3020),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(4456,2836),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(3992,2528),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C21[] = {
  0,
  ABISELECT(11608,7352),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(632,400),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-20960,-13364),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C21[] = {
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C19__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C19__9S19763C21[] = {
  0,
  ABISELECT(11144,7060),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C19__9S19763C21[] = {
  0,
  ABISELECT(4592,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20488_N9S19763C19D1Ev,_ZThn13048_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20488_N9S19763C19D0Ev,_ZThn13048_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19__9S19763C21[] = {
  ABISELECT(-20488,-13048),
  0,
  0,
  0,
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20960_N9S19763C19D1Ev,_ZThn13364_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20960_N9S19763C19D0Ev,_ZThn13364_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19__9S19763C21[] = {
  ABISELECT(-20960,-13364),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-20960,-13364),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C19__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4288,2728),
  0,
  ABISELECT(4288,2728),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C21[] = {
  ABISELECT(3992,2544),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C21[] = {
  ABISELECT(3528,2236),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-21424,-13656),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19__9S19763C21[] = {
  ABISELECT(19560,12448),
  ABISELECT(-632,-400),
  ABISELECT(-11608,-7352),
  ABISELECT(-4752,-3020),
  ABISELECT(20496,13072),
  ABISELECT(20024,12756),
  ABISELECT(-5056,-3204),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C21[] = {
  ABISELECT(-5200,-3300),
  ABISELECT(-11752,-7448),
  ABISELECT(-776,-496),
  ABISELECT(19416,12352),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21[] = {
  ABISELECT(-464,-308),
  ABISELECT(-20656,-13156),
  ABISELECT(-31632,-20108),
  ABISELECT(-24776,-15776),
  ABISELECT(472,316),
  ABISELECT(-25080,-15960),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C21[] = {
  0,
  ABISELECT(25080,15960),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C21[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(24776,15776),
  0,
  ABISELECT(24776,15776),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C21[] = {
  ABISELECT(24480,15592),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C21[] = {
  ABISELECT(24016,15284),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C21[] = {
  0,
  ABISELECT(31632,20108),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(20656,13156),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(464,308),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21[] = {
  ABISELECT(-25248,-16092),
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A1__9S19763C21[] = {
  ABISELECT(-25552,-16276),
  ABISELECT(-32104,-20424),
  ABISELECT(-21128,-13472),
  ABISELECT(-936,-624),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(936,624),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(21128,13472),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(32104,20424),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(25552,16276),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(26016,16568),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(25712,16384),
  0,
  ABISELECT(25712,16384),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(25416,16200),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(24952,15892),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__9S19763C21[] = {
  0,
  ABISELECT(32568,20716),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A1__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(21592,13764),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__9S19763C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(25248,16092),
  0,
  ABISELECT(25248,16092),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C21[] = {
  ABISELECT(24952,15908),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C21[] = {
  ABISELECT(24488,15600),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__9S19763C21[] = {
  0,
  ABISELECT(32104,20424),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__9S19763C21[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(21128,13472),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__9S19763C21[] = {
  0,
  0,
  0,
  ABISELECT(936,624),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__9S19763C21[] = {
  0,
  ABISELECT(25552,16276),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__9S19763C21[] = {
  ABISELECT(-21592,-13764),
  ABISELECT(-32568,-20716),
  ABISELECT(-25712,-16384),
  ABISELECT(-26016,-16568),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C21[] = {
  {&(_ZTV9S19763C21[13]),  13,186},
  {&(_tg__ZTV9S19763C16__A1__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C16__A3__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C16__A3__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C16__A3__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C16__A3__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C16__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C16__A1__9S19763C21[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C16__A1__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C16__A1__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C16__A1__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C16__A1__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C16__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C16__A1__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C16__A1__9S19763C21[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C16__A1__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C16__A1__9S19763C21[6]),  6,7},
  {&(_ZTV9S19763C21[40]),  40,186},
  {&(_ZTV9S19763C21[47]),  47,186},
  {&(_ZTV9S19763C21[54]),  54,186},
  {&(_ZTV9S19763C21[62]),  62,186},
  {&(_ZTV9S19763C21[67]),  67,186},
  {&(_ZTV9S19763C21[77]),  77,186},
  {&(_ZTV9S19763C21[83]),  83,186},
  {&(_ZTV9S19763C21[88]),  88,186},
  {&(_ZTV9S19763C21[92]),  92,186},
  {&(_ZTV9S19763C21[108]),  108,186},
  {&(_ZTV9S19763C21[144]),  144,186},
  {&(_ZTV9S19763C21[159]),  159,186},
  {&(_ZTV9S19763C21[174]),  174,186},
  {&(_ZTV9S19763C21[184]),  184,186},
  {&(_ZTV9S19763C21[122]),  122,186},
  {&(_ZTV9S19763C21[132]),  132,186},
  {&(_ZTV9S19763C21[135]),  135,186},
  {&(_ZTV9S19763C21[24]),  24,186},
  {&(_tg__ZTV9S19763C22__9S19763C21[8]),  8,10},
  {&(_tg__ZTV9S19763C13__9S19763C22__9S19763C21[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C22__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C22__9S19763C21[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C22__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C22__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C22__9S19763C21[3]),  3,3},
  {&(_tg__ZTV9S19763C12__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C8__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C19__9S19763C21[9]),  9,14},
  {&(_tg__ZTV8S19763C79S19763C19__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C19__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C19__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A2__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A2__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A2__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A2__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C21[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C21[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__9S19763C19__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C19__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C19__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19__9S19763C21[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C19__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C21[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C21[6]),  6,8},
  {&(_tg__ZTV9S19763C16__9S19763C19__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C21[6]),  6,7},
  {&(_tg__ZTV9S19763C15__9S19763C21[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C21[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C21[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C21[6]),  6,8},
  {&(_tg__ZTV9S19763C11__9S19763C21[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A1__9S19763C21[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A1__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A1__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A1__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A1__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A1__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A1__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A1__9S19763C21[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__9S19763C21[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__9S19763C21[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__9S19763C21[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__9S19763C21[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__9S19763C21[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__9S19763C21[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__9S19763C21[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__9S19763C21[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20960_N9S19763C19D0Ev,_ZThn13364_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20960_N9S19763C19D1Ev,_ZThn13364_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20488_N9S19763C19D0Ev,_ZThn13048_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20488_N9S19763C19D1Ev,_ZThn13048_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D0Ev,_ZThn4236_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19763C12D1Ev,_ZThn4236_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D0Ev,_ZThn544_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19763C22D1Ev,_ZThn544_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D0Ev,_ZThn4780_N9S19763C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19763C22D1Ev,_ZThn4780_N9S19763C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C16D0Ev,_ZThn6596_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C16D1Ev,_ZThn6596_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C16D0Ev,_ZThn13072_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C16D0Ev,_ZThn22688_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C16D1Ev,_ZThn13072_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C16D1Ev,_ZThn22688_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C16D0Ev,_ZThn12756_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C16D0Ev,_ZThn22372_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C16D1Ev,_ZThn12756_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C16D1Ev,_ZThn22372_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C21D0Ev,_ZThn22688_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35664_N9S19763C21D1Ev,_ZThn22688_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C21D0Ev,_ZThn22372_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn35192_N9S19763C21D1Ev,_ZThn22372_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14704_N9S19763C21D0Ev,_ZThn9324_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14704_N9S19763C21D1Ev,_ZThn9324_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3712_N9S19763C21D0Ev,_ZThn2360_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3712_N9S19763C21D1Ev,_ZThn2360_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C21D0Ev,_ZThn6596_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10416_N9S19763C21D1Ev,_ZThn6596_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C21 = {  "S19763C21", // class name
  bases_S19763C21, 33,
  &(vtc_S19763C21[0]), // expected_vtbl_contents
  &(vtt_S19763C21[0]), // expected_vtt_contents
  ABISELECT(46672,29664), // object size
  NSPAIRA(_ZTI9S19763C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C21),186, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C21),120, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C24  {
  void *s19763c24f0;
  long s19763c24f1;
  int s19763c24f2;
  __tsi64 s19763c24f3;
  void *s19763c24f4;
  int s19763c24f5;
  int s19763c24f6;
  int s19763c24f7;
  int s19763c24f8;
  virtual void  v17(); // _ZN9S19763C243v17Ev
  virtual void  v18(); // _ZN9S19763C243v18Ev
  ~S19763C24(); // tgen
  S19763C24(); // tgen
};
//SIG(-1 S19763C24) C1{ v1 v2 Fp Fl Fi FL Fp Fi[4]}


void  S19763C24 ::v17(){vfunc_called(this, "_ZN9S19763C243v17Ev");}
void  S19763C24 ::v18(){vfunc_called(this, "_ZN9S19763C243v18Ev");}
S19763C24 ::~S19763C24(){ note_dtor("S19763C24", this);} // tgen
S19763C24 ::S19763C24(){ note_ctor("S19763C24", this);} // tgen

static void Test_S19763C24()
{
  extern Class_Descriptor cd_S19763C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S19763C24, buf);
    S19763C24 *dp, &lv = *(dp=new (buf) S19763C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S19763C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19763C24)");
    check_field_offset(lv, s19763c24f0, ABISELECT(8,4), "S19763C24.s19763c24f0");
    check_field_offset(lv, s19763c24f1, ABISELECT(16,8), "S19763C24.s19763c24f1");
    check_field_offset(lv, s19763c24f2, ABISELECT(24,12), "S19763C24.s19763c24f2");
    check_field_offset(lv, s19763c24f3, ABISELECT(32,16), "S19763C24.s19763c24f3");
    check_field_offset(lv, s19763c24f4, ABISELECT(40,24), "S19763C24.s19763c24f4");
    check_field_offset(lv, s19763c24f5, ABISELECT(48,28), "S19763C24.s19763c24f5");
    check_field_offset(lv, s19763c24f6, ABISELECT(52,32), "S19763C24.s19763c24f6");
    check_field_offset(lv, s19763c24f7, ABISELECT(56,36), "S19763C24.s19763c24f7");
    check_field_offset(lv, s19763c24f8, ABISELECT(60,40), "S19763C24.s19763c24f8");
    test_class_info(&lv, &cd_S19763C24);
    dp->~S19763C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C24(Test_S19763C24, "S19763C24", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN9S19763C24C1Ev();
extern void _ZN9S19763C24D1Ev();
Name_Map name_map_S19763C24[] = {
  NSPAIR(_ZN9S19763C24C1Ev),
  NSPAIR(_ZN9S19763C24D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19763C24[];
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY vtc_S19763C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C24[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
Class_Descriptor cd_S19763C24 = {  "S19763C24", // class name
  0,0,//no base classes
  &(vtc_S19763C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI9S19763C24),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19763C24),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  S19763C20  : S19763C6 , virtual S19763C21 , virtual S19763C24 {
  int s19763c20f0;
  int s19763c20f1[6];
  long s19763c20f2[3];
  long s19763c20f3;
  int s19763c20f4;
  int s19763c20f5;
  int s19763c20f6;
  int s19763c20f7;
  char s19763c20f8:7;
  void *s19763c20f9;
  char s19763c20f10;
  ::S19763C7 s19763c20f11;
  int s19763c20f12;
  ~S19763C20(); // tgen
  S19763C20(); // tgen
};
//SIG(-1 S19763C20) C1{ BC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ BC3 VBC5{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v5 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC5 BC3 vd v6 Fl FL Fp[8] FC4 Fp Fi FC4 Fi} BC9{ VBC8 VBC3 VBC6 BC4 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC4 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v10 FC6 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs FL:8} VBC12{ VBC13{ VBC11 VBC3 VBC10 vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} VBC15{ BC4 VBC16{ VBC7 BC5 VBC9 Fc:8 Fi} BC17{ BC3 VBC7 VBC16 BC4 BC11 vd v11 Fi FC4 Fi Fs FL:8 Fi} v12 v13 FC16 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} BC17 v14 Fi Fl Fi[4]} VBC18{ v15 v16 Fp Fl Fi FL Fp Fi Fi Fi Fi} Fi Fi[6] Fl[3] Fl Fi Fi Fi Fi Fc:7 Fp Fc FC4 Fi}


S19763C20 ::~S19763C20(){ note_dtor("S19763C20", this);} // tgen
S19763C20 ::S19763C20(){ note_ctor("S19763C20", this);} // tgen

static void Test_S19763C20()
{
  extern Class_Descriptor cd_S19763C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4699,11932)];
    init_test(&cd_S19763C20, buf);
    S19763C20 *dp, &lv = *(dp=new (buf) S19763C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(75168,47724), "sizeof(S19763C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C20)");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C6*), ABISELECT(27944,17724), "S19763C20");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*)(S19763C6*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C22*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(27944,17724), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(28096,17820), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(28560,18112), "S19763C20");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C19*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(28560,18112), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(29024,18420), "S19763C20");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*)(S19763C6*), ABISELECT(29024,18420), "S19763C20");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(29024,18420), "S19763C20");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C19*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(29024,18420), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(29200,18528), "S19763C20");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C19*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C19*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C21*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(29200,18528), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C6*), ABISELECT(28096,17820), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*)(S19763C6*), 0, "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*)(S19763C6*), ABISELECT(296,184), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*)(S19763C6*), ABISELECT(760,492), "S19763C20");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C6*), 0, "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(29800,18896), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(30264,19204), "S19763C20");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*)(S19763C6*), ABISELECT(29504,18712), "S19763C20");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(29504,18712), "S19763C20");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C20");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C20");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*)(S19763C6*), ABISELECT(4592,2912), "S19763C20");
    check_base_class_offset(lv, (S19763C11*)(S19763C6*), ABISELECT(4128,2620), "S19763C20");
    check_base_class_offset(lv, (S19763C6*), 0, "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C13 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(36560,23196), "S19763C20");
    check_base_class_offset(lv, (S19763C13*)(S19763C22*), ABISELECT(36560,23196), "S19763C20");
    check_base_class_offset(lv, (S19763C12*)(S19763C22*), ABISELECT(37200,23596), "S19763C20");
    check_base_class_offset(lv, (S19763C22*)(S19763C21*), ABISELECT(36480,23148), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C19*), ABISELECT(43600,27648), "S19763C20");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C19*), ABISELECT(43600,27648), "S19763C20");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(63624,40388), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(64096,40704), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(64096,40704), "S19763C20");
    /*is_ambiguous_... S19763C20::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(64560,40996), "S19763C20");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(64096,40704), "S19763C20");
    check_base_class_offset(lv, (S19763C15*)(S19763C19*), ABISELECT(63624,40388), "S19763C20");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C19*), ABISELECT(63624,40388), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C21*), ABISELECT(63624,40388), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C19*), ABISELECT(44064,27940), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(44208,28036), "S19763C20");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(44208,28036), "S19763C20");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(44672,28328), "S19763C20");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(44672,28328), "S19763C20");
    check_base_class_offset(lv, (S19763C16*)(S19763C19*), ABISELECT(44064,27940), "S19763C20");
    check_base_class_offset(lv, (S19763C19*)(S19763C21*), ABISELECT(43600,27648), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C21*), ABISELECT(33632,21332), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(33776,21428), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(33776,21428), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(34240,21720), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(34240,21720), "S19763C20");
    /*is_ambiguous_... S19763C21::S19763C16 */ AMB_check_base_class_offset(lv, (S19763C16*)(S19763C21*), ABISELECT(33632,21332), "S19763C20");
    check_base_class_offset(lv, (S19763C21*), ABISELECT(33632,21332), "S19763C20");
    check_base_class_offset(lv, (S19763C24*), ABISELECT(75104,47680), "S19763C20");
    check_field_offset(lv, s19763c20f0, ABISELECT(26276,16660), "S19763C20.s19763c20f0");
    check_field_offset(lv, s19763c20f1, ABISELECT(26280,16664), "S19763C20.s19763c20f1");
    check_field_offset(lv, s19763c20f2, ABISELECT(26304,16688), "S19763C20.s19763c20f2");
    check_field_offset(lv, s19763c20f3, ABISELECT(26328,16700), "S19763C20.s19763c20f3");
    check_field_offset(lv, s19763c20f4, ABISELECT(26336,16704), "S19763C20.s19763c20f4");
    check_field_offset(lv, s19763c20f5, ABISELECT(26340,16708), "S19763C20.s19763c20f5");
    check_field_offset(lv, s19763c20f6, ABISELECT(26344,16712), "S19763C20.s19763c20f6");
    check_field_offset(lv, s19763c20f7, ABISELECT(26348,16716), "S19763C20.s19763c20f7");
    set_bf_and_test(lv, s19763c20f8, ABISELECT(26352,16720), 0, 7, 1, "S19763C20");
    set_bf_and_test(lv, s19763c20f8, ABISELECT(26352,16720), 0, 7, hide_sll(1LL<<6), "S19763C20");
    check_field_offset(lv, s19763c20f9, ABISELECT(26360,16724), "S19763C20.s19763c20f9");
    check_field_offset(lv, s19763c20f10, ABISELECT(26368,16728), "S19763C20.s19763c20f10");
    check_field_offset(lv, s19763c20f11, ABISELECT(26384,16732), "S19763C20.s19763c20f11");
    check_field_offset(lv, s19763c20f12, ABISELECT(27936,17720), "S19763C20.s19763c20f12");
    test_class_info(&lv, &cd_S19763C20);
    dp->~S19763C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C20(Test_S19763C20, "S19763C20", ABISELECT(75168,47724));

#else // __cplusplus

extern void _ZN9S19763C20C1Ev();
extern void _ZN9S19763C20D1Ev();
Name_Map name_map_S19763C20[] = {
  NSPAIR(_ZN9S19763C20C1Ev),
  NSPAIR(_ZN9S19763C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C6;
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C22;
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C19;
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C21;
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
extern Class_Descriptor cd_S19763C24;
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
static Base_Class bases_S19763C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C5,    ABISELECT(27944,17724), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(28096,17820), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(28560,18112), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(29024,18420), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(29200,18528), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(28096,17820), //bcp->offset
    53, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    27, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(29504,18712), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C4,    ABISELECT(29800,18896), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(30264,19204), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(29504,18712), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    30, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19763C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C9,    ABISELECT(36560,23196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(36560,23196), //bcp->offset
    145, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(37200,23596), //bcp->offset
    154, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19763C22,    ABISELECT(36480,23148), //bcp->offset
    134, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(43600,27648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19763C7,    ABISELECT(43600,27648), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(63624,40388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(64096,40704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(64096,40704), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(64560,40996), //bcp->offset
    241, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(64096,40704), //bcp->offset
    227, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(63624,40388), //bcp->offset
    210, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(44064,27940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(44208,28036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(44208,28036), //bcp->offset
    197, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(44672,28328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(44672,28328), //bcp->offset
    204, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(44064,27940), //bcp->offset
    184, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19763C19,    ABISELECT(43600,27648), //bcp->offset
    163, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(33632,21332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(33776,21428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(33776,21428), //bcp->offset
    121, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(34240,21720), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(34240,21720), //bcp->offset
    128, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(33632,21332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19763C21,    ABISELECT(33632,21332), //bcp->offset
    97, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C24,    ABISELECT(75104,47680), //bcp->offset
    249, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19763C20[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C20D1Ev();
extern void _ZN9S19763C20D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev)();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn29504_N9S19763C20D1Ev,_ZThn18712_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn29504_N9S19763C20D0Ev,_ZThn18712_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn33632_N9S19763C20D1Ev,_ZThn21332_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn33632_N9S19763C20D0Ev,_ZThn21332_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn36480_N9S19763C20D1Ev,_ZThn23148_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn36480_N9S19763C20D0Ev,_ZThn23148_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn36560_N9S19763C20D1Ev,_ZThn23196_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn36560_N9S19763C20D0Ev,_ZThn23196_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn37200_N9S19763C20D1Ev,_ZThn23596_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn37200_N9S19763C20D0Ev,_ZThn23596_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn43600_N9S19763C20D1Ev,_ZThn27648_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn43600_N9S19763C20D0Ev,_ZThn27648_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn63624_N9S19763C20D1Ev,_ZThn40388_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn63624_N9S19763C20D0Ev,_ZThn40388_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn64096_N9S19763C20D1Ev,_ZThn40704_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn64096_N9S19763C20D0Ev,_ZThn40704_N9S19763C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev)();
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY vtc_S19763C20[] = {
  ABISELECT(75104,47680),
  ABISELECT(64096,40704),
  ABISELECT(63624,40388),
  ABISELECT(43600,27648),
  ABISELECT(37200,23596),
  ABISELECT(36560,23196),
  ABISELECT(36480,23148),
  ABISELECT(33632,21332),
  ABISELECT(29504,18712),
  ABISELECT(29200,18528),
  ABISELECT(29024,18420),
  ABISELECT(28560,18112),
  ABISELECT(28096,17820),
  ABISELECT(27944,17724),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(25376,16092),
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev),
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev),
  0,
  ABISELECT(-27944,-17724),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-28096,-17820),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-28560,-18112),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-29024,-18420),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  0,
  ABISELECT(-29200,-18528),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-29504,-18712),
  0,
  ABISELECT(-29504,-18712),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-29800,-18896),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-30264,-19204),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-33632,-21332),
  0,
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  ABISELECT(-33632,-21332),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-33776,-21428),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-34240,-21720),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-36480,-23148),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-36480,-23148),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev),
  0,
  ABISELECT(-36560,-23196),
  0,
  ABISELECT(-36560,-23196),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-37200,-23596),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-37200,-23596),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev),
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-43600,-27648),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-43600,-27648),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev),
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-44064,-27940),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-44208,-28036),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-44672,-28328),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-63624,-40388),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-63624,-40388),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev),
  ABISELECT(-64096,-40704),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-64096,-40704),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev),
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-64560,-40996),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev),
  0,
  0,
  ABISELECT(-75104,-47680),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern VTBL_ENTRY _ZTV9S19763C20[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C6__9S19763C20[] = {
  ABISELECT(29504,18712),
  ABISELECT(29200,18528),
  ABISELECT(29024,18420),
  ABISELECT(28560,18112),
  ABISELECT(28096,17820),
  ABISELECT(27944,17724),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(25376,16092),
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-24432,-15492),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-24896,-15800),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  0,
  ABISELECT(-23816,-15104),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__9S19763C20[] = {
  0,
  ABISELECT(-25072,-15908),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-24608,-15616),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn24912_N9S19763C12D1Ev,_ZThn15800_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn24912_N9S19763C12D0Ev,_ZThn15800_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-24912,-15800),
  0,
  ABISELECT(-24912,-15800),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-25208,-15984),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-25672,-16292),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-23352,-14812),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-24432,-15508),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn25376_N9S19763C11D1Ev,_ZThn16092_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn25376_N9S19763C11D0Ev,_ZThn16092_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-25376,-16092),
  0,
  ABISELECT(-25376,-16092),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-25672,-16276),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-26136,-16584),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-23816,-15104),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-24896,-15800),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C118S19763C6__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-24432,-15492),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C118S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-25072,-15908),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C118S19763C6__9S19763C20[] = {
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-27944,-17724),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C6__9S19763C20[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-28096,-17820),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C6__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-28560,-18112),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C6__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-29024,-18420),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C6__9S19763C20[] = {
  0,
  ABISELECT(-29200,-18528),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C6__9S19763C20[] = {
  ABISELECT(25376,16092),
  ABISELECT(25072,15908),
  ABISELECT(23816,15104),
  ABISELECT(24896,15800),
  ABISELECT(24432,15492),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn29504_N8S19763C6D1Ev,_ZThn18712_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn29504_N8S19763C6D0Ev,_ZThn18712_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__8S19763C6__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-29504,-18712),
  0,
  ABISELECT(-29504,-18712),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__8S19763C6__9S19763C20[] = {
  ABISELECT(-29800,-18896),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__8S19763C6__9S19763C20[] = {
  ABISELECT(-30264,-19204),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C6__9S19763C20[] = {
  ABISELECT(24432,15508),
  ABISELECT(23352,14812),
  ABISELECT(24912,15800),
  ABISELECT(24608,15616),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C20[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__9S19763C20[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__9S19763C20[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C20[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__9S19763C20[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__9S19763C20[] = {
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(5216,3316),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4752,3008),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  0,
  ABISELECT(5832,3704),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__9S19763C20[] = {
  0,
  ABISELECT(4576,2900),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C21__A1__9S19763C20[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__9S19763C20[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__9S19763C20[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21__9S19763C20[] = {
  ABISELECT(-2848,-1816),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-2848,-1816),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C21__9S19763C20[] = {
  0,
  ABISELECT(-2928,-1864),
  0,
  ABISELECT(-2928,-1864),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C21__9S19763C20[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21__9S19763C20[] = {
  ABISELECT(-3568,-2264),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-3568,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C21__9S19763C20[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C21__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C21__9S19763C20[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C21__9S19763C20[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21__9S19763C20[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-9968,-6316),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-9968,-6316),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C21__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21__9S19763C20[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21__9S19763C20[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21__9S19763C20[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-10432,-6608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-10576,-6704),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__9S19763C20[] = {
  ABISELECT(-11040,-6996),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21__9S19763C20[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C20[] = {
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C22__9S19763C20[] = {
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C22__9S19763C20[] = {
  0,
  ABISELECT(8536,5424),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22__9S19763C20[] = {
  ABISELECT(-720,-448),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-720,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C22__9S19763C20[] = {
  0,
  ABISELECT(7280,4620),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C22__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(6976,4436),
  0,
  ABISELECT(6976,4436),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C20[] = {
  ABISELECT(6680,4252),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C20[] = {
  ABISELECT(6216,3944),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(7456,4728),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__A1__9S19763C20[] = {
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__A1__9S19763C20[] = {
  0,
  ABISELECT(8000,5068),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(7696,4884),
  0,
  ABISELECT(7696,4884),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(7400,4700),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(6936,4392),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__A1__9S19763C20[] = {
  0,
  ABISELECT(9256,5872),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(8176,5176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C20[] = {
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C19__A2__9S19763C20[] = {
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C19__A2__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C19__A2__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__9S19763C20[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C19__A2__9S19763C20[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15648,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15184,9616),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  0,
  ABISELECT(16264,10312),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__9S19763C20[] = {
  0,
  ABISELECT(15008,9508),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C20[] = {
  0,
  ABISELECT(14864,9412),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-19560,-12448),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-20032,-12764),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20032,-12764),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14560,9228),
  0,
  ABISELECT(14560,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(14264,9044),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(13800,8736),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C20[] = {
  0,
  ABISELECT(16120,10216),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15040,9520),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15504,9828),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C19__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C19__9S19763C20[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C19__9S19763C20[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19__9S19763C20[] = {
  ABISELECT(-20024,-12740),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19__9S19763C20[] = {
  ABISELECT(-20496,-13056),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C19__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14096,8936),
  0,
  ABISELECT(14096,8936),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C20[] = {
  ABISELECT(13800,8752),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C20[] = {
  ABISELECT(13336,8444),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20960,-13348),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19__9S19763C20[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C20[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C20[] = {
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__9S19763C20[] = {
  0,
  ABISELECT(34424,21860),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__9S19763C20[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34120,21676),
  0,
  ABISELECT(34120,21676),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C20[] = {
  ABISELECT(33824,21492),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C20[] = {
  ABISELECT(33360,21184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__9S19763C20[] = {
  0,
  ABISELECT(35680,22664),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(34600,21968),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(35064,22276),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__9S19763C20[] = {
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A3__9S19763C20[] = {
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A3__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A3__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__9S19763C20[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A3__9S19763C20[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A2__9S19763C20[] = {
  0,
  ABISELECT(35360,22468),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(35056,22284),
  0,
  ABISELECT(35056,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(34760,22100),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(34296,21792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__9S19763C20[] = {
  0,
  ABISELECT(36616,23272),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A2__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35536,22576),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34592,21992),
  0,
  ABISELECT(34592,21992),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(34296,21808),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(33832,21500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__A1__9S19763C20[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__A1__9S19763C20[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__A1__9S19763C20[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__A1__9S19763C20[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C20[] = {
  {&(_ZTV9S19763C20[16]),  16,255},
  {&(_tg__ZTV8S19763C6__9S19763C20[8]),  8,14},
  {&(_tg__ZTV9S19763C118S19763C6__9S19763C20[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C118S19763C6__A1__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C118S19763C6__A1__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C118S19763C6__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C6__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C118S19763C6__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C6__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C118S19763C6__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C118S19763C6__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C118S19763C6__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C118S19763C6__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C118S19763C6__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C118S19763C6__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C118S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C118S19763C6__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C5__8S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C7__8S19763C6__9S19763C20[7]),  7,8},
  {&(_tg__ZTV8S19763C4__8S19763C6__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C6__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C9__8S19763C6__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C11__8S19763C6__9S19763C20[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__8S19763C6__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__8S19763C6__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__8S19763C6__9S19763C20[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C6__9S19763C20[6]),  6,8},
  {&(_ZTV9S19763C20[52]),  52,255},
  {&(_ZTV9S19763C20[60]),  60,255},
  {&(_ZTV9S19763C20[66]),  66,255},
  {&(_ZTV9S19763C20[72]),  72,255},
  {&(_ZTV9S19763C20[75]),  75,255},
  {&(_ZTV9S19763C20[37]),  37,255},
  {&(_ZTV9S19763C20[85]),  85,255},
  {&(_ZTV9S19763C20[91]),  91,255},
  {&(_ZTV9S19763C20[96]),  96,255},
  {&(_ZTV9S19763C20[47]),  47,255},
  {&(_ZTV9S19763C20[116]),  116,255},
  {&(_ZTV9S19763C20[143]),  143,255},
  {&(_ZTV9S19763C20[150]),  150,255},
  {&(_ZTV9S19763C20[161]),  161,255},
  {&(_ZTV9S19763C20[179]),  179,255},
  {&(_ZTV9S19763C20[222]),  222,255},
  {&(_ZTV9S19763C20[237]),  237,255},
  {&(_ZTV9S19763C20[247]),  247,255},
  {&(_ZTV9S19763C20[193]),  193,255},
  {&(_ZTV9S19763C20[203]),  203,255},
  {&(_ZTV9S19763C20[206]),  206,255},
  {&(_ZTV9S19763C20[127]),  127,255},
  {&(_ZTV9S19763C20[130]),  130,255},
  {&(_ZTV9S19763C20[253]),  253,255},
  {&(_tg__ZTV8S19763C7__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C21__9S19763C20[13]),  13,18},
  {&(_tg__ZTV9S19763C169S19763C21__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C21__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C21__A1__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C21__A1__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C21__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C21__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C21__9S19763C20[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C21__9S19763C20[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C21__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C21__9S19763C20[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C21__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C21__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C21__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C21__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C21__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C21__9S19763C20[16]),  16,21},
  {&(_tg__ZTV8S19763C4__A1__9S19763C21__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C15__9S19763C21__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C21__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21__9S19763C20[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__9S19763C20[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C20[8]),  8,10},
  {&(_tg__ZTV9S19763C13__9S19763C22__9S19763C20[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C22__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C22__9S19763C20[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C22__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C22__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C22__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C22__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C22__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C12__A1__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__A1__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__A1__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C20[9]),  9,14},
  {&(_tg__ZTV8S19763C79S19763C19__A2__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C19__A2__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C19__A2__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C19__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C19__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C19__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C19__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C19__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C19__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__9S19763C19__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C19__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C19__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19__9S19763C20[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C19__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C19__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A2__9S19763C19__9S19763C20[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19__9S19763C20[6]),  6,8},
  {&(_tg__ZTV9S19763C16__9S19763C19__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19__9S19763C20[6]),  6,7},
  {&(_tg__ZTV9S19763C15__9S19763C20[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__9S19763C20[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__9S19763C20[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__9S19763C20[6]),  6,8},
  {&(_tg__ZTV9S19763C11__A1__9S19763C20[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A3__9S19763C20[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A3__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A3__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A3__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A2__9S19763C20[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A2__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A2__9S19763C20[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__A1__9S19763C20[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__A1__9S19763C20[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__A1__9S19763C20[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__A1__9S19763C20[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__A1__9S19763C20[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__A1__9S19763C20[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__A1__9S19763C20[6]),  6,8},
};
extern VTBL_ENTRY _ZTI9S19763C20[];
extern  VTBL_ENTRY _ZTV9S19763C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C20[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N8S19763C6D0Ev,_ZThn18712_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N8S19763C6D1Ev,_ZThn18712_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25376_N9S19763C11D0Ev,_ZThn16092_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25376_N9S19763C11D1Ev,_ZThn16092_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24912_N9S19763C12D0Ev,_ZThn15800_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24912_N9S19763C12D1Ev,_ZThn15800_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64096_N9S19763C20D0Ev,_ZThn40704_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64096_N9S19763C20D1Ev,_ZThn40704_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63624_N9S19763C20D0Ev,_ZThn40388_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn63624_N9S19763C20D1Ev,_ZThn40388_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43600_N9S19763C20D0Ev,_ZThn27648_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43600_N9S19763C20D1Ev,_ZThn27648_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37200_N9S19763C20D0Ev,_ZThn23596_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn37200_N9S19763C20D1Ev,_ZThn23596_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36480_N9S19763C20D0Ev,_ZThn23148_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36480_N9S19763C20D1Ev,_ZThn23148_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33632_N9S19763C20D0Ev,_ZThn21332_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn33632_N9S19763C20D1Ev,_ZThn21332_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36560_N9S19763C20D0Ev,_ZThn23196_N9S19763C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N9S19763C20D0Ev,_ZThn18712_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36560_N9S19763C20D1Ev,_ZThn23196_N9S19763C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29504_N9S19763C20D1Ev,_ZThn18712_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C20 = {  "S19763C20", // class name
  bases_S19763C20, 46,
  &(vtc_S19763C20[0]), // expected_vtbl_contents
  &(vtt_S19763C20[0]), // expected_vtt_contents
  ABISELECT(75168,47724), // object size
  NSPAIRA(_ZTI9S19763C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19763C20),255, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19763C20),182, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19763C1  : virtual S19763C2 , virtual S19763C17 , S19763C20 , S19763C24 , S19763C21 {
  int s19763c1f0;
  int s19763c1f1;
  int s19763c1f2;
  int s19763c1f3;
  int s19763c1f4;
  ::S19763C5 s19763c1f5[2];
  int s19763c1f6;
  int s19763c1f7;
  int s19763c1f8;
  __tsi64 s19763c1f9;
  char s19763c1f10:8;
  virtual void  v1(); // _ZN8S19763C12v1Ev
  ~S19763C1(); // tgen
  S19763C1(); // tgen
};
//SIG(1 S19763C1) C1{ VBC2{ m Fp Fi[2] Fs Fc Fi FC3{ VBC4{ v4 v5 v6 Fi[2] Fl[2] FC5{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC6{ VBC5 VBC7{ BC5 VBC4 VBC8{ VBC5 Fp FC5 FL:3} VBC9{ v7 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC9 Fs Fi[2]} BC10{ BC9 BC4 BC5 vd v8 Fl FL Fp[8] FC7 Fp Fi FC7 Fi} BC11{ VBC10 VBC5 VBC8 BC7 BC12{ VBC9 VBC10 VBC5 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC10 Fc:7 FC13{ BC9 vd v12 FC8 Fi Fp Fi}} v9 FC10 FL Fc:7} v10 v11 FC12 Fs FL:8} BC14{ VBC8 FC12 FL:6 Fi Fl} VBC15{ VBC9 BC4 VBC11 Fc:8 Fi} VBC16{ BC5 VBC9 VBC15 BC7 BC13 vd v13 Fi FC7 Fi Fs FL:8 Fi} v19 FC15 FC6} Fi} VBC17{ v2 FC18{} FC19{ BC7 VBC15 BC16 v14 v15 FC15 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5} BC20{ BC6 VBC21{ VBC22{ VBC13 VBC5 VBC12 vd Fi FD Fi Fp Fl FU23{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} VBC19 BC16 v16 Fi Fl Fi[4]} VBC24{ v17 v18 Fp Fl Fi FL Fp Fi Fi Fi Fi} Fi Fi[6] Fl[3] Fl Fi Fi Fi Fi Fc:7 Fp Fc FC7 Fi} BC24 BC21 v1 Fi Fi Fi Fi Fi FC5[2] Fi Fi Fi FL Fc:8}


void  S19763C1 ::v1(){vfunc_called(this, "_ZN8S19763C12v1Ev");}
S19763C1 ::~S19763C1(){ note_dtor("S19763C1", this);} // tgen
S19763C1 ::S19763C1(){ note_ctor("S19763C1", this);} // tgen

static void Test_S19763C1()
{
  extern Class_Descriptor cd_S19763C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13831,35129)];
    init_test(&cd_S19763C1, buf);
    S19763C1 *dp, &lv = *(dp=new (buf) S19763C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(221280,140512), "sizeof(S19763C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19763C1)");
    check_base_class_offset(lv, (S19763C2*), ABISELECT(31200,19820), "S19763C1");
    check_base_class_offset(lv, (S19763C17*), ABISELECT(137328,87148), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C6*)(S19763C20*), ABISELECT(174056,110512), "S19763C1");
    check_base_class_offset(lv, (S19763C5*)(S19763C8*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C11::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C12::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C22::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C22*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C11*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C12*)(S19763C11*), ABISELECT(174056,110512), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*), ABISELECT(174208,110608), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*), ABISELECT(174672,110900), "S19763C1");
    check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C19*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C11*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(174672,110900), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*), ABISELECT(175136,111208), "S19763C1");
    check_base_class_offset(lv, (S19763C8*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175136,111208), "S19763C1");
    check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175136,111208), "S19763C1");
    check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C19*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C11*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C11*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C12*)(S19763C11*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C8*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175136,111208), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*), ABISELECT(175312,111316), "S19763C1");
    check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C12::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C19*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C15::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C15*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C11*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C12*)(S19763C11*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C9 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C19*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(175312,111316), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C6*)(S19763C20*), ABISELECT(174208,110608), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*)(S19763C6*)(S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*)(S19763C6*)(S19763C20*), ABISELECT(296,184), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*)(S19763C6*)(S19763C20*), ABISELECT(760,492), "S19763C1");
    /*is_ambiguous_... S19763C6::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C6*)(S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C10*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C10*), ABISELECT(175912,111684), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C10 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C10*), ABISELECT(176376,111992), "S19763C1");
    check_base_class_offset(lv, (S19763C10*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175616,111500), "S19763C1");
    check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C12 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C11*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C10*)(S19763C12*)(S19763C11*), ABISELECT(175616,111500), "S19763C1");
    /*is_ambiguous_... S19763C7::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4128,2620), "S19763C1");
    check_base_class_offset(lv, (S19763C7*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4128,2620), "S19763C1");
    check_base_class_offset(lv, (S19763C12*)(S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4592,2912), "S19763C1");
    check_base_class_offset(lv, (S19763C11*)(S19763C6*)(S19763C20*), ABISELECT(4128,2620), "S19763C1");
    check_base_class_offset(lv, (S19763C6*)(S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C13 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*), ABISELECT(182672,115984), "S19763C1");
    check_base_class_offset(lv, (S19763C13*)(S19763C22*), ABISELECT(182672,115984), "S19763C1");
    check_base_class_offset(lv, (S19763C12*)(S19763C22*), ABISELECT(183312,116384), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C22*)(S19763C21*), ABISELECT(182592,115936), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C22*)(S19763C21*), ABISELECT(182592,115936), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C19*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C19::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C19*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C15::S19763C4 */ AMB_check_base_class_offset(lv, (S19763C4*)(S19763C15*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C11*), ABISELECT(210208,133492), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C11*), ABISELECT(210208,133492), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C11 */ AMB_check_base_class_offset(lv, (S19763C12*)(S19763C11*), ABISELECT(210672,133784), "S19763C1");
    check_base_class_offset(lv, (S19763C11*)(S19763C15*), ABISELECT(210208,133492), "S19763C1");
    check_base_class_offset(lv, (S19763C15*)(S19763C19*), ABISELECT(209736,133176), "S19763C1");
    check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C19*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C21*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C15*)(S19763C16*)(S19763C21*), ABISELECT(209736,133176), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C5 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C19*), ABISELECT(190176,120728), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(190320,120824), "S19763C1");
    /*is_ambiguous_... S19763C16::S19763C7 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C19*), ABISELECT(190320,120824), "S19763C1");
    check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(190784,121116), "S19763C1");
    check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C19*), ABISELECT(190784,121116), "S19763C1");
    check_base_class_offset(lv, (S19763C16*)(S19763C19*), ABISELECT(190176,120728), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C19*)(S19763C21*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C19*)(S19763C21*), ABISELECT(189712,120436), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C21*), ABISELECT(179744,114120), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(179888,114216), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(179888,114216), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(180352,114508), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(180352,114508), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C16*)(S19763C21*), ABISELECT(179744,114120), "S19763C1");
    check_base_class_offset(lv, (S19763C21*)(S19763C20*), ABISELECT(179744,114120), "S19763C1");
    check_base_class_offset(lv, (S19763C24*)(S19763C20*), ABISELECT(221216,140468), "S19763C1");
    check_base_class_offset(lv, (S19763C20*), 0, "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C24 */ AMB_check_base_class_offset(lv, (S19763C24*), ABISELECT(27944,17724), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C16*)(S19763C21*), ABISELECT(28016,17768), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C5*)(S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(28160,17864), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C7*)(S19763C16*)(S19763C21*), ABISELECT(28160,17864), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C9*)(S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(28624,18156), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C13*)(S19763C16*)(S19763C21*), ABISELECT(28624,18156), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C16*)(S19763C21*), ABISELECT(28016,17768), "S19763C1");
    /*is_ambiguous_... S19763C1::S19763C21 */ AMB_check_base_class_offset(lv, (S19763C21*), ABISELECT(28016,17768), "S19763C1");
    check_field_offset(lv, s19763c1f0, ABISELECT(30856,19584), "S19763C1.s19763c1f0");
    check_field_offset(lv, s19763c1f1, ABISELECT(30860,19588), "S19763C1.s19763c1f1");
    check_field_offset(lv, s19763c1f2, ABISELECT(30864,19592), "S19763C1.s19763c1f2");
    check_field_offset(lv, s19763c1f3, ABISELECT(30868,19596), "S19763C1.s19763c1f3");
    check_field_offset(lv, s19763c1f4, ABISELECT(30872,19600), "S19763C1.s19763c1f4");
    check_field_offset(lv, s19763c1f5, ABISELECT(30880,19604), "S19763C1.s19763c1f5");
    check_field_offset(lv, s19763c1f6, ABISELECT(31168,19796), "S19763C1.s19763c1f6");
    check_field_offset(lv, s19763c1f7, ABISELECT(31172,19800), "S19763C1.s19763c1f7");
    check_field_offset(lv, s19763c1f8, ABISELECT(31176,19804), "S19763C1.s19763c1f8");
    check_field_offset(lv, s19763c1f9, ABISELECT(31184,19808), "S19763C1.s19763c1f9");
    set_bf_and_test(lv, s19763c1f10, ABISELECT(31192,19816), 0, 8, 1, "S19763C1");
    set_bf_and_test(lv, s19763c1f10, ABISELECT(31192,19816), 0, 8, hide_sll(1LL<<7), "S19763C1");
    test_class_info(&lv, &cd_S19763C1);
    dp->~S19763C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19763C1(Test_S19763C1, "S19763C1", ABISELECT(221280,140512));

#else // __cplusplus

extern void _ZN8S19763C1C1Ev();
extern void _ZN8S19763C1D1Ev();
Name_Map name_map_S19763C1[] = {
  NSPAIR(_ZN8S19763C1C1Ev),
  NSPAIR(_ZN8S19763C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C2;
extern VTBL_ENTRY _ZTI8S19763C2[];
extern Class_Descriptor cd_S19763C17;
extern VTBL_ENTRY _ZTI9S19763C17[];
extern  VTBL_ENTRY _ZTV9S19763C17[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C8;
extern VTBL_ENTRY _ZTI8S19763C8[];
extern  VTBL_ENTRY _ZTV8S19763C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C8[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C10;
extern VTBL_ENTRY _ZTI9S19763C10[];
extern  VTBL_ENTRY _ZTV9S19763C10[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C6;
extern VTBL_ENTRY _ZTI8S19763C6[];
extern  VTBL_ENTRY _ZTV8S19763C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C6[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C22;
extern VTBL_ENTRY _ZTI9S19763C22[];
extern  VTBL_ENTRY _ZTV9S19763C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C22[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C4;
extern VTBL_ENTRY _ZTI8S19763C4[];
extern  VTBL_ENTRY _ZTV8S19763C4[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C12;
extern VTBL_ENTRY _ZTI9S19763C12[];
extern  VTBL_ENTRY _ZTV9S19763C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C12[];
extern Class_Descriptor cd_S19763C11;
extern VTBL_ENTRY _ZTI9S19763C11[];
extern  VTBL_ENTRY _ZTV9S19763C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C11[];
extern Class_Descriptor cd_S19763C15;
extern VTBL_ENTRY _ZTI9S19763C15[];
extern  VTBL_ENTRY _ZTV9S19763C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C15[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C19;
extern VTBL_ENTRY _ZTI9S19763C19[];
extern  VTBL_ENTRY _ZTV9S19763C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C19[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C21;
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
extern Class_Descriptor cd_S19763C24;
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
extern Class_Descriptor cd_S19763C20;
extern VTBL_ENTRY _ZTI9S19763C20[];
extern  VTBL_ENTRY _ZTV9S19763C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C20[];
extern Class_Descriptor cd_S19763C24;
extern VTBL_ENTRY _ZTI9S19763C24[];
extern  VTBL_ENTRY _ZTV9S19763C24[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C5;
extern VTBL_ENTRY _ZTI8S19763C5[];
extern  VTBL_ENTRY _ZTV8S19763C5[];
extern Class_Descriptor cd_S19763C7;
extern VTBL_ENTRY _ZTI8S19763C7[];
extern  VTBL_ENTRY _ZTV8S19763C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C7[];
extern Class_Descriptor cd_S19763C9;
extern VTBL_ENTRY _ZTI8S19763C9[];
extern  VTBL_ENTRY _ZTV8S19763C9[];
extern Class_Descriptor cd_S19763C13;
extern VTBL_ENTRY _ZTI9S19763C13[];
extern  VTBL_ENTRY _ZTV9S19763C13[];
extern Class_Descriptor cd_S19763C16;
extern VTBL_ENTRY _ZTI9S19763C16[];
extern  VTBL_ENTRY _ZTV9S19763C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C16[];
extern Class_Descriptor cd_S19763C21;
extern VTBL_ENTRY _ZTI9S19763C21[];
extern  VTBL_ENTRY _ZTV9S19763C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19763C21[];
static Base_Class bases_S19763C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C2,    ABISELECT(31200,19820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19763C17,    ABISELECT(137328,87148), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19763C5,    ABISELECT(174056,110512), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(174208,110608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(174672,110900), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C8,    ABISELECT(175136,111208), //bcp->offset
    111, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C9,    ABISELECT(175312,111316), //bcp->offset
    114, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19763C7,    ABISELECT(174208,110608), //bcp->offset
    95, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19763C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(296,184), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(760,492), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19763C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(175616,111500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(175912,111684), //bcp->offset
    131, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(176376,111992), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19763C10,    ABISELECT(175616,111500), //bcp->offset
    118, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(4592,2912), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(4128,2620), //bcp->offset
    33, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19763C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(182672,115984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(182672,115984), //bcp->offset
    187, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19763C12,    ABISELECT(183312,116384), //bcp->offset
    196, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    109, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S19763C22,    ABISELECT(182592,115936), //bcp->offset
    176, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(189712,120436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(189712,120436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19763C4,    ABISELECT(209736,133176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(210208,133492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(210208,133492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    227, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C12,    ABISELECT(210672,133784), //bcp->offset
    283, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    113, //bcp->index_in_construction_vtbl_array
    232, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19763C11,    ABISELECT(210208,133492), //bcp->offset
    269, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    112, //bcp->index_in_construction_vtbl_array
    226, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19763C15,    ABISELECT(209736,133176), //bcp->offset
    252, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    111, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(190176,120728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(190320,120824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(190320,120824), //bcp->offset
    239, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    115, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(190784,121116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(190784,121116), //bcp->offset
    246, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    116, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(190176,120728), //bcp->offset
    226, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    114, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19763C19,    ABISELECT(189712,120436), //bcp->offset
    205, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    110, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S19763C5,    ABISELECT(179744,114120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(179888,114216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(179888,114216), //bcp->offset
    163, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    117, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(180352,114508), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(180352,114508), //bcp->offset
    170, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    118, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(179744,114120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19763C21,    ABISELECT(179744,114120), //bcp->offset
    139, //bcp->virtual_function_table_offset
    19, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19763C24,    ABISELECT(221216,140468), //bcp->offset
    291, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    119, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19763C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C24,    ABISELECT(27944,17724), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19763C5,    ABISELECT(28016,17768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19763C5,    ABISELECT(28160,17864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    52, //immediately_derived
  0, 0},
  {&cd_S19763C7,    ABISELECT(28160,17864), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    121, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19763C9,    ABISELECT(28624,18156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19763C13,    ABISELECT(28624,18156), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19763C16,    ABISELECT(28016,17768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19763C21,    ABISELECT(28016,17768), //bcp->offset
    56, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    120, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19763C1[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C1D1Ev();
extern void _ZN8S19763C1D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
extern void _ZN8S19763C12v1Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C1D1Ev,_ZThn2620_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C1D0Ev,_ZThn2620_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C1D1Ev,_ZThn2912_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C1D0Ev,_ZThn2912_N8S19763C1D0Ev)();
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn28016_N8S19763C1D1Ev,_ZThn17768_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn28016_N8S19763C1D0Ev,_ZThn17768_N8S19763C1D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZThn28624_N8S19763C1D1Ev,_ZThn18156_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn28624_N8S19763C1D0Ev,_ZThn18156_N8S19763C1D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN9S19763C172v2Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C1D1Ev,_ZThn111500_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C1D0Ev,_ZThn111500_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N8S19763C1D1Ev,_ZTv0_n60_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn179744_N8S19763C1D1Ev,_ZThn114120_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S19763C1D0Ev,_ZTv0_n60_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn179744_N8S19763C1D0Ev,_ZThn114120_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N8S19763C1D1Ev,_ZTvn388_n60_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N8S19763C1D0Ev,_ZTvn388_n60_N8S19763C1D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n72_N8S19763C1D1Ev,_ZTv0_n36_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn182592_N8S19763C1D1Ev,_ZThn115936_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19763C1D0Ev,_ZTv0_n36_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn182592_N8S19763C1D0Ev,_ZThn115936_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn182672_N8S19763C1D1Ev,_ZThn115984_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn182672_N8S19763C1D0Ev,_ZThn115984_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
extern void ABISELECT(_ZTv0_n56_N8S19763C1D1Ev,_ZTv0_n28_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn183312_N8S19763C1D1Ev,_ZThn116384_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19763C1D0Ev,_ZTv0_n28_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn183312_N8S19763C1D0Ev,_ZThn116384_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N8S19763C1D1Ev,_ZTv0_n52_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn189712_N8S19763C1D1Ev,_ZThn120436_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19763C1D0Ev,_ZTv0_n52_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn189712_N8S19763C1D0Ev,_ZThn120436_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N8S19763C1D1Ev,_ZTvn292_n52_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N8S19763C1D0Ev,_ZTvn292_n52_N8S19763C1D0Ev)();
extern void _ZN9S19763C163v13Ev();
extern void _ZN8S19763C52v3Ev();
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N8S19763C1D1Ev,_ZTvn680_n52_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N8S19763C1D0Ev,_ZTvn680_n52_N8S19763C1D0Ev)();
extern void _ZN9S19763C133v12Ev();
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S19763C1D1Ev,_ZTv0_n48_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn209736_N8S19763C1D1Ev,_ZThn133176_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19763C1D0Ev,_ZTv0_n48_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn209736_N8S19763C1D0Ev,_ZThn133176_N8S19763C1D0Ev)() __attribute__((weak));
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S19763C1D1Ev,_ZTv0_n40_N8S19763C1D1Ev)();
extern void ABISELECT(_ZThn210208_N8S19763C1D1Ev,_ZThn133492_N8S19763C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19763C1D0Ev,_ZTv0_n40_N8S19763C1D0Ev)();
extern void ABISELECT(_ZThn210208_N8S19763C1D0Ev,_ZThn133492_N8S19763C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19763C1D1Ev,_ZTvn292_n40_N8S19763C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19763C1D0Ev,_ZTvn292_n40_N8S19763C1D0Ev)();
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY vtc_S19763C1[] = {
  ABISELECT(137328,87148),
  ABISELECT(31200,19820),
  ABISELECT(221216,140468),
  ABISELECT(210208,133492),
  ABISELECT(209736,133176),
  ABISELECT(189712,120436),
  ABISELECT(183312,116384),
  ABISELECT(182672,115984),
  ABISELECT(182592,115936),
  ABISELECT(179744,114120),
  ABISELECT(175616,111500),
  ABISELECT(175312,111316),
  ABISELECT(175136,111208),
  ABISELECT(174672,110900),
  ABISELECT(174208,110608),
  ABISELECT(174056,110512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
  (VTBL_ENTRY)&_ZN8S19763C12v1Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C1D1Ev,_ZThn2620_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C1D0Ev,_ZThn2620_N8S19763C1D0Ev),
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C1D1Ev,_ZThn2912_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C1D0Ev,_ZThn2912_N8S19763C1D0Ev),
  ABISELECT(-27944,-17724),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
  ABISELECT(161696,102668),
  ABISELECT(155296,98616),
  ABISELECT(154656,98216),
  ABISELECT(154576,98168),
  ABISELECT(146656,93132),
  ABISELECT(147120,93440),
  ABISELECT(146040,92744),
  ABISELECT(147600,93732),
  ABISELECT(182192,115724),
  ABISELECT(181720,115408),
  ABISELECT(147296,93548),
  ABISELECT(-28016,-17768),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn28016_N8S19763C1D1Ev,_ZThn17768_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn28016_N8S19763C1D0Ev,_ZThn17768_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  ABISELECT(-28160,-17864),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-28624,-18156),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn28624_N8S19763C1D1Ev,_ZThn18156_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn28624_N8S19763C1D0Ev,_ZThn18156_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  0,
  ABISELECT(-137328,-87148),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN9S19763C172v2Ev,
  0,
  ABISELECT(-174056,-110512),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-174208,-110608),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  0,
  0,
  ABISELECT(-174672,-110900),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-175136,-111208),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  0,
  ABISELECT(-175312,-111316),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-175616,-111500),
  0,
  ABISELECT(-175616,-111500),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  ABISELECT(-175912,-111684),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  ABISELECT(-176376,-111992),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  0,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-179744,-114120),
  0,
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  ABISELECT(-179744,-114120),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19763C1D1Ev,_ZTv0_n60_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S19763C1D0Ev,_ZTv0_n60_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-179888,-114216),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-180352,-114508),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N8S19763C1D1Ev,_ZTvn388_n60_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N8S19763C1D0Ev,_ZTvn388_n60_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-182592,-115936),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-182592,-115936),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19763C1D1Ev,_ZTv0_n36_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19763C1D0Ev,_ZTv0_n36_N8S19763C1D0Ev),
  0,
  ABISELECT(-182672,-115984),
  0,
  ABISELECT(-182672,-115984),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-183312,-116384),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-183312,-116384),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19763C1D1Ev,_ZTv0_n28_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19763C1D0Ev,_ZTv0_n28_N8S19763C1D0Ev),
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-189712,-120436),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-189712,-120436),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19763C1D1Ev,_ZTv0_n52_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19763C1D0Ev,_ZTv0_n52_N8S19763C1D0Ev),
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-190176,-120728),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N8S19763C1D1Ev,_ZTvn292_n52_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N8S19763C1D0Ev,_ZTvn292_n52_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-190320,-120824),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  ABISELECT(-190784,-121116),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N8S19763C1D1Ev,_ZTvn680_n52_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N8S19763C1D0Ev,_ZTvn680_n52_N8S19763C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
  ABISELECT(-209736,-133176),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-209736,-133176),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C1D1Ev,_ZTv0_n48_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19763C1D0Ev,_ZTv0_n48_N8S19763C1D0Ev),
  ABISELECT(-210208,-133492),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-210208,-133492),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C1D1Ev,_ZTv0_n40_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19763C1D0Ev,_ZTv0_n40_N8S19763C1D0Ev),
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-210672,-133784),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C1D1Ev,_ZTvn292_n40_N8S19763C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19763C1D0Ev,_ZTvn292_n40_N8S19763C1D0Ev),
  0,
  0,
  ABISELECT(-221216,-140468),
  (VTBL_ENTRY)&(_ZTI8S19763C1[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern VTBL_ENTRY _ZTV8S19763C1[];
extern void _ZN8S19763C92v7Ev();
extern void _ZN9S19763C20D1Ev();
extern void _ZN9S19763C20D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C20__8S19763C1[] = {
  ABISELECT(221216,140468),
  ABISELECT(210208,133492),
  ABISELECT(209736,133176),
  ABISELECT(189712,120436),
  ABISELECT(183312,116384),
  ABISELECT(182672,115984),
  ABISELECT(182592,115936),
  ABISELECT(179744,114120),
  ABISELECT(175616,111500),
  ABISELECT(175312,111316),
  ABISELECT(175136,111208),
  ABISELECT(174672,110900),
  ABISELECT(174208,110608),
  ABISELECT(174056,110512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C20D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void _ZN8S19763C6D1Ev();
extern void _ZN8S19763C6D0Ev();
extern void _ZN9S19763C102v8Ev();
extern void _ZN8S19763C63v10Ev();
extern void _ZN8S19763C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(175616,111500),
  ABISELECT(175312,111316),
  ABISELECT(175136,111208),
  ABISELECT(174672,110900),
  ABISELECT(174208,110608),
  ABISELECT(174056,110512),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19763C6D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19763C63v11Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-170544,-108280),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-171008,-108588),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  0,
  ABISELECT(-169928,-107892),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[] = {
  0,
  ABISELECT(-171184,-108696),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-170720,-108404),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZThn171024_N9S19763C12D1Ev,_ZThn108588_N9S19763C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void ABISELECT(_ZThn171024_N9S19763C12D0Ev,_ZThn108588_N9S19763C12D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-171024,-108588),
  0,
  ABISELECT(-171024,-108588),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-171320,-108772),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-171784,-109080),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-169464,-107600),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-170544,-108296),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn171488_N9S19763C11D1Ev,_ZThn108880_N9S19763C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void ABISELECT(_ZThn171488_N9S19763C11D0Ev,_ZThn108880_N9S19763C11D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-171488,-108880),
  0,
  ABISELECT(-171488,-108880),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-171784,-109064),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-172248,-109372),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-169928,-107892),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-171008,-108588),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-170544,-108280),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-171184,-108696),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C118S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-174056,-110512),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-174208,-110608),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C69S19763C20__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-174672,-110900),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-175136,-111208),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C69S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-175312,-111316),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C11__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D1Ev,_ZThn2620_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S19763C6D0Ev,_ZThn2620_N8S19763C6D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C6D1Ev,_ZThn111500_N8S19763C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev)();
extern void ABISELECT(_ZThn175616_N8S19763C6D0Ev,_ZThn111500_N8S19763C6D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-175616,-111500),
  0,
  ABISELECT(-175616,-111500),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-175912,-111684),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(-176376,-111992),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev)();
extern void ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__8S19763C69S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S19763C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D1Ev,_ZThn2912_N8S19763C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S19763C6D0Ev,_ZThn2912_N8S19763C6D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-174056,-110512),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-174208,-110608),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C20__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-174672,-110900),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C20__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-175136,-111208),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-175312,-111316),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C118S19763C6__9S19763C20__8S19763C1[] = {
  ABISELECT(171488,108880),
  ABISELECT(171184,108696),
  ABISELECT(169928,107892),
  ABISELECT(171008,108588),
  ABISELECT(170544,108280),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D1Ev,_ZThn2620_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S19763C20D0Ev,_ZThn2620_N9S19763C20D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn175616_N9S19763C20D1Ev,_ZThn111500_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn175616_N9S19763C20D0Ev,_ZThn111500_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-175616,-111500),
  0,
  ABISELECT(-175616,-111500),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C20__8S19763C1[] = {
  ABISELECT(-175912,-111684),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A3__9S19763C20__8S19763C1[] = {
  ABISELECT(-176376,-111992),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20__8S19763C1[] = {
  ABISELECT(170544,108296),
  ABISELECT(169464,107600),
  ABISELECT(171024,108588),
  ABISELECT(170720,108404),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D1Ev,_ZThn2912_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S19763C20D0Ev,_ZThn2912_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn179744_N9S19763C20D1Ev,_ZThn114120_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn179744_N9S19763C20D0Ev,_ZThn114120_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-179744,-114120),
  0,
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  ABISELECT(-179744,-114120),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn182592_N9S19763C20D1Ev,_ZThn115936_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn182592_N9S19763C20D0Ev,_ZThn115936_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C20__8S19763C1[] = {
  ABISELECT(-182592,-115936),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-182592,-115936),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn182672_N9S19763C20D1Ev,_ZThn115984_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn182672_N9S19763C20D0Ev,_ZThn115984_N9S19763C20D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C20__8S19763C1[] = {
  0,
  ABISELECT(-182672,-115984),
  0,
  ABISELECT(-182672,-115984),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn183312_N9S19763C20D1Ev,_ZThn116384_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn183312_N9S19763C20D0Ev,_ZThn116384_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(-183312,-116384),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-183312,-116384),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn189712_N9S19763C20D1Ev,_ZThn120436_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn189712_N9S19763C20D0Ev,_ZThn120436_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C20__8S19763C1[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-189712,-120436),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-189712,-120436),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn209736_N9S19763C20D1Ev,_ZThn133176_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn209736_N9S19763C20D0Ev,_ZThn133176_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C20__8S19763C1[] = {
  ABISELECT(-209736,-133176),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-209736,-133176),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZThn210208_N9S19763C20D1Ev,_ZThn133492_N9S19763C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev)();
extern void ABISELECT(_ZThn210208_N9S19763C20D0Ev,_ZThn133492_N9S19763C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(-210208,-133492),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-210208,-133492),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A2__9S19763C20__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-210672,-133784),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D1Ev,_ZTvn292_n40_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C20D0Ev,_ZTvn292_n40_N9S19763C20D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C20__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-190176,-120728),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D1Ev,_ZTvn292_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C20D0Ev,_ZTvn292_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-190320,-120824),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C20__8S19763C1[] = {
  ABISELECT(-190784,-121116),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D1Ev,_ZTvn680_n52_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C20D0Ev,_ZTvn680_n52_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-179888,-114216),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev)();
extern void ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C21__A2__9S19763C20__8S19763C1[] = {
  ABISELECT(-180352,-114508),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D1Ev,_ZTvn388_n60_N9S19763C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n120_N9S19763C20D0Ev,_ZTvn388_n60_N9S19763C20D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN9S19763C243v17Ev();
extern void _ZN9S19763C243v18Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C24__9S19763C20__8S19763C1[] = {
  0,
  0,
  ABISELECT(-221216,-140468),
  (VTBL_ENTRY)&(_ZTI9S19763C20[0]),
  (VTBL_ENTRY)&_ZN9S19763C243v17Ev,
  (VTBL_ENTRY)&_ZN9S19763C243v18Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__A__8S19763C1[] = {
  ABISELECT(161696,102668),
  ABISELECT(155296,98616),
  ABISELECT(154656,98216),
  ABISELECT(154576,98168),
  ABISELECT(146656,93132),
  ABISELECT(147120,93440),
  ABISELECT(146040,92744),
  ABISELECT(147600,93732),
  ABISELECT(182192,115724),
  ABISELECT(181720,115408),
  ABISELECT(147296,93548),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(146656,93132),
  ABISELECT(147120,93440),
  ABISELECT(146040,92744),
  ABISELECT(147600,93732),
  ABISELECT(182192,115724),
  ABISELECT(181720,115408),
  ABISELECT(147296,93548),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-146512,-93036),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-146976,-93344),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  0,
  ABISELECT(-145896,-92648),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A6__8S19763C1[] = {
  0,
  ABISELECT(-147152,-93452),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C21__A2__8S19763C1[] = {
  0,
  ABISELECT(-147296,-93548),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C16D1Ev,_ZThn115408_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C16D0Ev,_ZThn115408_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-181720,-115408),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-181720,-115408),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C16D1Ev,_ZThn115724_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C16D0Ev,_ZThn115724_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-182192,-115724),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-182192,-115724),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C16D1Ev,_ZThn93732_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C16D0Ev,_ZThn93732_N9S19763C16D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-147600,-93732),
  0,
  ABISELECT(-147600,-93732),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-147896,-93916),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-148360,-94224),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A2__8S19763C1[] = {
  0,
  ABISELECT(-146040,-92744),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-147120,-93440),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A2__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-146656,-93132),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-182656,-116016),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A2__8S19763C1[] = {
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn154576_N9S19763C21D1Ev,_ZThn98168_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn154576_N9S19763C21D0Ev,_ZThn98168_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-154576,-98168),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-154576,-98168),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn154656_N9S19763C21D1Ev,_ZThn98216_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn154656_N9S19763C21D0Ev,_ZThn98216_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C21__A__8S19763C1[] = {
  0,
  ABISELECT(-154656,-98216),
  0,
  ABISELECT(-154656,-98216),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C21__A__8S19763C1[] = {
  0,
  ABISELECT(-146040,-92744),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn155296_N9S19763C21D1Ev,_ZThn98616_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn155296_N9S19763C21D0Ev,_ZThn98616_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-155296,-98616),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-155296,-98616),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C21__A__8S19763C1[] = {
  0,
  ABISELECT(-147296,-93548),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C21D1Ev,_ZThn93732_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn147600_N9S19763C21D0Ev,_ZThn93732_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C21__A__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-147600,-93732),
  0,
  ABISELECT(-147600,-93732),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-147896,-93916),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-148360,-94224),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-147120,-93440),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn161696_N9S19763C21D1Ev,_ZThn102668_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn161696_N9S19763C21D0Ev,_ZThn102668_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21__A__8S19763C1[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-161696,-102668),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-161696,-102668),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C21__A__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-146656,-93132),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C21D1Ev,_ZThn115408_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn181720_N9S19763C21D0Ev,_ZThn115408_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-181720,-115408),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-181720,-115408),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C21D1Ev,_ZThn115724_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn182192_N9S19763C21D0Ev,_ZThn115724_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-182192,-115724),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-182192,-115724),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-182656,-116016),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-162160,-102960),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-162304,-103056),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__A__8S19763C1[] = {
  ABISELECT(-162768,-103348),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21__A__8S19763C1[] = {
  ABISELECT(147152,93452),
  ABISELECT(145896,92648),
  ABISELECT(146976,93344),
  ABISELECT(146512,93036),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__8S19763C1[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C7__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C7__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C7__8S19763C1[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C7__8S19763C1[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C1[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__8S19763C8__8S19763C1[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S19763C8[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C21D1Ev();
extern void _ZN9S19763C21D0Ev();
extern void _ZN9S19763C163v13Ev();
extern void _ZN9S19763C213v16Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C21__8S19763C1[] = {
  ABISELECT(9968,6316),
  ABISELECT(3568,2264),
  ABISELECT(2928,1864),
  ABISELECT(2848,1816),
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C21D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
  (VTBL_ENTRY)&_ZN9S19763C213v16Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-5072,-3220),
  ABISELECT(-4608,-2912),
  ABISELECT(-5688,-3608),
  ABISELECT(-4128,-2620),
  ABISELECT(30464,19372),
  ABISELECT(29992,19056),
  ABISELECT(-4432,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(5216,3316),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4752,3008),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  0,
  ABISELECT(5832,3704),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__8S19763C1[] = {
  0,
  ABISELECT(4576,2900),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C21__A1__8S19763C1[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__8S19763C1[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C22__9S19763C21__8S19763C1[] = {
  ABISELECT(-2848,-1816),
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  ABISELECT(-2848,-1816),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C21__8S19763C1[] = {
  0,
  ABISELECT(-2928,-1864),
  0,
  ABISELECT(-2928,-1864),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C21__8S19763C1[] = {
  0,
  ABISELECT(5688,3608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C21__8S19763C1[] = {
  ABISELECT(-3568,-2264),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-3568,-2264),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C21__8S19763C1[] = {
  0,
  ABISELECT(4432,2804),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C21__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4128,2620),
  0,
  ABISELECT(4128,2620),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C21__8S19763C1[] = {
  ABISELECT(3832,2436),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C21__8S19763C1[] = {
  ABISELECT(3368,2128),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C21__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(4608,2912),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C19__9S19763C21__8S19763C1[] = {
  ABISELECT(1072,680),
  ABISELECT(1072,680),
  ABISELECT(464,292),
  ABISELECT(-9968,-6316),
  0,
  0,
  0,
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  ABISELECT(-9968,-6316),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C21__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(5072,3220),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C21__8S19763C1[] = {
  ABISELECT(-29992,-19056),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-29992,-19056),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev)();
extern void ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C21__8S19763C1[] = {
  ABISELECT(-30464,-19372),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-30464,-19372),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A1__9S19763C21__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-30928,-19664),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D1Ev,_ZTvn292_n40_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C21D0Ev,_ZTvn292_n40_N9S19763C21D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__9S19763C21__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-10432,-6608),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D1Ev,_ZTvn292_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n104_N9S19763C21D0Ev,_ZTvn292_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-10576,-6704),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev)();
extern void ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev)();
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__8S19763C1[] = {
  ABISELECT(-11040,-6996),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D1Ev,_ZTvn680_n52_N9S19763C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1072_n104_N9S19763C21D0Ev,_ZTvn680_n52_N9S19763C21D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A3__9S19763C21__8S19763C1[] = {
  ABISELECT(-4576,-2900),
  ABISELECT(-5832,-3704),
  ABISELECT(-4752,-3008),
  ABISELECT(-5216,-3316),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C21[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN9S19763C22D1Ev();
extern void _ZN9S19763C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C22__8S19763C1[] = {
  ABISELECT(-7456,-4728),
  ABISELECT(-6976,-4436),
  ABISELECT(-7280,-4620),
  ABISELECT(720,448),
  ABISELECT(-8536,-5424),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN9S19763C22D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C22D0Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev)() __attribute__((weak));
extern void _ZN9S19763C133v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C13__9S19763C22__8S19763C1[] = {
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C133v12Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__9S19763C22__8S19763C1[] = {
  0,
  ABISELECT(8536,5424),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev)();
extern void ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C22__8S19763C1[] = {
  ABISELECT(-720,-448),
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  ABISELECT(-720,-448),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev),
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C22__8S19763C1[] = {
  0,
  ABISELECT(7280,4620),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C22__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(6976,4436),
  0,
  ABISELECT(6976,4436),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C22__8S19763C1[] = {
  ABISELECT(6680,4252),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C22__8S19763C1[] = {
  ABISELECT(6216,3944),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C22__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(7456,4728),
  (VTBL_ENTRY)&(_ZTI9S19763C22[0]),
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C12__A1__8S19763C1[] = {
  ABISELECT(-8176,-5176),
  ABISELECT(-9256,-5872),
  ABISELECT(-7696,-4884),
  ABISELECT(-8000,-5068),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C12__A1__8S19763C1[] = {
  0,
  ABISELECT(8000,5068),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(7696,4884),
  0,
  ABISELECT(7696,4884),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(7400,4700),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(6936,4392),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C12__A1__8S19763C1[] = {
  0,
  ABISELECT(9256,5872),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C12__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(8176,5176),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C193v14Ev();
extern void _ZN9S19763C193v15Ev();
extern void _ZN9S19763C19D1Ev();
extern void _ZN9S19763C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C19__8S19763C1[] = {
  ABISELECT(-14096,-8936),
  ABISELECT(20496,13056),
  ABISELECT(20024,12740),
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19763C193v15Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C19D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C19__A2__8S19763C1[] = {
  ABISELECT(-14400,-9120),
  ABISELECT(-15656,-9924),
  ABISELECT(-14576,-9228),
  ABISELECT(-15040,-9536),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C19__A2__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C19__A2__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__8S19763C1[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C19__A2__8S19763C1[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C16D1Ev();
extern void _ZN9S19763C16D0Ev();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C16D0Ev,
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15648,9924),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15184,9616),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  0,
  ABISELECT(16264,10312),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__8S19763C1[] = {
  0,
  ABISELECT(15008,9508),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C169S19763C19__8S19763C1[] = {
  0,
  ABISELECT(14864,9412),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-19560,-12448),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev)();
extern void ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-20032,-12764),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20032,-12764),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14560,9228),
  0,
  ABISELECT(14560,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(14264,9044),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(13800,8736),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A2__9S19763C169S19763C19__8S19763C1[] = {
  0,
  ABISELECT(16120,10216),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(15040,9520),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C169S19763C19__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15504,9828),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D1Ev,_ZTvn292_n40_N9S19763C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C16D0Ev,_ZTvn292_n40_N9S19763C16D0Ev),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C7__A1__9S19763C169S19763C19__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S19763C16[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__9S19763C19__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(15040,9536),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C19__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(14576,9228),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C19__8S19763C1[] = {
  0,
  ABISELECT(15656,9924),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C19__8S19763C1[] = {
  0,
  ABISELECT(14400,9120),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C15__9S19763C19__8S19763C1[] = {
  ABISELECT(-20024,-12740),
  0,
  0,
  0,
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev)();
extern void ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C19__8S19763C1[] = {
  ABISELECT(-20496,-13056),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-20496,-13056),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C19__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(14096,8936),
  0,
  ABISELECT(14096,8936),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D1Ev,_ZTv0_n16_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C19D0Ev,_ZTv0_n16_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A2__9S19763C19__8S19763C1[] = {
  ABISELECT(13800,8752),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__A2__9S19763C19__8S19763C1[] = {
  ABISELECT(13336,8444),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C19__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-20960,-13348),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D1Ev,_ZTvn292_n40_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C19D0Ev,_ZTvn292_n40_N9S19763C19D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev)();
extern void _ZN9S19763C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C16__9S19763C19__8S19763C1[] = {
  ABISELECT(-15504,-9828),
  ABISELECT(-15040,-9520),
  ABISELECT(-16120,-10216),
  ABISELECT(-14560,-9228),
  ABISELECT(20032,12764),
  ABISELECT(19560,12448),
  ABISELECT(-14864,-9412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D1Ev,_ZThn292_N9S19763C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C19D0Ev,_ZThn292_N9S19763C19D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C163v13Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C16__A2__9S19763C19__8S19763C1[] = {
  ABISELECT(-15008,-9508),
  ABISELECT(-16264,-10312),
  ABISELECT(-15184,-9616),
  ABISELECT(-15648,-9924),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S19763C19[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
extern void _ZN9S19763C15D1Ev();
extern void _ZN9S19763C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C15__8S19763C1[] = {
  ABISELECT(-35064,-22276),
  ABISELECT(-34600,-21968),
  ABISELECT(-35680,-22664),
  ABISELECT(-34120,-21676),
  ABISELECT(472,316),
  ABISELECT(-34424,-21860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C15D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C15__8S19763C1[] = {
  0,
  ABISELECT(34424,21860),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19763C11__9S19763C15__8S19763C1[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C15__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34120,21676),
  0,
  ABISELECT(34120,21676),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D1Ev,_ZTv0_n16_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C15D0Ev,_ZTv0_n16_N9S19763C15D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C1[] = {
  ABISELECT(33824,21492),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C1[] = {
  ABISELECT(33360,21184),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C15__8S19763C1[] = {
  0,
  ABISELECT(35680,22664),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C15__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(34600,21968),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A2__9S19763C15__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(35064,22276),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S19763C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D1Ev,_ZTvn292_n40_N9S19763C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S19763C15D0Ev,_ZTvn292_n40_N9S19763C15D0Ev),
};
extern void _ZN8S19763C52v3Ev();
extern void _ZN9S19763C112v9Ev();
extern void _ZN9S19763C11D1Ev();
extern void _ZN9S19763C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C11__A1__8S19763C1[] = {
  ABISELECT(-34592,-21992),
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
  (VTBL_ENTRY)&_ZN9S19763C112v9Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C11D0Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C79S19763C11__A3__8S19763C1[] = {
  ABISELECT(-34896,-22176),
  ABISELECT(-36152,-22980),
  ABISELECT(-35072,-22284),
  ABISELECT(-35536,-22592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__8S19763C79S19763C11__A3__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__8S19763C79S19763C11__A3__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__8S19763C1[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__8S19763C79S19763C11__A3__8S19763C1[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI8S19763C7[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN9S19763C12D1Ev();
extern void _ZN9S19763C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  0,
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN9S19763C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19763C12D0Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__9S19763C129S19763C11__A2__8S19763C1[] = {
  0,
  ABISELECT(35360,22468),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(35056,22284),
  0,
  ABISELECT(35056,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(34760,22100),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(34296,21792),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__8S19763C1[] = {
  0,
  ABISELECT(36616,23272),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C129S19763C11__A2__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35536,22576),
  (VTBL_ENTRY)&(_ZTI9S19763C12[0]),
};
extern void _ZN8S19763C92v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev)();
extern void _ZN9S19763C102v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19763C10__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(34592,21992),
  0,
  ABISELECT(34592,21992),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19763C102v8Ev,
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(34296,21808),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(33832,21500),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
extern void _ZN8S19763C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C1[] = {
  0,
  ABISELECT(36152,22980),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C52v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19763C8__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(-1080,-696),
  ABISELECT(35072,22284),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
};
extern void _ZN8S19763C42v4Ev();
extern void _ZN8S19763C42v5Ev();
extern void _ZN8S19763C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C1[] = {
  0,
  0,
  0,
  ABISELECT(35536,22592),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C42v4Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19763C42v6Ev,
};
extern void _ZN8S19763C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C1[] = {
  0,
  ABISELECT(34896,22176),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&_ZN8S19763C92v7Ev,
};
extern void ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19763C12__9S19763C11__A1__8S19763C1[] = {
  ABISELECT(-35536,-22576),
  ABISELECT(-36616,-23272),
  ABISELECT(-35056,-22284),
  ABISELECT(-35360,-22468),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19763C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D1Ev,_ZThn292_N9S19763C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S19763C11D0Ev,_ZThn292_N9S19763C11D0Ev),
};
static  VTT_ENTRY vtt_S19763C1[] = {
  {&(_ZTV8S19763C1[18]),  18,297},
  {&(_tg__ZTV9S19763C20__8S19763C1[16]),  16,22},
  {&(_tg__ZTV8S19763C69S19763C20__8S19763C1[8]),  8,14},
  {&(_tg__ZTV9S19763C118S19763C69S19763C20__8S19763C1[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C118S19763C69S19763C20__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C118S19763C69S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C118S19763C69S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C118S19763C69S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C118S19763C69S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C118S19763C69S19763C20__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C118S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C118S19763C69S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C5__8S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C7__8S19763C69S19763C20__8S19763C1[7]),  7,8},
  {&(_tg__ZTV8S19763C4__8S19763C69S19763C20__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C69S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C9__8S19763C69S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C11__8S19763C69S19763C20__8S19763C1[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__8S19763C69S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__8S19763C69S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__8S19763C69S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__8S19763C69S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C5__9S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C7__9S19763C20__8S19763C1[7]),  7,8},
  {&(_tg__ZTV8S19763C4__9S19763C20__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C20__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C9__9S19763C20__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C118S19763C6__9S19763C20__8S19763C1[7]),  7,11},
  {&(_tg__ZTV9S19763C10__A1__9S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C20__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A3__9S19763C20__8S19763C1[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C118S19763C6__9S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C21__9S19763C20__8S19763C1[19]),  19,24},
  {&(_tg__ZTV9S19763C22__9S19763C20__8S19763C1[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C20__8S19763C1[5]),  5,9},
  {&(_tg__ZTV9S19763C12__A1__9S19763C20__8S19763C1[7]),  7,9},
  {&(_tg__ZTV9S19763C19__9S19763C20__8S19763C1[16]),  16,21},
  {&(_tg__ZTV9S19763C15__9S19763C20__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__A1__9S19763C20__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A2__9S19763C20__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C20__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A4__9S19763C20__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C20__8S19763C1[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A5__9S19763C20__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C21__A2__9S19763C20__8S19763C1[2]),  2,6},
  {&(_tg__ZTV9S19763C24__9S19763C20__8S19763C1[4]),  4,6},
  {&(_tg__ZTV9S19763C21__A__8S19763C1[13]),  13,18},
  {&(_tg__ZTV9S19763C169S19763C21__A2__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A6__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A6__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A6__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A6__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A6__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C21__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C21__A2__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C21__A2__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C21__A2__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A2__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C21__A2__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A2__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A2__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A2__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C21__A__8S19763C1[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C21__A__8S19763C1[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C21__A__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C21__A__8S19763C1[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C21__A__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C21__A__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C21__A__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C21__A__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C21__A__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C21__A__8S19763C1[16]),  16,21},
  {&(_tg__ZTV8S19763C4__A1__9S19763C21__A__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C15__9S19763C21__A__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C21__A__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21__A__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21__A__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__A__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__A__8S19763C1[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21__A__8S19763C1[6]),  6,7},
  {&(_ZTV8S19763C1[90]),  90,297},
  {&(_ZTV8S19763C1[94]),  94,297},
  {&(_ZTV8S19763C1[102]),  102,297},
  {&(_ZTV8S19763C1[108]),  108,297},
  {&(_ZTV8S19763C1[114]),  114,297},
  {&(_ZTV8S19763C1[117]),  117,297},
  {&(_ZTV8S19763C1[40]),  40,297},
  {&(_ZTV8S19763C1[127]),  127,297},
  {&(_ZTV8S19763C1[133]),  133,297},
  {&(_ZTV8S19763C1[138]),  138,297},
  {&(_ZTV8S19763C1[50]),  50,297},
  {&(_ZTV8S19763C1[158]),  158,297},
  {&(_ZTV8S19763C1[185]),  185,297},
  {&(_ZTV8S19763C1[192]),  192,297},
  {&(_ZTV8S19763C1[203]),  203,297},
  {&(_ZTV8S19763C1[221]),  221,297},
  {&(_ZTV8S19763C1[264]),  264,297},
  {&(_ZTV8S19763C1[279]),  279,297},
  {&(_ZTV8S19763C1[289]),  289,297},
  {&(_ZTV8S19763C1[235]),  235,297},
  {&(_ZTV8S19763C1[245]),  245,297},
  {&(_ZTV8S19763C1[248]),  248,297},
  {&(_ZTV8S19763C1[169]),  169,297},
  {&(_ZTV8S19763C1[172]),  172,297},
  {&(_ZTV8S19763C1[295]),  295,297},
  {&(_ZTV8S19763C1[69]),  69,297},
  {&(_ZTV8S19763C1[80]),  80,297},
  {&(_tg__ZTV8S19763C7__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C7__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C7__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C7__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C7__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__8S19763C8__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C21__8S19763C1[13]),  13,18},
  {&(_tg__ZTV9S19763C169S19763C21__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C21__A5__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C21__A5__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C21__A5__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C21__A5__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C21__A5__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C21__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C21__A1__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C21__A1__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C21__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C21__A1__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C21__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C21__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C21__A1__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C21__A1__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C21__A1__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C22__9S19763C21__8S19763C1[9]),  9,11},
  {&(_tg__ZTV9S19763C13__9S19763C21__8S19763C1[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C21__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C21__8S19763C1[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C21__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C21__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C21__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C21__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C21__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C19__9S19763C21__8S19763C1[16]),  16,21},
  {&(_tg__ZTV8S19763C4__A1__9S19763C21__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C15__9S19763C21__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C21__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C129S19763C11__A1__9S19763C21__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C169S19763C19__9S19763C21__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A2__9S19763C21__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C139S19763C169S19763C19__A1__9S19763C21__8S19763C1[2]),  2,6},
  {&(_tg__ZTV8S19763C79S19763C16__A3__9S19763C21__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C22__8S19763C1[8]),  8,10},
  {&(_tg__ZTV9S19763C13__9S19763C22__8S19763C1[5]),  5,9},
  {&(_tg__ZTV8S19763C5__9S19763C22__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C22__8S19763C1[7]),  7,9},
  {&(_tg__ZTV8S19763C9__A1__9S19763C22__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C22__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C22__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C22__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C8__9S19763C22__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C12__A1__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C12__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C12__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C12__A1__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C12__A1__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C12__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C12__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C19__8S19763C1[9]),  9,14},
  {&(_tg__ZTV8S19763C79S19763C19__A2__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C19__A2__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C19__A2__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C19__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C19__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C169S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C169S19763C19__A4__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C169S19763C19__A4__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C169S19763C19__A4__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C169S19763C19__A4__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C169S19763C19__A4__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C169S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C169S19763C19__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C169S19763C19__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C169S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C169S19763C19__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A1__9S19763C169S19763C19__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A2__9S19763C169S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C169S19763C19__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C169S19763C19__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C169S19763C19__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C7__A1__9S19763C169S19763C19__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__9S19763C19__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__9S19763C19__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__9S19763C19__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C15__9S19763C19__8S19763C1[12]),  12,17},
  {&(_tg__ZTV9S19763C11__9S19763C19__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A2__9S19763C19__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__A2__9S19763C19__8S19763C1[2]),  2,3},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C19__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C16__9S19763C19__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C79S19763C16__A2__9S19763C19__8S19763C1[6]),  6,7},
  {&(_tg__ZTV9S19763C15__8S19763C1[8]),  8,13},
  {&(_tg__ZTV8S19763C9__9S19763C15__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C11__9S19763C15__8S19763C1[10]),  10,14},
  {&(_tg__ZTV9S19763C10__9S19763C15__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__A1__9S19763C15__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C15__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C15__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C15__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A2__9S19763C15__8S19763C1[5]),  5,8},
  {&(_tg__ZTV9S19763C129S19763C11__9S19763C15__8S19763C1[6]),  6,8},
  {&(_tg__ZTV9S19763C11__A1__8S19763C1[7]),  7,11},
  {&(_tg__ZTV8S19763C79S19763C11__A3__8S19763C1[6]),  6,7},
  {&(_tg__ZTV8S19763C4__8S19763C79S19763C11__A3__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C8__8S19763C79S19763C11__A3__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C5__A1__8S19763C79S19763C11__A3__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C9__8S19763C79S19763C11__A3__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C129S19763C11__A2__8S19763C1[6]),  6,8},
  {&(_tg__ZTV8S19763C9__9S19763C129S19763C11__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C10__9S19763C129S19763C11__A2__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C129S19763C11__A2__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C129S19763C11__A2__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C129S19763C11__A2__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C129S19763C11__A2__8S19763C1[3]),  3,3},
  {&(_tg__ZTV9S19763C10__9S19763C11__A1__8S19763C1[9]),  9,13},
  {&(_tg__ZTV8S19763C49S19763C10__9S19763C11__A1__8S19763C1[2]),  2,5},
  {&(_tg__ZTV8S19763C59S19763C10__9S19763C11__A1__8S19763C1[2]),  2,3},
  {&(_tg__ZTV8S19763C5__A1__9S19763C11__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV8S19763C8__9S19763C11__A1__8S19763C1[3]),  3,3},
  {&(_tg__ZTV8S19763C4__A1__9S19763C11__A1__8S19763C1[5]),  5,8},
  {&(_tg__ZTV8S19763C9__A1__9S19763C11__A1__8S19763C1[3]),  3,4},
  {&(_tg__ZTV9S19763C12__9S19763C11__A1__8S19763C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S19763C1[];
extern  VTBL_ENTRY _ZTV8S19763C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19763C1[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D0Ev,_ZTv0_n40_N9S19763C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D0Ev,_ZThn316_N9S19763C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C15D1Ev,_ZTv0_n40_N9S19763C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S19763C15D1Ev,_ZThn316_N9S19763C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D0Ev,_ZTv0_n40_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D0Ev,_ZThn13056_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C19D1Ev,_ZTv0_n40_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20496_N9S19763C19D1Ev,_ZThn13056_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D0Ev,_ZTv0_n48_N9S19763C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D0Ev,_ZThn12740_N9S19763C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C19D1Ev,_ZTv0_n48_N9S19763C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20024_N9S19763C19D1Ev,_ZThn12740_N9S19763C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D0Ev,_ZTv0_n28_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D0Ev,_ZThn448_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C22D1Ev,_ZTv0_n28_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19763C22D1Ev,_ZThn448_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D0Ev,_ZTv0_n16_N9S19763C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D0Ev,_ZThn48_N9S19763C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C22D1Ev,_ZTv0_n16_N9S19763C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19763C22D1Ev,_ZThn48_N9S19763C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D0Ev,_ZTv0_n40_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D0Ev,_ZThn19372_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C21D0Ev,_ZThn115724_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C21D1Ev,_ZTv0_n40_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C21D1Ev,_ZThn19372_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C21D1Ev,_ZThn115724_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D0Ev,_ZTv0_n48_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D0Ev,_ZThn19056_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C21D0Ev,_ZThn115408_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C21D1Ev,_ZTv0_n48_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C21D1Ev,_ZThn19056_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C21D1Ev,_ZThn115408_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D0Ev,_ZTv0_n52_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D0Ev,_ZThn6316_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn161696_N9S19763C21D0Ev,_ZThn102668_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C21D1Ev,_ZTv0_n52_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn9968_N9S19763C21D1Ev,_ZThn6316_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn161696_N9S19763C21D1Ev,_ZThn102668_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D0Ev,_ZTv0_n28_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D0Ev,_ZThn2264_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn155296_N9S19763C21D0Ev,_ZThn98616_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C21D1Ev,_ZTv0_n28_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3568_N9S19763C21D1Ev,_ZThn2264_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn155296_N9S19763C21D1Ev,_ZThn98616_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D0Ev,_ZTv0_n16_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D0Ev,_ZThn1864_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C21D0Ev,_ZThn93732_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154656_N9S19763C21D0Ev,_ZThn98216_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C21D1Ev,_ZTv0_n16_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N9S19763C21D1Ev,_ZThn1864_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C21D1Ev,_ZThn93732_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154656_N9S19763C21D1Ev,_ZThn98216_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D0Ev,_ZTv0_n36_N9S19763C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D0Ev,_ZThn1816_N9S19763C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154576_N9S19763C21D0Ev,_ZThn98168_N9S19763C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C21D1Ev,_ZTv0_n36_N9S19763C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2848_N9S19763C21D1Ev,_ZThn1816_N9S19763C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn154576_N9S19763C21D1Ev,_ZThn98168_N9S19763C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D0Ev,_ZTv0_n16_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C16D0Ev,_ZThn93732_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C16D1Ev,_ZTv0_n16_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147600_N9S19763C16D1Ev,_ZThn93732_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D0Ev,_ZTv0_n40_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D0Ev,_ZThn12764_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D0Ev,_ZThn19372_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C16D0Ev,_ZThn115724_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C16D1Ev,_ZTv0_n40_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20032_N9S19763C16D1Ev,_ZThn12764_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn30464_N9S19763C16D1Ev,_ZThn19372_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn182192_N9S19763C16D1Ev,_ZThn115724_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D0Ev,_ZTv0_n48_N9S19763C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D0Ev,_ZThn12448_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D0Ev,_ZThn19056_N9S19763C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C16D0Ev,_ZThn115408_N9S19763C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C16D1Ev,_ZTv0_n48_N9S19763C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19560_N9S19763C16D1Ev,_ZThn12448_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn29992_N9S19763C16D1Ev,_ZThn19056_N9S19763C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn181720_N9S19763C16D1Ev,_ZThn115408_N9S19763C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D0Ev,_ZTv0_n40_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N9S19763C20D0Ev,_ZThn133492_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S19763C20D1Ev,_ZTv0_n40_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N9S19763C20D1Ev,_ZThn133492_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D0Ev,_ZTv0_n48_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N9S19763C20D0Ev,_ZThn133176_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S19763C20D1Ev,_ZTv0_n48_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N9S19763C20D1Ev,_ZThn133176_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D0Ev,_ZTv0_n52_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N9S19763C20D0Ev,_ZThn120436_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N9S19763C20D1Ev,_ZTv0_n52_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N9S19763C20D1Ev,_ZThn120436_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D0Ev,_ZTv0_n28_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N9S19763C20D0Ev,_ZThn116384_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19763C20D1Ev,_ZTv0_n28_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N9S19763C20D1Ev,_ZThn116384_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D0Ev,_ZTv0_n36_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N9S19763C20D0Ev,_ZThn115936_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19763C20D1Ev,_ZTv0_n36_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N9S19763C20D1Ev,_ZThn115936_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D0Ev,_ZTv0_n60_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N9S19763C20D0Ev,_ZThn114120_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S19763C20D1Ev,_ZTv0_n60_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N9S19763C20D1Ev,_ZThn114120_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D0Ev,_ZTv0_n16_N9S19763C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N9S19763C20D0Ev,_ZThn115984_N9S19763C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N9S19763C20D0Ev,_ZThn111500_N9S19763C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C20D1Ev,_ZTv0_n16_N9S19763C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N9S19763C20D1Ev,_ZThn115984_N9S19763C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N9S19763C20D1Ev,_ZThn111500_N9S19763C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D0Ev,_ZTv0_n16_N8S19763C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C6D0Ev,_ZThn111500_N8S19763C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C6D1Ev,_ZTv0_n16_N8S19763C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C6D1Ev,_ZThn111500_N8S19763C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D0Ev,_ZTv0_n16_N9S19763C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171488_N9S19763C11D0Ev,_ZThn108880_N9S19763C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C11D1Ev,_ZTv0_n16_N9S19763C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171488_N9S19763C11D1Ev,_ZThn108880_N9S19763C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D0Ev,_ZTv0_n16_N9S19763C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171024_N9S19763C12D0Ev,_ZThn108588_N9S19763C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19763C12D1Ev,_ZTv0_n16_N9S19763C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn171024_N9S19763C12D1Ev,_ZThn108588_N9S19763C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C1D0Ev,_ZTv0_n40_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N8S19763C1D0Ev,_ZThn133492_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19763C1D1Ev,_ZTv0_n40_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn210208_N8S19763C1D1Ev,_ZThn133492_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C1D0Ev,_ZTv0_n48_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N8S19763C1D0Ev,_ZThn133176_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19763C1D1Ev,_ZTv0_n48_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn209736_N8S19763C1D1Ev,_ZThn133176_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19763C1D0Ev,_ZTv0_n52_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N8S19763C1D0Ev,_ZThn120436_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19763C1D1Ev,_ZTv0_n52_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn189712_N8S19763C1D1Ev,_ZThn120436_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19763C1D0Ev,_ZTv0_n28_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N8S19763C1D0Ev,_ZThn116384_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19763C1D1Ev,_ZTv0_n28_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183312_N8S19763C1D1Ev,_ZThn116384_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19763C1D0Ev,_ZTv0_n36_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N8S19763C1D0Ev,_ZThn115936_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19763C1D1Ev,_ZTv0_n36_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182592_N8S19763C1D1Ev,_ZThn115936_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19763C1D0Ev,_ZTv0_n60_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N8S19763C1D0Ev,_ZThn114120_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S19763C1D1Ev,_ZTv0_n60_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn179744_N8S19763C1D1Ev,_ZThn114120_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C1D0Ev,_ZTv0_n16_N8S19763C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N8S19763C1D0Ev,_ZThn115984_N8S19763C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C1D0Ev,_ZThn111500_N8S19763C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19763C1D1Ev,_ZTv0_n16_N8S19763C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn182672_N8S19763C1D1Ev,_ZThn115984_N8S19763C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn175616_N8S19763C1D1Ev,_ZThn111500_N8S19763C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19763C1 = {  "S19763C1", // class name
  bases_S19763C1, 57,
  &(vtc_S19763C1[0]), // expected_vtbl_contents
  &(vtt_S19763C1[0]), // expected_vtt_contents
  ABISELECT(221280,140512), // object size
  NSPAIRA(_ZTI8S19763C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19763C1),297, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19763C1),246, //virtual table table var
  56, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C5  {
  short s6003c5f0:6;
  long s6003c5f1;
  short s6003c5f2:4;
  __tsi64 s6003c5f3[6];
  long s6003c5f4[7];
  void *s6003c5f5;
  virtual void  v5(); // _ZN7S6003C52v5Ev
  ~S6003C5(); // tgen
  S6003C5(); // tgen
};
//SIG(-1 S6003C5) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S6003C5 ::v5(){vfunc_called(this, "_ZN7S6003C52v5Ev");}
S6003C5 ::~S6003C5(){ note_dtor("S6003C5", this);} // tgen
S6003C5 ::S6003C5(){ note_ctor("S6003C5", this);} // tgen

static void Test_S6003C5()
{
  extern Class_Descriptor cd_S6003C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S6003C5, buf);
    S6003C5 *dp, &lv = *(dp=new (buf) S6003C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S6003C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6003C5)");
    set_bf_and_test(lv, s6003c5f0, ABISELECT(8,4), 0, 6, 1, "S6003C5");
    set_bf_and_test(lv, s6003c5f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S6003C5");
    check_field_offset(lv, s6003c5f1, ABISELECT(16,8), "S6003C5.s6003c5f1");
    set_bf_and_test(lv, s6003c5f2, ABISELECT(24,12), 0, 4, 1, "S6003C5");
    set_bf_and_test(lv, s6003c5f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S6003C5");
    check_field_offset(lv, s6003c5f3, ABISELECT(32,16), "S6003C5.s6003c5f3");
    check_field_offset(lv, s6003c5f4, ABISELECT(80,64), "S6003C5.s6003c5f4");
    check_field_offset(lv, s6003c5f5, ABISELECT(136,92), "S6003C5.s6003c5f5");
    test_class_info(&lv, &cd_S6003C5);
    dp->~S6003C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C5(Test_S6003C5, "S6003C5", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN7S6003C5C1Ev();
extern void _ZN7S6003C5D1Ev();
Name_Map name_map_S6003C5[] = {
  NSPAIR(_ZN7S6003C5C1Ev),
  NSPAIR(_ZN7S6003C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6003C5[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C5[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
Class_Descriptor cd_S6003C5 = {  "S6003C5", // class name
  0,0,//no base classes
  &(vtc_S6003C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI7S6003C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6003C5),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  S6003C4  {
  int s6003c4f0[2];
  long s6003c4f1[2];
  ::S6003C5 s6003c4f2[3];
  virtual void  v2(); // _ZN7S6003C42v2Ev
  virtual void  v3(); // _ZN7S6003C42v3Ev
  virtual void  v4(); // _ZN7S6003C42v4Ev
  ~S6003C4(); // tgen
  S6003C4(); // tgen
};
//SIG(-1 S6003C4) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S6003C4 ::v2(){vfunc_called(this, "_ZN7S6003C42v2Ev");}
void  S6003C4 ::v3(){vfunc_called(this, "_ZN7S6003C42v3Ev");}
void  S6003C4 ::v4(){vfunc_called(this, "_ZN7S6003C42v4Ev");}
S6003C4 ::~S6003C4(){ note_dtor("S6003C4", this);} // tgen
S6003C4 ::S6003C4(){ note_ctor("S6003C4", this);} // tgen

static void Test_S6003C4()
{
  extern Class_Descriptor cd_S6003C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S6003C4, buf);
    S6003C4 *dp, &lv = *(dp=new (buf) S6003C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S6003C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6003C4)");
    check_field_offset(lv, s6003c4f0, ABISELECT(8,4), "S6003C4.s6003c4f0");
    check_field_offset(lv, s6003c4f1, ABISELECT(16,12), "S6003C4.s6003c4f1");
    check_field_offset(lv, s6003c4f2, ABISELECT(32,20), "S6003C4.s6003c4f2");
    test_class_info(&lv, &cd_S6003C4);
    dp->~S6003C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C4(Test_S6003C4, "S6003C4", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S6003C4C1Ev();
extern void _ZN7S6003C4D1Ev();
Name_Map name_map_S6003C4[] = {
  NSPAIR(_ZN7S6003C4C1Ev),
  NSPAIR(_ZN7S6003C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6003C4[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY vtc_S6003C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C4[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
Class_Descriptor cd_S6003C4 = {  "S6003C4", // class name
  0,0,//no base classes
  &(vtc_S6003C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S6003C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6003C4),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  S6003C9  {
  __tsi64 s6003c9f0;
  long double s6003c9f1;
  void *s6003c9f2;
  char s6003c9f3;
  ::S6003C5 s6003c9f4;
  void *s6003c9f5[2];
  long s6003c9f6[8];
  short s6003c9f7;
  void *s6003c9f8;
  __tsi64 s6003c9f9:64;
  virtual void  v1(); // _ZN7S6003C92v1Ev
  ~S6003C9(); // tgen
  S6003C9(); // tgen
};
//SIG(-1 S6003C9) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S6003C9 ::v1(){vfunc_called(this, "_ZN7S6003C92v1Ev");}
S6003C9 ::~S6003C9(){ note_dtor("S6003C9", this);} // tgen
S6003C9 ::S6003C9(){ note_ctor("S6003C9", this);} // tgen

static void Test_S6003C9()
{
  extern Class_Descriptor cd_S6003C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S6003C9, buf);
    S6003C9 *dp, &lv = *(dp=new (buf) S6003C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S6003C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C9)");
    check_field_offset(lv, s6003c9f0, ABISELECT(8,4), "S6003C9.s6003c9f0");
    check_field_offset(lv, s6003c9f1, ABISELECT(16,12), "S6003C9.s6003c9f1");
    check_field_offset(lv, s6003c9f2, ABISELECT(32,24), "S6003C9.s6003c9f2");
    check_field_offset(lv, s6003c9f3, ABISELECT(40,28), "S6003C9.s6003c9f3");
    check_field_offset(lv, s6003c9f4, ABISELECT(48,32), "S6003C9.s6003c9f4");
    check_field_offset(lv, s6003c9f5, ABISELECT(192,128), "S6003C9.s6003c9f5");
    check_field_offset(lv, s6003c9f6, ABISELECT(208,136), "S6003C9.s6003c9f6");
    check_field_offset(lv, s6003c9f7, ABISELECT(272,168), "S6003C9.s6003c9f7");
    check_field_offset(lv, s6003c9f8, ABISELECT(280,172), "S6003C9.s6003c9f8");
    set_bf_and_test(lv, s6003c9f9, ABISELECT(288,176), 0, 64, 1, "S6003C9");
    set_bf_and_test(lv, s6003c9f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S6003C9");
    test_class_info(&lv, &cd_S6003C9);
    dp->~S6003C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C9(Test_S6003C9, "S6003C9", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN7S6003C9C1Ev();
extern void _ZN7S6003C9D1Ev();
Name_Map name_map_S6003C9[] = {
  NSPAIR(_ZN7S6003C9C1Ev),
  NSPAIR(_ZN7S6003C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6003C9[];
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C9[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
Class_Descriptor cd_S6003C9 = {  "S6003C9", // class name
  0,0,//no base classes
  &(vtc_S6003C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI7S6003C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6003C9),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  S6003C8  : virtual S6003C5 {
  void *s6003c8f0;
  ::S6003C5 s6003c8f1;
  __tsi64 s6003c8f2:3;
  ~S6003C8(); // tgen
  S6003C8(); // tgen
};
//SIG(-1 S6003C8) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S6003C8 ::~S6003C8(){ note_dtor("S6003C8", this);} // tgen
S6003C8 ::S6003C8(){ note_ctor("S6003C8", this);} // tgen

static void Test_S6003C8()
{
  extern Class_Descriptor cd_S6003C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S6003C8, buf);
    S6003C8 *dp, &lv = *(dp=new (buf) S6003C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S6003C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6003C8)");
    check_base_class_offset(lv, (S6003C5*), ABISELECT(168,108), "S6003C8");
    check_field_offset(lv, s6003c8f0, ABISELECT(8,4), "S6003C8.s6003c8f0");
    check_field_offset(lv, s6003c8f1, ABISELECT(16,8), "S6003C8.s6003c8f1");
    set_bf_and_test(lv, s6003c8f2, ABISELECT(160,104), 0, 3, 1, "S6003C8");
    set_bf_and_test(lv, s6003c8f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S6003C8");
    test_class_info(&lv, &cd_S6003C8);
    dp->~S6003C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C8(Test_S6003C8, "S6003C8", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN7S6003C8C1Ev();
extern void _ZN7S6003C8D1Ev();
Name_Map name_map_S6003C8[] = {
  NSPAIR(_ZN7S6003C8C1Ev),
  NSPAIR(_ZN7S6003C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
static Base_Class bases_S6003C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    ABISELECT(168,108), //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 _ZTI7S6003C8[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C8[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S6003C8[];
static  VTT_ENTRY vtt_S6003C8[] = {
  {&(_ZTV7S6003C8[3]),  3,7},
  {&(_ZTV7S6003C8[6]),  6,7},
};
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
Class_Descriptor cd_S6003C8 = {  "S6003C8", // class name
  bases_S6003C8, 1,
  &(vtc_S6003C8[0]), // expected_vtbl_contents
  &(vtt_S6003C8[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI7S6003C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6003C8),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C8),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  S6003C7  : S6003C5 , virtual S6003C4 , virtual S6003C8 , virtual S6003C9 {
  ::S6003C9 s6003c7f0;
  short s6003c7f1;
  int s6003c7f2[2];
  ~S6003C7(); // tgen
  S6003C7(); // tgen
};
//SIG(-1 S6003C7) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S6003C7 ::~S6003C7(){ note_dtor("S6003C7", this);} // tgen
S6003C7 ::S6003C7(){ note_ctor("S6003C7", this);} // tgen

static void Test_S6003C7()
{
  extern Class_Descriptor cd_S6003C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S6003C7, buf);
    S6003C7 *dp, &lv = *(dp=new (buf) S6003C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S6003C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C7)");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), 0, "S6003C7");
    check_base_class_offset(lv, (S6003C4*), ABISELECT(464,292), "S6003C7");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(1096,708), "S6003C7");
    check_base_class_offset(lv, (S6003C8*), ABISELECT(928,600), "S6003C7");
    check_base_class_offset(lv, (S6003C9*), ABISELECT(1248,804), "S6003C7");
    check_field_offset(lv, s6003c7f0, ABISELECT(144,96), "S6003C7.s6003c7f0");
    check_field_offset(lv, s6003c7f1, ABISELECT(448,280), "S6003C7.s6003c7f1");
    check_field_offset(lv, s6003c7f2, ABISELECT(452,284), "S6003C7.s6003c7f2");
    test_class_info(&lv, &cd_S6003C7);
    dp->~S6003C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C7(Test_S6003C7, "S6003C7", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN7S6003C7C1Ev();
extern void _ZN7S6003C7D1Ev();
Name_Map name_map_S6003C7[] = {
  NSPAIR(_ZN7S6003C7C1Ev),
  NSPAIR(_ZN7S6003C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
static Base_Class bases_S6003C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(464,292), //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_S6003C5,    ABISELECT(1096,708), //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_S6003C8,    ABISELECT(928,600), //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_S6003C9,    ABISELECT(1248,804), //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 _ZTI7S6003C7[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C7[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTV7S6003C7[];
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__7S6003C7[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C7[] = {
  {&(_ZTV7S6003C7[6]),  6,26},
  {&(_ZTV7S6003C7[12]),  12,26},
  {&(_ZTV7S6003C7[18]),  18,26},
  {&(_ZTV7S6003C7[21]),  21,26},
  {&(_ZTV7S6003C7[25]),  25,26},
  {&(_tg__ZTV7S6003C8__7S6003C7[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__7S6003C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
Class_Descriptor cd_S6003C7 = {  "S6003C7", // class name
  bases_S6003C7, 5,
  &(vtc_S6003C7[0]), // expected_vtbl_contents
  &(vtt_S6003C7[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI7S6003C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6003C7),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C7),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  S6003C10  : S6003C9 , S6003C4 , S6003C5 {
  long s6003c10f0;
  __tsi64 s6003c10f1;
  void *s6003c10f2[8];
  ::S6003C7 s6003c10f3;
  void *s6003c10f4;
  int s6003c10f5;
  ::S6003C7 s6003c10f6;
  int s6003c10f7;
  virtual  ~S6003C10(); // _ZN8S6003C10D1Ev
  virtual void  v6(); // _ZN8S6003C102v6Ev
  S6003C10(); // tgen
};
//SIG(-1 S6003C10) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S6003C10 ::~S6003C10(){ note_dtor("S6003C10", this);}
void  S6003C10 ::v6(){vfunc_called(this, "_ZN8S6003C102v6Ev");}
S6003C10 ::S6003C10(){ note_ctor("S6003C10", this);} // tgen

static void Test_S6003C10()
{
  extern Class_Descriptor cd_S6003C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S6003C10, buf);
    S6003C10 *dp, &lv = *(dp=new (buf) S6003C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S6003C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C10)");
    check_base_class_offset(lv, (S6003C9*), 0, "S6003C10");
    check_base_class_offset(lv, (S6003C4*), ABISELECT(296,184), "S6003C10");
    check_base_class_offset(lv, (S6003C5*), ABISELECT(760,492), "S6003C10");
    check_field_offset(lv, s6003c10f0, ABISELECT(904,588), "S6003C10.s6003c10f0");
    check_field_offset(lv, s6003c10f1, ABISELECT(912,592), "S6003C10.s6003c10f1");
    check_field_offset(lv, s6003c10f2, ABISELECT(920,600), "S6003C10.s6003c10f2");
    check_field_offset(lv, s6003c10f3, ABISELECT(992,632), "S6003C10.s6003c10f3");
    check_field_offset(lv, s6003c10f4, ABISELECT(2544,1620), "S6003C10.s6003c10f4");
    check_field_offset(lv, s6003c10f5, ABISELECT(2552,1624), "S6003C10.s6003c10f5");
    check_field_offset(lv, s6003c10f6, ABISELECT(2560,1628), "S6003C10.s6003c10f6");
    check_field_offset(lv, s6003c10f7, ABISELECT(4112,2616), "S6003C10.s6003c10f7");
    test_class_info(&lv, &cd_S6003C10);
    dp->~S6003C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C10(Test_S6003C10, "S6003C10", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S6003C10C1Ev();
extern void _ZN8S6003C10D1Ev();
Name_Map name_map_S6003C10[] = {
  NSPAIR(_ZN8S6003C10C1Ev),
  NSPAIR(_ZN8S6003C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
static Base_Class bases_S6003C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(296,184), //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_S6003C5,    ABISELECT(760,492), //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 _ZTI8S6003C10[];
extern void _ZN7S6003C92v1Ev();
extern void _ZN8S6003C10D1Ev();
extern void _ZN8S6003C10D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C10[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN8S6003C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C10D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S6003C10[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S6003C10[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
Class_Descriptor cd_S6003C10 = {  "S6003C10", // class name
  bases_S6003C10, 3,
  &(vtc_S6003C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S6003C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6003C10),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  S6003C13  : S6003C9 {
  ::S6003C8 s6003c13f0;
  int s6003c13f1;
  void *s6003c13f2;
  int s6003c13f3;
  virtual  ~S6003C13(); // _ZN8S6003C13D1Ev
  virtual void  v10(); // _ZN8S6003C133v10Ev
  S6003C13(); // tgen
};
//SIG(-1 S6003C13) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S6003C13 ::~S6003C13(){ note_dtor("S6003C13", this);}
void  S6003C13 ::v10(){vfunc_called(this, "_ZN8S6003C133v10Ev");}
S6003C13 ::S6003C13(){ note_ctor("S6003C13", this);} // tgen

static void Test_S6003C13()
{
  extern Class_Descriptor cd_S6003C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S6003C13, buf);
    S6003C13 *dp, &lv = *(dp=new (buf) S6003C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S6003C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C13)");
    check_base_class_offset(lv, (S6003C9*), 0, "S6003C13");
    check_field_offset(lv, s6003c13f0, ABISELECT(296,184), "S6003C13.s6003c13f0");
    check_field_offset(lv, s6003c13f1, ABISELECT(608,388), "S6003C13.s6003c13f1");
    check_field_offset(lv, s6003c13f2, ABISELECT(616,392), "S6003C13.s6003c13f2");
    check_field_offset(lv, s6003c13f3, ABISELECT(624,396), "S6003C13.s6003c13f3");
    test_class_info(&lv, &cd_S6003C13);
    dp->~S6003C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C13(Test_S6003C13, "S6003C13", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN8S6003C13C1Ev();
extern void _ZN8S6003C13D1Ev();
Name_Map name_map_S6003C13[] = {
  NSPAIR(_ZN8S6003C13C1Ev),
  NSPAIR(_ZN8S6003C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
static Base_Class bases_S6003C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C13[];
extern void _ZN7S6003C92v1Ev();
extern void _ZN8S6003C13D1Ev();
extern void _ZN8S6003C13D0Ev();
extern void _ZN8S6003C133v10Ev();
static  VTBL_ENTRY vtc_S6003C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C13[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN8S6003C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C13D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
};
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
Class_Descriptor cd_S6003C13 = {  "S6003C13", // class name
  bases_S6003C13, 1,
  &(vtc_S6003C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI8S6003C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S6003C13),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  S6003C12  : virtual S6003C9 , virtual S6003C10 , virtual S6003C5 , virtual S6003C8 {
  __tsi64 s6003c12f0:44;
  void *s6003c12f1;
  int s6003c12f2;
  ::S6003C7 s6003c12f3;
  long s6003c12f4[2];
  int s6003c12f5[3];
  ::S6003C10 s6003c12f6;
  char s6003c12f7:7;
  ::S6003C13 s6003c12f8;
  ~S6003C12(); // tgen
  S6003C12(); // tgen
};
//SIG(-1 S6003C12) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL: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}}


S6003C12 ::~S6003C12(){ note_dtor("S6003C12", this);} // tgen
S6003C12 ::S6003C12(){ note_ctor("S6003C12", this);} // tgen

static void Test_S6003C12()
{
  extern Class_Descriptor cd_S6003C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S6003C12, buf);
    S6003C12 *dp, &lv = *(dp=new (buf) S6003C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S6003C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C12)");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(6400,4052), "S6003C12");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(6704,4236), "S6003C12");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(7000,4420), "S6003C12");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(7464,4728), "S6003C12");
    check_base_class_offset(lv, (S6003C10*), ABISELECT(6704,4236), "S6003C12");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), ABISELECT(10824,6856), "S6003C12");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(10824,6856), "S6003C12");
    check_base_class_offset(lv, (S6003C8*), ABISELECT(10968,6952), "S6003C12");
    set_bf_and_test(lv, s6003c12f0, ABISELECT(8,4), 0, 44, 1, "S6003C12");
    set_bf_and_test(lv, s6003c12f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S6003C12");
    check_field_offset(lv, s6003c12f1, ABISELECT(16,12), "S6003C12.s6003c12f1");
    check_field_offset(lv, s6003c12f2, ABISELECT(24,16), "S6003C12.s6003c12f2");
    check_field_offset(lv, s6003c12f3, ABISELECT(32,20), "S6003C12.s6003c12f3");
    check_field_offset(lv, s6003c12f4, ABISELECT(1584,1008), "S6003C12.s6003c12f4");
    check_field_offset(lv, s6003c12f5, ABISELECT(1600,1016), "S6003C12.s6003c12f5");
    check_field_offset(lv, s6003c12f6, ABISELECT(1616,1028), "S6003C12.s6003c12f6");
    set_bf_and_test(lv, s6003c12f7, ABISELECT(5744,3648), 0, 7, 1, "S6003C12");
    set_bf_and_test(lv, s6003c12f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S6003C12");
    check_field_offset(lv, s6003c12f8, ABISELECT(5760,3652), "S6003C12.s6003c12f8");
    test_class_info(&lv, &cd_S6003C12);
    dp->~S6003C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C12(Test_S6003C12, "S6003C12", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN8S6003C12C1Ev();
extern void _ZN8S6003C12D1Ev();
Name_Map name_map_S6003C12[] = {
  NSPAIR(_ZN8S6003C12C1Ev),
  NSPAIR(_ZN8S6003C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
static Base_Class bases_S6003C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(6400,4052), //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_S6003C9,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6003C4,    ABISELECT(7000,4420), //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_S6003C5,    ABISELECT(7464,4728), //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_S6003C10,    ABISELECT(6704,4236), //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_S6003C5,    ABISELECT(10824,6856), //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_S6003C8,    ABISELECT(10968,6952), //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 _ZTI8S6003C12[];
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn6704_N8S6003C12D1Ev,_ZThn4236_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn6704_N8S6003C12D0Ev,_ZThn4236_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C12[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern VTBL_ENTRY _ZTV8S6003C12[];
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C12[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C12[] = {
  {&(_ZTV8S6003C12[6]),  6,40},
  {&(_ZTV8S6003C12[11]),  11,40},
  {&(_ZTV8S6003C12[21]),  21,40},
  {&(_ZTV8S6003C12[27]),  27,40},
  {&(_ZTV8S6003C12[32]),  32,40},
  {&(_ZTV8S6003C12[36]),  36,40},
  {&(_ZTV8S6003C12[40]),  40,40},
  {&(_tg__ZTV7S6003C8__8S6003C12[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S6003C12D0Ev,_ZThn4236_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N8S6003C12D1Ev,_ZThn4236_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C12 = {  "S6003C12", // class name
  bases_S6003C12, 7,
  &(vtc_S6003C12[0]), // expected_vtbl_contents
  &(vtt_S6003C12[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI8S6003C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6003C12),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C12),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C11  : virtual S6003C10 , virtual S6003C5 , virtual S6003C8 , S6003C7 , S6003C12 {
  ::S6003C10 s6003c11f0;
  __tsi64 s6003c11f1;
  char s6003c11f2:7;
  virtual void  v7(); // _ZN8S6003C112v7Ev
  ~S6003C11(); // tgen
  S6003C11(); // tgen
};
//SIG(-1 S6003C11) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL: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  S6003C11 ::v7(){vfunc_called(this, "_ZN8S6003C112v7Ev");}
S6003C11 ::~S6003C11(){ note_dtor("S6003C11", this);} // tgen
S6003C11 ::S6003C11(){ note_ctor("S6003C11", this);} // tgen

static void Test_S6003C11()
{
  extern Class_Descriptor cd_S6003C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S6003C11, buf);
    S6003C11 *dp, &lv = *(dp=new (buf) S6003C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S6003C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C11)");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(11008,6976), "S6003C11");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(11304,7160), "S6003C11");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(11768,7468), "S6003C11");
    check_base_class_offset(lv, (S6003C10*), ABISELECT(11008,6976), "S6003C11");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*), ABISELECT(11008,6976), "S6003C11");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), ABISELECT(15128,9596), "S6003C11");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(15128,9596), "S6003C11");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*), ABISELECT(15128,9596), "S6003C11");
    check_base_class_offset(lv, (S6003C8*), ABISELECT(15272,9692), "S6003C11");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(15272,9692), "S6003C11");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*), ABISELECT(15272,9692), "S6003C11");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), 0, "S6003C11");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(15440,9800), "S6003C11");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(15904,10108), "S6003C11");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*), ABISELECT(15904,10108), "S6003C11");
    check_base_class_offset(lv, (S6003C7*), 0, "S6003C11");
    check_base_class_offset(lv, (S6003C12*), ABISELECT(464,292), "S6003C11");
    check_field_offset(lv, s6003c11f0, ABISELECT(6864,4344), "S6003C11.s6003c11f0");
    check_field_offset(lv, s6003c11f1, ABISELECT(10992,6964), "S6003C11.s6003c11f1");
    set_bf_and_test(lv, s6003c11f2, ABISELECT(11000,6972), 0, 7, 1, "S6003C11");
    set_bf_and_test(lv, s6003c11f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S6003C11");
    test_class_info(&lv, &cd_S6003C11);
    dp->~S6003C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C11(Test_S6003C11, "S6003C11", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN8S6003C11C1Ev();
extern void _ZN8S6003C11D1Ev();
Name_Map name_map_S6003C11[] = {
  NSPAIR(_ZN8S6003C11C1Ev),
  NSPAIR(_ZN8S6003C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
static Base_Class bases_S6003C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6003C4,    ABISELECT(11304,7160), //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_S6003C5,    ABISELECT(11768,7468), //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_S6003C10,    ABISELECT(11008,6976), //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_S6003C5,    ABISELECT(15128,9596), //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_S6003C8,    ABISELECT(15272,9692), //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_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(15440,9800), //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_S6003C9,    ABISELECT(15904,10108), //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_S6003C7,    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_S6003C12,    ABISELECT(464,292), //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 _ZTI8S6003C11[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C11[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S6003C11[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__8S6003C11[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__8S6003C11[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__8S6003C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__8S6003C11[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__8S6003C11[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C12__8S6003C11[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C12__8S6003C11[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C11[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C11[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C12__8S6003C11[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12__8S6003C11[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C11[] = {
  {&(_ZTV8S6003C11[7]),  7,59},
  {&(_tg__ZTV7S6003C7__8S6003C11[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__8S6003C11[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__8S6003C11[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__8S6003C11[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__8S6003C11[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C12__8S6003C11[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C12__8S6003C11[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C11[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C11[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C12__8S6003C11[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C12__8S6003C11[3]),  3,3},
  {&(_ZTV8S6003C11[28]),  28,59},
  {&(_ZTV8S6003C11[34]),  34,59},
  {&(_ZTV8S6003C11[39]),  39,59},
  {&(_ZTV8S6003C11[43]),  43,59},
  {&(_ZTV8S6003C11[47]),  47,59},
  {&(_ZTV8S6003C11[52]),  52,59},
  {&(_ZTV8S6003C11[58]),  58,59},
  {&(_ZTV8S6003C11[17]),  17,59},
  {&(_tg__ZTV7S6003C8__8S6003C11[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C11 = {  "S6003C11", // class name
  bases_S6003C11, 11,
  &(vtc_S6003C11[0]), // expected_vtbl_contents
  &(vtt_S6003C11[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI8S6003C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6003C11),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C11),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C15  : virtual S6003C9 , S6003C4 , virtual S6003C11 {
  char s6003c15f0:8;
  int s6003c15f1;
  ~S6003C15(); // tgen
  S6003C15(); // tgen
};
//SIG(-1 S6003C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL: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}


S6003C15 ::~S6003C15(){ note_dtor("S6003C15", this);} // tgen
S6003C15 ::S6003C15(){ note_ctor("S6003C15", this);} // tgen

static void Test_S6003C15()
{
  extern Class_Descriptor cd_S6003C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S6003C15, buf);
    S6003C15 *dp, &lv = *(dp=new (buf) S6003C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S6003C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C15)");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(480,316), "S6003C15");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(480,316), "S6003C15");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(480,316), "S6003C15");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*), 0, "S6003C15");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(11792,7476), "S6003C15");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(12088,7660), "S6003C15");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(12552,7968), "S6003C15");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(11792,7476), "S6003C15");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(11792,7476), "S6003C15");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(15912,10096), "S6003C15");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(15912,10096), "S6003C15");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(15912,10096), "S6003C15");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(16056,10192), "S6003C15");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(16056,10192), "S6003C15");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(16056,10192), "S6003C15");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(784,500), "S6003C15");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(16224,10300), "S6003C15");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(784,500), "S6003C15");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(1248,792), "S6003C15");
    check_base_class_offset(lv, (S6003C11*), ABISELECT(784,500), "S6003C15");
    set_bf_and_test(lv, s6003c15f0, ABISELECT(464,308), 0, 8, 1, "S6003C15");
    set_bf_and_test(lv, s6003c15f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S6003C15");
    check_field_offset(lv, s6003c15f1, ABISELECT(468,312), "S6003C15.s6003c15f1");
    test_class_info(&lv, &cd_S6003C15);
    dp->~S6003C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C15(Test_S6003C15, "S6003C15", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN8S6003C15C1Ev();
extern void _ZN8S6003C15D1Ev();
Name_Map name_map_S6003C15[] = {
  NSPAIR(_ZN8S6003C15C1Ev),
  NSPAIR(_ZN8S6003C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
static Base_Class bases_S6003C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(480,316), //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_S6003C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C9,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6003C4,    ABISELECT(12088,7660), //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_S6003C5,    ABISELECT(12552,7968), //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_S6003C10,    ABISELECT(11792,7476), //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_S6003C5,    ABISELECT(15912,10096), //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_S6003C8,    ABISELECT(16056,10192), //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_S6003C5,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(16224,10300), //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_S6003C7,    ABISELECT(784,500), //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_S6003C12,    ABISELECT(1248,792), //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_S6003C11,    ABISELECT(784,500), //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 _ZTI8S6003C15[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn784_N8S6003C15D1Ev,_ZThn500_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn784_N8S6003C15D0Ev,_ZThn500_N8S6003C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn11792_N8S6003C15D1Ev,_ZThn7476_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn11792_N8S6003C15D0Ev,_ZThn7476_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY vtc_S6003C15[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S6003C15[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__8S6003C15[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C15[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C15[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C15[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C15[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C15[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C15[] = {
  {&(_ZTV8S6003C15[8]),  8,75},
  {&(_ZTV8S6003C15[16]),  16,75},
  {&(_ZTV8S6003C15[27]),  27,75},
  {&(_ZTV8S6003C15[48]),  48,75},
  {&(_ZTV8S6003C15[54]),  54,75},
  {&(_ZTV8S6003C15[59]),  59,75},
  {&(_ZTV8S6003C15[63]),  63,75},
  {&(_ZTV8S6003C15[67]),  67,75},
  {&(_ZTV8S6003C15[72]),  72,75},
  {&(_ZTV8S6003C15[37]),  37,75},
  {&(_tg__ZTV8S6003C11__8S6003C15[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__8S6003C15[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C15[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C15[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C15[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C15[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C15[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C15[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C15[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C15[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C15[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C15[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C15[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C15[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C15[6]),  6,8},
  {&(_tg__ZTV7S6003C8__8S6003C15[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S6003C15D0Ev,_ZThn7476_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S6003C15D1Ev,_ZThn7476_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S6003C15D0Ev,_ZThn500_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S6003C15D1Ev,_ZThn500_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C15 = {  "S6003C15", // class name
  bases_S6003C15, 13,
  &(vtc_S6003C15[0]), // expected_vtbl_contents
  &(vtt_S6003C15[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI8S6003C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6003C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C6  : virtual S6003C5 , virtual S6003C7 , S6003C10 , S6003C11 {
  ::S6003C12 s6003c6f0;
  short s6003c6f1;
  __tsi64 s6003c6f2:8;
  virtual void  v8(); // _ZN7S6003C62v8Ev
  virtual void  v9(); // _ZN7S6003C62v9Ev
  ~S6003C6(); // tgen
  S6003C6(); // tgen
};
//SIG(-1 S6003C6) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL: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 FL 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 FL:8}


void  S6003C6 ::v8(){vfunc_called(this, "_ZN7S6003C62v8Ev");}
void  S6003C6 ::v9(){vfunc_called(this, "_ZN7S6003C62v9Ev");}
S6003C6 ::~S6003C6(){ note_dtor("S6003C6", this);} // tgen
S6003C6 ::S6003C6(){ note_ctor("S6003C6", this);} // tgen

static void Test_S6003C6()
{
  extern Class_Descriptor cd_S6003C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S6003C6, buf);
    S6003C6 *dp, &lv = *(dp=new (buf) S6003C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S6003C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C6)");
    /*is_ambiguous_... S6003C6::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), ABISELECT(26280,16660), "S6003C6");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(26280,16660), "S6003C6");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(26280,16660), "S6003C6");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(26280,16660), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(26432,16756), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(26896,17048), "S6003C6");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(26896,17048), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(27360,17356), "S6003C6");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(27360,17356), "S6003C6");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(27360,17356), "S6003C6");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(27360,17356), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(27536,17464), "S6003C6");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(27536,17464), "S6003C6");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(27536,17464), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*), ABISELECT(26432,16756), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), 0, "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(296,184), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(760,492), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C10*), 0, "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(27840,17648), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(28136,17832), "S6003C6");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(28600,18140), "S6003C6");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(27840,17648), "S6003C6");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(27840,17648), "S6003C6");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(4128,2620), "S6003C6");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(4128,2620), "S6003C6");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(4592,2912), "S6003C6");
    check_base_class_offset(lv, (S6003C11*), ABISELECT(4128,2620), "S6003C6");
    check_field_offset(lv, s6003c6f0, ABISELECT(15136,9596), "S6003C6.s6003c6f0");
    check_field_offset(lv, s6003c6f1, ABISELECT(26272,16656), "S6003C6.s6003c6f1");
    set_bf_and_test(lv, s6003c6f2, ABISELECT(26274,16658), 0, 8, 1, "S6003C6");
    set_bf_and_test(lv, s6003c6f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S6003C6");
    test_class_info(&lv, &cd_S6003C6);
    dp->~S6003C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C6(Test_S6003C6, "S6003C6", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN7S6003C6C1Ev();
extern void _ZN7S6003C6D1Ev();
Name_Map name_map_S6003C6[] = {
  NSPAIR(_ZN7S6003C6C1Ev),
  NSPAIR(_ZN7S6003C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
static Base_Class bases_S6003C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    ABISELECT(26280,16660), //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_S6003C5,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(26896,17048), //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_S6003C8,    ABISELECT(27360,17356), //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_S6003C9,    ABISELECT(27536,17464), //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_S6003C7,    ABISELECT(26432,16756), //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_S6003C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(296,184), //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_S6003C5,    ABISELECT(760,492), //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_S6003C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C9,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(28136,17832), //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_S6003C5,    ABISELECT(28600,18140), //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_S6003C10,    ABISELECT(27840,17648), //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_S6003C5,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C7,    ABISELECT(4128,2620), //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_S6003C12,    ABISELECT(4592,2912), //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_S6003C11,    ABISELECT(4128,2620), //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 _ZTI7S6003C6[];
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C6D1Ev();
extern void _ZN7S6003C6D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev)();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn27840_N7S6003C6D1Ev,_ZThn17648_N7S6003C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev)();
extern void ABISELECT(_ZThn27840_N7S6003C6D0Ev,_ZThn17648_N7S6003C6D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C6[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S6003C6[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C6[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__A1__7S6003C6[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__A1__7S6003C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__A1__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__7S6003C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__A1__7S6003C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn23248_N8S6003C12D1Ev,_ZThn14736_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn23248_N8S6003C12D0Ev,_ZThn14736_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn23712_N8S6003C11D1Ev,_ZThn15028_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn23712_N8S6003C11D0Ev,_ZThn15028_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__7S6003C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C6[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C6[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__7S6003C6[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__7S6003C6[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__7S6003C6[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__7S6003C6[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__7S6003C6[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__7S6003C6[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__7S6003C6[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__7S6003C6[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C6[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__7S6003C6[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C6[] = {
  {&(_ZTV7S6003C6[8]),  8,89},
  {&(_tg__ZTV8S6003C11__7S6003C6[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__A1__7S6003C6[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__A1__7S6003C6[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__A1__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__A1__7S6003C6[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C6[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C6[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C6[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C6[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C6[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__7S6003C6[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C6[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C6[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__7S6003C6[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__7S6003C6[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__7S6003C6[6]),  6,8},
  {&(_ZTV7S6003C6[44]),  44,89},
  {&(_ZTV7S6003C6[52]),  52,89},
  {&(_ZTV7S6003C6[58]),  58,89},
  {&(_ZTV7S6003C6[64]),  64,89},
  {&(_ZTV7S6003C6[67]),  67,89},
  {&(_ZTV7S6003C6[29]),  29,89},
  {&(_ZTV7S6003C6[77]),  77,89},
  {&(_ZTV7S6003C6[83]),  83,89},
  {&(_ZTV7S6003C6[88]),  88,89},
  {&(_ZTV7S6003C6[39]),  39,89},
  {&(_tg__ZTV7S6003C7__7S6003C6[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__7S6003C6[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__7S6003C6[3]),  3,4},
  {&(_tg__ZTV7S6003C8__7S6003C6[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__7S6003C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6003C6[];
extern  VTBL_ENTRY _ZTV7S6003C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C6[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S6003C11D0Ev,_ZThn15028_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S6003C11D1Ev,_ZThn15028_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N8S6003C12D0Ev,_ZThn14736_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N8S6003C12D1Ev,_ZThn14736_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N7S6003C6D0Ev,_ZThn17648_N7S6003C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N7S6003C6D1Ev,_ZThn17648_N7S6003C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C6 = {  "S6003C6", // class name
  bases_S6003C6, 18,
  &(vtc_S6003C6[0]), // expected_vtbl_contents
  &(vtt_S6003C6[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI7S6003C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6003C6),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C6),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S6003C18  {
  long s6003c18f0;
  int s6003c18f1;
  long s6003c18f2;
  short s6003c18f3;
  int s6003c18f4;
  void  mf6003c18(); // _ZN8S6003C189mf6003c18Ev
};
//SIG(1 S6003C18) U1{ m Fl Fi Fl Fs Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S6003C17  : virtual S6003C4 , S6003C15 , virtual S6003C6 , S6003C12 , S6003C13 {
  ::S6003C18 s6003c17f0;
  __tsi64 s6003c17f1;
  long double s6003c17f2;
  void *s6003c17f3;
  __tsi64 s6003c17f4;
  int s6003c17f5;
  ::S6003C15 s6003c17f6;
  int s6003c17f7;
  ::S6003C5 s6003c17f8;
  virtual  ~S6003C17(); // _ZN8S6003C17D2Ev
  S6003C17(); // tgen
};
//SIG(-1 S6003C17) C1{ VBC2{ v1 v2 v3 Fi[2] Fl[2] FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC4{ VBC5{ v4 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} BC2 VBC6{ VBC7{ BC5 BC2 BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC2 VBC9{ VBC3 Fp FC3 FL:3} VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC9 BC8 BC10{ VBC5 VBC7 VBC3 VBC9 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC7 Fc:7 FC11{ BC5 vd v10 FC9 Fi Fp Fi}} v7 FC7 FL Fc:7} Fc:8 Fi} VBC12{ VBC3 VBC8 BC7 BC6 v8 v9 FC10 Fs FL:8} BC10 BC11 vd FU13{ m Fl Fi Fl Fs Fi} FL FD Fp FL Fi FC4 Fi FC3}


 S6003C17 ::~S6003C17(){ note_dtor("S6003C17", this);}
S6003C17 ::S6003C17(){ note_ctor("S6003C17", this);} // tgen

static void Test_S6003C17()
{
  extern Class_Descriptor cd_S6003C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4213,10691)];
    init_test(&cd_S6003C17, buf);
    S6003C17 *dp, &lv = *(dp=new (buf) S6003C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(67392,42760), "sizeof(S6003C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C17)");
    /*is_ambiguous_... S6003C17::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*), ABISELECT(24424,15516), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(24424,15516), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(24424,15516), "S6003C17");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(24424,15516), "S6003C17");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(24896,15824), "S6003C17");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*), ABISELECT(24896,15824), "S6003C17");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*), 0, "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(36504,23168), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(36968,23476), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(36208,22984), "S6003C17");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*)(S6003C6*), ABISELECT(36208,22984), "S6003C17");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*), ABISELECT(36208,22984), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(40328,25604), "S6003C17");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C6*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*)(S6003C6*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*), ABISELECT(40328,25604), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(40472,25700), "S6003C17");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*)(S6003C6*), ABISELECT(40472,25700), "S6003C17");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(40472,25700), "S6003C17");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*), ABISELECT(40472,25700), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(25200,16008), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(25200,16008), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(25664,16300), "S6003C17");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*), ABISELECT(25200,16008), "S6003C17");
    check_base_class_offset(lv, (S6003C15*), 0, "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(66928,42468), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C6*), ABISELECT(66928,42468), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*)(S6003C6*), ABISELECT(40640,25808), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*)(S6003C6*), ABISELECT(40936,25992), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*)(S6003C6*), ABISELECT(41400,26300), "S6003C17");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C6*), ABISELECT(40640,25808), "S6003C17");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(44768,28428), "S6003C17");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(44768,28428), "S6003C17");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(45232,28720), "S6003C17");
    check_base_class_offset(lv, (S6003C11*)(S6003C6*), ABISELECT(44768,28428), "S6003C17");
    check_base_class_offset(lv, (S6003C6*), ABISELECT(40640,25808), "S6003C17");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C12*), ABISELECT(480,316), "S6003C17");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*), ABISELECT(6880,4368), "S6003C17");
    check_base_class_offset(lv, (S6003C13*), ABISELECT(6880,4368), "S6003C17");
    check_field_offset(lv, s6003c17f0, ABISELECT(7512,4768), "S6003C17.s6003c17f0");
    check_field_offset(lv, s6003c17f1, ABISELECT(7520,4772), "S6003C17.s6003c17f1");
    check_field_offset(lv, s6003c17f2, ABISELECT(7536,4780), "S6003C17.s6003c17f2");
    check_field_offset(lv, s6003c17f3, ABISELECT(7552,4792), "S6003C17.s6003c17f3");
    check_field_offset(lv, s6003c17f4, ABISELECT(7560,4796), "S6003C17.s6003c17f4");
    check_field_offset(lv, s6003c17f5, ABISELECT(7568,4804), "S6003C17.s6003c17f5");
    check_field_offset(lv, s6003c17f6, ABISELECT(7584,4808), "S6003C17.s6003c17f6");
    check_field_offset(lv, s6003c17f7, ABISELECT(24272,15416), "S6003C17.s6003c17f7");
    check_field_offset(lv, s6003c17f8, ABISELECT(24280,15420), "S6003C17.s6003c17f8");
    test_class_info(&lv, &cd_S6003C17);
    dp->~S6003C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C17(Test_S6003C17, "S6003C17", ABISELECT(67392,42760));

#else // __cplusplus

extern void _ZN8S6003C17C1Ev();
extern void _ZN8S6003C17D2Ev();
Name_Map name_map_S6003C17[] = {
  NSPAIR(_ZN8S6003C17C1Ev),
  NSPAIR(_ZN8S6003C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C6;
extern VTBL_ENTRY _ZTI7S6003C6[];
extern  VTBL_ENTRY _ZTV7S6003C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C6[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
static Base_Class bases_S6003C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C4,    ABISELECT(24424,15516), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    ABISELECT(24896,15824), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(36208,22984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6003C4,    ABISELECT(36504,23168), //bcp->offset
    76, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(36968,23476), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(36208,22984), //bcp->offset
    63, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(40328,25604), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(40472,25700), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(25200,16008), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C7,    ABISELECT(25200,16008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(25664,16300), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(25200,16008), //bcp->offset
    41, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6003C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C5,    ABISELECT(66928,42468), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C7,    ABISELECT(66928,42468), //bcp->offset
    142, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(40640,25808), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(40936,25992), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(41400,26300), //bcp->offset
    120, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(40640,25808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(44768,28428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(44768,28428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(45232,28720), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(44768,28428), //bcp->offset
    123, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C6,    ABISELECT(40640,25808), //bcp->offset
    91, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C12,    ABISELECT(480,316), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C9,    ABISELECT(6880,4368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(6880,4368), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C17[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C17D1Ev();
extern void _ZN8S6003C17D0Ev();
extern void ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZThn6880_N8S6003C17D1Ev,_ZThn4368_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn6880_N8S6003C17D0Ev,_ZThn4368_N8S6003C17D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev)();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C17[] = {
  ABISELECT(66928,42468),
  ABISELECT(40640,25808),
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D0Ev,
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev),
  ABISELECT(-6880,-4368),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn6880_N8S6003C17D1Ev,_ZThn4368_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn6880_N8S6003C17D0Ev,_ZThn4368_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-40640,-25808),
  0,
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  ABISELECT(-40640,-25808),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
  ABISELECT(-40936,-25992),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-41400,-26300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-44768,-28428),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev),
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-45232,-28720),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev),
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-66928,-42468),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6003C17[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C17[] = {
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C15__8S6003C17[] = {
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15__8S6003C17[] = {
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C15__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C17[] = {
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C17[] = {
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C15__8S6003C17[] = {
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C15__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C17[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C12__A2__8S6003C17[] = {
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C12__A2__8S6003C17[] = {
  0,
  ABISELECT(-24416,-15508),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-35728,-22668),
  0,
  ABISELECT(-35728,-22668),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(-36024,-22852),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(-36488,-23160),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C12__A2__8S6003C17[] = {
  0,
  ABISELECT(-39848,-25288),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12__A2__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-39992,-25384),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C17[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__8S6003C17[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C17[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C17[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C17[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C17[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C17[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C17[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C17[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C17[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C17[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C17[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C17[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C6D1Ev();
extern void _ZN7S6003C6D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C6__8S6003C17[] = {
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__8S6003C17[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(20336,12896),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(9024,5736),
  0,
  ABISELECT(9024,5736),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(8728,5552),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(8264,5244),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(4904,3116),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(4760,3020),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8560,5444),
  0,
  ABISELECT(8560,5444),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(8264,5260),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(7800,4952),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__8S6003C17[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C117S6003C6__A1__8S6003C17[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C6__8S6003C17[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__7S6003C6__8S6003C17[] = {
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C6__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(16216,10292),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C6__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C6__8S6003C17[] = {
  0,
  ABISELECT(15744,9984),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C6__8S6003C17[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__A1__7S6003C6__8S6003C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4432,2824),
  0,
  ABISELECT(4432,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A2__7S6003C6__8S6003C17[] = {
  ABISELECT(4136,2640),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A3__7S6003C6__8S6003C17[] = {
  ABISELECT(3672,2332),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C6__8S6003C17[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C17[] = {
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__A1__8S6003C17[] = {
  0,
  0,
  0,
  ABISELECT(42504,26952),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__A1__8S6003C17[] = {
  ABISELECT(-144,-96),
  ABISELECT(26456,16768),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C17[] = {
  0,
  ABISELECT(26600,16864),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__A1__8S6003C17[] = {
  0,
  ABISELECT(42032,26644),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
static  VTT_ENTRY vtt_S6003C17[] = {
  {&(_ZTV8S6003C17[10]),  10,150},
  {&(_tg__ZTV8S6003C15__8S6003C17[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C15__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C15__8S6003C17[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C15__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C15__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C15__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C15__8S6003C17[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C17[6]),  6,8},
  {&(_tg__ZTV8S6003C12__A2__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C12__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C12__A2__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C12__A2__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C12__A2__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C12__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C12__A2__8S6003C17[3]),  3,3},
  {&(_ZTV8S6003C17[34]),  34,150},
  {&(_ZTV8S6003C17[40]),  40,150},
  {&(_ZTV8S6003C17[51]),  51,150},
  {&(_ZTV8S6003C17[72]),  72,150},
  {&(_ZTV8S6003C17[78]),  78,150},
  {&(_ZTV8S6003C17[83]),  83,150},
  {&(_ZTV8S6003C17[87]),  87,150},
  {&(_ZTV8S6003C17[91]),  91,150},
  {&(_ZTV8S6003C17[61]),  61,150},
  {&(_ZTV8S6003C17[109]),  109,150},
  {&(_ZTV8S6003C17[149]),  149,150},
  {&(_ZTV8S6003C17[117]),  117,150},
  {&(_ZTV8S6003C17[122]),  122,150},
  {&(_ZTV8S6003C17[130]),  130,150},
  {&(_ZTV8S6003C17[140]),  140,150},
  {&(_ZTV8S6003C17[21]),  21,150},
  {&(_tg__ZTV8S6003C11__8S6003C17[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__8S6003C17[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C17[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C8__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C6__8S6003C17[8]),  8,14},
  {&(_tg__ZTV8S6003C117S6003C6__A1__8S6003C17[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C117S6003C6__A2__8S6003C17[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__8S6003C17[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C117S6003C6__A1__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__8S6003C17[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C117S6003C6__A1__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C117S6003C6__A1__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C5__7S6003C6__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C7__7S6003C6__8S6003C17[7]),  7,8},
  {&(_tg__ZTV7S6003C4__7S6003C6__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C6__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C9__7S6003C6__8S6003C17[3]),  3,4},
  {&(_tg__ZTV8S6003C11__7S6003C6__8S6003C17[7]),  7,11},
  {&(_tg__ZTV8S6003C10__A1__7S6003C6__8S6003C17[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A2__7S6003C6__8S6003C17[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A3__7S6003C6__8S6003C17[2]),  2,3},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C6__8S6003C17[6]),  6,8},
  {&(_tg__ZTV7S6003C7__A1__8S6003C17[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__A1__8S6003C17[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__A1__8S6003C17[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C17[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__A1__8S6003C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C17[];
extern  VTBL_ENTRY _ZTV8S6003C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C17[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C17 = {  "S6003C17", // class name
  bases_S6003C17, 28,
  &(vtc_S6003C17[0]), // expected_vtbl_contents
  &(vtt_S6003C17[0]), // expected_vtt_contents
  ABISELECT(67392,42760), // object size
  NSPAIRA(_ZTI8S6003C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6003C17),150, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C17),94, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C16  : S6003C5 , virtual S6003C9 , virtual S6003C15 , S6003C7 , S6003C13 {
  int s6003c16f0;
  ::S6003C7 s6003c16f1;
  int s6003c16f2;
  short s6003c16f3;
  __tsi64 s6003c16f4:8;
  int s6003c16f5;
  virtual  ~S6003C16(); // _ZN8S6003C16D2Ev
  virtual void  v15(); // _ZN8S6003C163v15Ev
  S6003C16(); // tgen
};
//SIG(-1 S6003C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL: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}


 S6003C16 ::~S6003C16(){ note_dtor("S6003C16", this);}
void  S6003C16 ::v15(){vfunc_called(this, "_ZN8S6003C163v15Ev");}
S6003C16 ::S6003C16(){ note_ctor("S6003C16", this);} // tgen

static void Test_S6003C16()
{
  extern Class_Descriptor cd_S6003C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S6003C16, buf);
    S6003C16 *dp, &lv = *(dp=new (buf) S6003C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S6003C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C16)");
    /*is_ambiguous_... S6003C16::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), 0, "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*), ABISELECT(2816,1792), "S6003C16");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(2816,1792), "S6003C16");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*), ABISELECT(3112,1976), "S6003C16");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(14592,9268), "S6003C16");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(14888,9452), "S6003C16");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(15352,9760), "S6003C16");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(14592,9268), "S6003C16");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(14592,9268), "S6003C16");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(18712,11888), "S6003C16");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(18712,11888), "S6003C16");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(18712,11888), "S6003C16");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(18856,11984), "S6003C16");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(18856,11984), "S6003C16");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(18856,11984), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(18856,11984), "S6003C16");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(3584,2292), "S6003C16");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(19024,12092), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(19024,12092), "S6003C16");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(3584,2292), "S6003C16");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(4048,2584), "S6003C16");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*), ABISELECT(3584,2292), "S6003C16");
    check_base_class_offset(lv, (S6003C15*), ABISELECT(3112,1976), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(144,96), "S6003C16");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*), ABISELECT(144,96), "S6003C16");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*), ABISELECT(608,388), "S6003C16");
    check_base_class_offset(lv, (S6003C13*), ABISELECT(608,388), "S6003C16");
    check_field_offset(lv, s6003c16f0, ABISELECT(1236,788), "S6003C16.s6003c16f0");
    check_field_offset(lv, s6003c16f1, ABISELECT(1248,792), "S6003C16.s6003c16f1");
    check_field_offset(lv, s6003c16f2, ABISELECT(2800,1780), "S6003C16.s6003c16f2");
    check_field_offset(lv, s6003c16f3, ABISELECT(2804,1784), "S6003C16.s6003c16f3");
    set_bf_and_test(lv, s6003c16f4, ABISELECT(2806,1786), 0, 8, 1, "S6003C16");
    set_bf_and_test(lv, s6003c16f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S6003C16");
    check_field_offset(lv, s6003c16f5, ABISELECT(2808,1788), "S6003C16.s6003c16f5");
    test_class_info(&lv, &cd_S6003C16);
    dp->~S6003C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C16(Test_S6003C16, "S6003C16", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN8S6003C16C1Ev();
extern void _ZN8S6003C16D2Ev();
Name_Map name_map_S6003C16[] = {
  NSPAIR(_ZN8S6003C16C1Ev),
  NSPAIR(_ZN8S6003C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
static Base_Class bases_S6003C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C9,    ABISELECT(2816,1792), //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_S6003C4,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C9,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6003C4,    ABISELECT(14888,9452), //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_S6003C5,    ABISELECT(15352,9760), //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_S6003C10,    ABISELECT(14592,9268), //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_S6003C5,    ABISELECT(18712,11888), //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_S6003C8,    ABISELECT(18856,11984), //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_S6003C5,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(19024,12092), //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_S6003C7,    ABISELECT(3584,2292), //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_S6003C12,    ABISELECT(4048,2584), //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_S6003C11,    ABISELECT(3584,2292), //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_S6003C15,    ABISELECT(3112,1976), //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_S6003C5,    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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(144,96), //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_S6003C9,    ABISELECT(608,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(608,388), //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 _ZTI8S6003C16[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C16D1Ev();
extern void _ZN8S6003C16D0Ev();
extern void _ZN8S6003C163v15Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZThn608_N8S6003C16D1Ev,_ZThn388_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn608_N8S6003C16D0Ev,_ZThn388_N8S6003C16D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn3112_N8S6003C16D1Ev,_ZThn1976_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn3112_N8S6003C16D0Ev,_ZThn1976_N8S6003C16D0Ev)() __attribute__((weak));
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn3584_N8S6003C16D1Ev,_ZThn2292_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn3584_N8S6003C16D0Ev,_ZThn2292_N8S6003C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn14592_N8S6003C16D1Ev,_ZThn9268_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn14592_N8S6003C16D0Ev,_ZThn9268_N8S6003C16D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY vtc_S6003C16[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C163v15Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N8S6003C16D1Ev,_ZThn388_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N8S6003C16D0Ev,_ZThn388_N8S6003C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S6003C16[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C16[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__A1__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__A1__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C16[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__A1__8S6003C16[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C16[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C15__8S6003C16[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15__8S6003C16[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C15__8S6003C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C16[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C16[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C15__8S6003C16[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C15__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C16[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__8S6003C16[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C16[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C16[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C16[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C16[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C16[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C16[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C16[] = {
  {&(_ZTV8S6003C16[9]),  9,105},
  {&(_tg__ZTV7S6003C7__A1__8S6003C16[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__A1__8S6003C16[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__A1__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__A1__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__A1__8S6003C16[3]),  3,4},
  {&(_ZTV8S6003C16[29]),  29,105},
  {&(_ZTV8S6003C16[42]),  42,105},
  {&(_ZTV8S6003C16[57]),  57,105},
  {&(_ZTV8S6003C16[78]),  78,105},
  {&(_ZTV8S6003C16[84]),  84,105},
  {&(_ZTV8S6003C16[89]),  89,105},
  {&(_ZTV8S6003C16[93]),  93,105},
  {&(_ZTV8S6003C16[97]),  97,105},
  {&(_ZTV8S6003C16[102]),  102,105},
  {&(_ZTV8S6003C16[67]),  67,105},
  {&(_ZTV8S6003C16[19]),  19,105},
  {&(_tg__ZTV8S6003C15__8S6003C16[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C15__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C15__8S6003C16[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C15__8S6003C16[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C16[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C16[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C15__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C15__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C15__8S6003C16[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C16[6]),  6,8},
  {&(_tg__ZTV8S6003C11__8S6003C16[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__8S6003C16[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__8S6003C16[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C16[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C16[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C16[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C16[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C16[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C16[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C16[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C16[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C16[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C16[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C16[6]),  6,8},
  {&(_tg__ZTV7S6003C8__8S6003C16[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C16[];
extern  VTBL_ENTRY _ZTV8S6003C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C16[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N8S6003C16D0Ev,_ZThn9268_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N8S6003C16D1Ev,_ZThn9268_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N8S6003C16D0Ev,_ZThn2292_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N8S6003C16D1Ev,_ZThn2292_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N8S6003C16D0Ev,_ZThn1976_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N8S6003C16D1Ev,_ZThn1976_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C16 = {  "S6003C16", // class name
  bases_S6003C16, 19,
  &(vtc_S6003C16[0]), // expected_vtbl_contents
  &(vtt_S6003C16[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI8S6003C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6003C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C21  : S6003C7 , virtual S6003C15 , S6003C16 {
  ::S6003C15 s6003c21f0;
  int s6003c21f1;
  int s6003c21f2;
  char s6003c21f3;
  int s6003c21f4;
  __tsi64 s6003c21f5;
  int s6003c21f6;
  int s6003c21f7;
  void *s6003c21f8;
  void *s6003c21f9;
  int s6003c21f10;
  int s6003c21f11;
  virtual void  v16(); // _ZN8S6003C213v16Ev
  virtual void  v17(); // _ZN8S6003C213v17Ev
  ~S6003C21(); // tgen
  S6003C21(); // tgen
};
//SIG(-1 S6003C21) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v7 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} VBC7{ VBC6 BC4 VBC8{ VBC9{ BC6 BC4 BC3 vd v8 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} VBC3 VBC5 BC2 BC10{ VBC6 VBC9 VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC9 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v9 FC9 FL Fc:7} Fc:8 Fi} BC12{ BC3 VBC6 VBC7 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v1 v2 FC7 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]}


void  S6003C21 ::v16(){vfunc_called(this, "_ZN8S6003C213v16Ev");}
void  S6003C21 ::v17(){vfunc_called(this, "_ZN8S6003C213v17Ev");}
S6003C21 ::~S6003C21(){ note_dtor("S6003C21", this);} // tgen
S6003C21 ::S6003C21(){ note_ctor("S6003C21", this);} // tgen

static void Test_S6003C21()
{
  extern Class_Descriptor cd_S6003C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2295,5838)];
    init_test(&cd_S6003C21, buf);
    S6003C21 *dp, &lv = *(dp=new (buf) S6003C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36704,23348), "sizeof(S6003C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C21)");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), 0, "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(20024,12740), "S6003C21");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(20024,12740), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C16*), ABISELECT(20024,12740), "S6003C21");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(20656,13156), "S6003C21");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(20656,13156), "S6003C21");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(20656,13156), "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(20488,13048), "S6003C21");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(20488,13048), "S6003C21");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(20488,13048), "S6003C21");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(20488,13048), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C16*), ABISELECT(20488,13048), "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*), ABISELECT(20800,13252), "S6003C21");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C16*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C16*), ABISELECT(20800,13252), "S6003C21");
    /*is_ambiguous_... S6003C21::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*), 0, "S6003C21");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*), ABISELECT(21096,13436), "S6003C21");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(32576,20728), "S6003C21");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(32872,20912), "S6003C21");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(33336,21220), "S6003C21");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(32576,20728), "S6003C21");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(32576,20728), "S6003C21");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(21568,13752), "S6003C21");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(21568,13752), "S6003C21");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(22032,14044), "S6003C21");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*), ABISELECT(21568,13752), "S6003C21");
    check_base_class_offset(lv, (S6003C15*), ABISELECT(21096,13436), "S6003C21");
    check_base_class_offset(lv, (S6003C15*)(S6003C16*), ABISELECT(21096,13436), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C16*), ABISELECT(464,292), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C16*), ABISELECT(608,388), "S6003C21");
    /*is_ambiguous_... S6003C16::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C16*), ABISELECT(608,388), "S6003C21");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*)(S6003C16*), ABISELECT(1072,680), "S6003C21");
    check_base_class_offset(lv, (S6003C13*)(S6003C16*), ABISELECT(1072,680), "S6003C21");
    check_base_class_offset(lv, (S6003C16*), ABISELECT(464,292), "S6003C21");
    check_field_offset(lv, s6003c21f0, ABISELECT(3280,2084), "S6003C21.s6003c21f0");
    check_field_offset(lv, s6003c21f1, ABISELECT(19968,12692), "S6003C21.s6003c21f1");
    check_field_offset(lv, s6003c21f2, ABISELECT(19972,12696), "S6003C21.s6003c21f2");
    check_field_offset(lv, s6003c21f3, ABISELECT(19976,12700), "S6003C21.s6003c21f3");
    check_field_offset(lv, s6003c21f4, ABISELECT(19980,12704), "S6003C21.s6003c21f4");
    check_field_offset(lv, s6003c21f5, ABISELECT(19984,12708), "S6003C21.s6003c21f5");
    check_field_offset(lv, s6003c21f6, ABISELECT(19992,12716), "S6003C21.s6003c21f6");
    check_field_offset(lv, s6003c21f7, ABISELECT(19996,12720), "S6003C21.s6003c21f7");
    check_field_offset(lv, s6003c21f8, ABISELECT(20000,12724), "S6003C21.s6003c21f8");
    check_field_offset(lv, s6003c21f9, ABISELECT(20008,12728), "S6003C21.s6003c21f9");
    check_field_offset(lv, s6003c21f10, ABISELECT(20016,12732), "S6003C21.s6003c21f10");
    check_field_offset(lv, s6003c21f11, ABISELECT(20020,12736), "S6003C21.s6003c21f11");
    test_class_info(&lv, &cd_S6003C21);
    dp->~S6003C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C21(Test_S6003C21, "S6003C21", ABISELECT(36704,23348));

#else // __cplusplus

extern void _ZN8S6003C21C1Ev();
extern void _ZN8S6003C21D1Ev();
Name_Map name_map_S6003C21[] = {
  NSPAIR(_ZN8S6003C21C1Ev),
  NSPAIR(_ZN8S6003C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
extern Class_Descriptor cd_S6003C16;
extern VTBL_ENTRY _ZTI8S6003C16[];
extern  VTBL_ENTRY _ZTV8S6003C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C16[];
static Base_Class bases_S6003C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(20024,12740), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(20656,13156), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(20488,13048), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(20800,13252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6003C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(21096,13436), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C9,    ABISELECT(32576,20728), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(32872,20912), //bcp->offset
    111, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(33336,21220), //bcp->offset
    116, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(32576,20728), //bcp->offset
    98, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(21568,13752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(22032,14044), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(21568,13752), //bcp->offset
    76, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6003C15,    ABISELECT(21096,13436), //bcp->offset
    59, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    ABISELECT(464,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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(608,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(608,388), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(1072,680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(1072,680), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6003C16,    ABISELECT(464,292), //bcp->offset
    14, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C21[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C213v16Ev();
extern void _ZN8S6003C213v17Ev();
extern void _ZN8S6003C21D1Ev();
extern void _ZN8S6003C21D0Ev();
extern void _ZN7S6003C52v5Ev();
extern void ABISELECT(_ZThn464_N8S6003C21D1Ev,_ZThn292_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C21D0Ev,_ZThn292_N8S6003C21D0Ev)();
extern void _ZN8S6003C163v15Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZThn1072_N8S6003C21D1Ev,_ZThn680_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn1072_N8S6003C21D0Ev,_ZThn680_N8S6003C21D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6003C21D1Ev,_ZTv0_n48_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn21096_N8S6003C21D1Ev,_ZThn13436_N8S6003C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6003C21D0Ev,_ZTv0_n48_N8S6003C21D0Ev)();
extern void ABISELECT(_ZThn21096_N8S6003C21D0Ev,_ZThn13436_N8S6003C21D0Ev)() __attribute__((weak));
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C21D1Ev,_ZTv0_n40_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn21568_N8S6003C21D1Ev,_ZThn13752_N8S6003C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C21D0Ev,_ZTv0_n40_N8S6003C21D0Ev)();
extern void ABISELECT(_ZThn21568_N8S6003C21D0Ev,_ZThn13752_N8S6003C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S6003C21D1Ev,_ZTvn292_n40_N8S6003C21D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C21D0Ev,_ZTvn292_n40_N8S6003C21D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C21D1Ev,_ZTv0_n16_N8S6003C21D1Ev)();
extern void ABISELECT(_ZThn32576_N8S6003C21D1Ev,_ZThn20728_N8S6003C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C21D0Ev,_ZTv0_n16_N8S6003C21D0Ev)();
extern void ABISELECT(_ZThn32576_N8S6003C21D0Ev,_ZThn20728_N8S6003C21D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C21[] = {
  ABISELECT(32576,20728),
  ABISELECT(21568,13752),
  ABISELECT(21096,13436),
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C213v16Ev,
  (VTBL_ENTRY)&_ZN8S6003C213v17Ev,
  (VTBL_ENTRY)&_ZN8S6003C21D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C21D0Ev,
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C21D1Ev,_ZThn292_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C21D0Ev,_ZThn292_N8S6003C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C163v15Ev,
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-1072,-680),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N8S6003C21D1Ev,_ZThn680_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1072_N8S6003C21D0Ev,_ZThn680_N8S6003C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-21096,-13436),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-21096,-13436),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C21D1Ev,_ZTv0_n48_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C21D0Ev,_ZTv0_n48_N8S6003C21D0Ev),
  ABISELECT(-21568,-13752),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C21D1Ev,_ZTv0_n40_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C21D0Ev,_ZTv0_n40_N8S6003C21D0Ev),
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-22032,-14044),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C21D1Ev,_ZTvn292_n40_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C21D0Ev,_ZTvn292_n40_N8S6003C21D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32576,-20728),
  0,
  ABISELECT(-32576,-20728),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C21D1Ev,_ZTv0_n16_N8S6003C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C21D0Ev,_ZTv0_n16_N8S6003C21D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-32872,-20912),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-33336,-21220),
  (VTBL_ENTRY)&(_ZTI8S6003C21[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6003C21[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__8S6003C21[] = {
  ABISELECT(20800,13252),
  ABISELECT(20656,13156),
  ABISELECT(20488,13048),
  ABISELECT(20024,12740),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(-20024,-12740),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(-20488,-13048),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__8S6003C21[] = {
  0,
  ABISELECT(-20656,-13156),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__8S6003C21[] = {
  0,
  ABISELECT(-20800,-13252),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C16D1Ev();
extern void _ZN8S6003C16D0Ev();
extern void _ZN8S6003C163v15Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C16__8S6003C21[] = {
  ABISELECT(19560,12448),
  ABISELECT(20024,12756),
  ABISELECT(20192,12864),
  ABISELECT(32112,20436),
  ABISELECT(21104,13460),
  ABISELECT(20632,13144),
  ABISELECT(20336,12960),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C16D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C163v15Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C16__A2__8S6003C21[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C16__A2__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(-19416,-12352),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C16__A2__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(-19880,-12660),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C16__A2__8S6003C21[] = {
  0,
  ABISELECT(-20048,-12768),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C16__A2__8S6003C21[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C16__8S6003C21[] = {
  0,
  ABISELECT(-20336,-12960),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn20632_N8S6003C16D1Ev,_ZThn13144_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn20632_N8S6003C16D0Ev,_ZThn13144_N8S6003C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C16__8S6003C21[] = {
  ABISELECT(-20632,-13144),
  0,
  0,
  0,
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-20632,-13144),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn21104_N8S6003C16D1Ev,_ZThn13460_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn21104_N8S6003C16D0Ev,_ZThn13460_N8S6003C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C16__8S6003C21[] = {
  ABISELECT(-21104,-13460),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-21104,-13460),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev)();
extern void ABISELECT(_ZThn32112_N8S6003C16D1Ev,_ZThn20436_N8S6003C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev)();
extern void ABISELECT(_ZThn32112_N8S6003C16D0Ev,_ZThn20436_N8S6003C16D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C16__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32112,-20436),
  0,
  ABISELECT(-32112,-20436),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C16__8S6003C21[] = {
  ABISELECT(-32408,-20620),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A1__8S6003C16__8S6003C21[] = {
  ABISELECT(-32872,-20928),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A2__8S6003C16__8S6003C21[] = {
  0,
  ABISELECT(-20192,-12864),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C16__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(-20024,-12756),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C16__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(-19560,-12448),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C16__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-21568,-13752),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D1Ev,_ZTvn292_n40_N8S6003C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C16D0Ev,_ZTvn292_n40_N8S6003C16D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C16__8S6003C21[] = {
  ABISELECT(20192,12864),
  ABISELECT(20048,12768),
  ABISELECT(19880,12660),
  ABISELECT(19416,12352),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S6003C16[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C21[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C21[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C15__8S6003C21[] = {
  ABISELECT(-1072,-696),
  ABISELECT(-608,-388),
  ABISELECT(-440,-280),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C15__8S6003C21[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C15__8S6003C21[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C15__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C21[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C21[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C15__8S6003C21[] = {
  0,
  ABISELECT(440,280),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C15__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C15__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(1072,696),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C21[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__A1__8S6003C21[] = {
  ABISELECT(-768,-500),
  ABISELECT(-912,-596),
  ABISELECT(-1080,-704),
  ABISELECT(-1544,-1012),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__A1__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__A1__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__8S6003C21[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__A1__8S6003C21[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C21[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C21[] = {
  0,
  ABISELECT(1376,888),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(1544,996),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__8S6003C21[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C21[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C21[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__8S6003C21[] = {
  0,
  ABISELECT(912,596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__8S6003C21[] = {
  ABISELECT(168,108),
  ABISELECT(1080,704),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__8S6003C21[] = {
  0,
  0,
  0,
  ABISELECT(1544,1012),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__8S6003C21[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__8S6003C21[] = {
  ABISELECT(-1544,-996),
  ABISELECT(-1376,-888),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTT_ENTRY vtt_S6003C21[] = {
  {&(_ZTV8S6003C21[9]),  9,119},
  {&(_tg__ZTV7S6003C7__8S6003C21[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C16__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C78S6003C16__A2__8S6003C21[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C16__A2__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C16__A2__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C16__A2__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C16__A2__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__8S6003C16__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C15__8S6003C16__8S6003C21[12]),  12,17},
  {&(_tg__ZTV8S6003C11__8S6003C16__8S6003C21[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C16__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C16__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A1__8S6003C16__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A2__8S6003C16__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C16__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C16__8S6003C21[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C16__8S6003C21[6]),  6,8},
  {&(_tg__ZTV7S6003C7__A1__8S6003C16__8S6003C21[6]),  6,7},
  {&(_ZTV8S6003C21[45]),  45,119},
  {&(_ZTV8S6003C21[51]),  51,119},
  {&(_ZTV8S6003C21[54]),  54,119},
  {&(_ZTV8S6003C21[58]),  58,119},
  {&(_ZTV8S6003C21[71]),  71,119},
  {&(_ZTV8S6003C21[86]),  86,119},
  {&(_ZTV8S6003C21[107]),  107,119},
  {&(_ZTV8S6003C21[113]),  113,119},
  {&(_ZTV8S6003C21[118]),  118,119},
  {&(_ZTV8S6003C21[96]),  96,119},
  {&(_ZTV8S6003C21[23]),  23,119},
  {&(_ZTV8S6003C21[33]),  33,119},
  {&(_tg__ZTV7S6003C8__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C15__8S6003C21[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C15__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C15__8S6003C21[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C15__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C15__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C15__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C15__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C15__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C15__8S6003C21[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C15__8S6003C21[6]),  6,8},
  {&(_tg__ZTV8S6003C11__8S6003C21[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__A1__8S6003C21[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__A1__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__A1__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__A1__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__A1__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C21[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__8S6003C21[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__8S6003C21[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__8S6003C21[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__8S6003C21[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__8S6003C21[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__8S6003C21[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__8S6003C21[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__8S6003C21[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S6003C21[];
extern  VTBL_ENTRY _ZTV8S6003C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C21[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D0Ev,_ZThn7292_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N8S6003C15D1Ev,_ZThn7292_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D0Ev,_ZThn316_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S6003C15D1Ev,_ZThn316_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D0Ev,_ZTv0_n16_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N8S6003C16D0Ev,_ZThn20436_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C16D1Ev,_ZTv0_n16_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32112_N8S6003C16D1Ev,_ZThn20436_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D0Ev,_ZTv0_n40_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N8S6003C16D0Ev,_ZThn13460_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C16D1Ev,_ZTv0_n40_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21104_N8S6003C16D1Ev,_ZThn13460_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D0Ev,_ZTv0_n48_N8S6003C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N8S6003C16D0Ev,_ZThn13144_N8S6003C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C16D1Ev,_ZTv0_n48_N8S6003C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn20632_N8S6003C16D1Ev,_ZThn13144_N8S6003C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C21D0Ev,_ZTv0_n16_N8S6003C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N8S6003C21D0Ev,_ZThn20728_N8S6003C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C21D1Ev,_ZTv0_n16_N8S6003C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32576_N8S6003C21D1Ev,_ZThn20728_N8S6003C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C21D0Ev,_ZTv0_n40_N8S6003C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N8S6003C21D0Ev,_ZThn13752_N8S6003C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C21D1Ev,_ZTv0_n40_N8S6003C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21568_N8S6003C21D1Ev,_ZThn13752_N8S6003C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C21D0Ev,_ZTv0_n48_N8S6003C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N8S6003C21D0Ev,_ZThn13436_N8S6003C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S6003C21D1Ev,_ZTv0_n48_N8S6003C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn21096_N8S6003C21D1Ev,_ZThn13436_N8S6003C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C21 = {  "S6003C21", // class name
  bases_S6003C21, 22,
  &(vtc_S6003C21[0]), // expected_vtbl_contents
  &(vtt_S6003C21[0]), // expected_vtt_contents
  ABISELECT(36704,23348), // object size
  NSPAIRA(_ZTI8S6003C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6003C21),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C21),68, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C19  {
  ::S19763C18_nt s6003c19f0;
  ::S6003C21 s6003c19f1;
  int s6003c19f2;
  char s6003c19f3:5;
  virtual void  v11(); // _ZN8S6003C193v11Ev
  ~S6003C19(); // tgen
  S6003C19(); // tgen
};
//SIG(-1 S6003C19) C1{ v1 FC2{} FC3{ BC4{ BC5{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC6{ v5 v6 v7 Fi[2] Fl[2] FC5[3]} VBC7{ VBC5 Fp FC5 FL:3} VBC8{ v8 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC8 Fs Fi[2]} VBC9{ VBC8 BC6 VBC10{ VBC11{ BC8 BC6 BC5 vd v9 Fl FL Fp[8] FC4 Fp Fi FC4 Fi} VBC5 VBC7 BC4 BC12{ VBC8 VBC11 VBC5 VBC7 FL:44 Fp Fi FC4 Fl[2] Fi[3] FC11 Fc:7 FC13{ BC8 vd v11 FC7 Fi Fp Fi}} v10 FC11 FL Fc:7} Fc:8 Fi} BC14{ BC5 VBC8 VBC9 BC4 BC13 vd v12 Fi FC4 Fi Fs FL:8 Fi} v2 v3 FC9 Fi[2] Fc Fi FL Fi[2] Fp[2] Fi[2]} Fi Fc:5}


void  S6003C19 ::v11(){vfunc_called(this, "_ZN8S6003C193v11Ev");}
S6003C19 ::~S6003C19(){ note_dtor("S6003C19", this);} // tgen
S6003C19 ::S6003C19(){ note_ctor("S6003C19", this);} // tgen

static void Test_S6003C19()
{
  extern Class_Descriptor cd_S6003C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2297,5842)];
    init_test(&cd_S6003C19, buf);
    S6003C19 *dp, &lv = *(dp=new (buf) S6003C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(36736,23364), "sizeof(S6003C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C19)");
    check_field_offset(lv, s6003c19f0, ABISELECT(8,4), "S6003C19.s6003c19f0");
    check_field_offset(lv, s6003c19f1, ABISELECT(16,8), "S6003C19.s6003c19f1");
    check_field_offset(lv, s6003c19f2, ABISELECT(36720,23356), "S6003C19.s6003c19f2");
    set_bf_and_test(lv, s6003c19f3, ABISELECT(36724,23360), 0, 5, 1, "S6003C19");
    set_bf_and_test(lv, s6003c19f3, ABISELECT(36724,23360), 0, 5, hide_sll(1LL<<4), "S6003C19");
    test_class_info(&lv, &cd_S6003C19);
    dp->~S6003C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C19(Test_S6003C19, "S6003C19", ABISELECT(36736,23364));

#else // __cplusplus

extern void _ZN8S6003C19C1Ev();
extern void _ZN8S6003C19D1Ev();
Name_Map name_map_S6003C19[] = {
  NSPAIR(_ZN8S6003C19C1Ev),
  NSPAIR(_ZN8S6003C19D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S6003C19[];
extern void _ZN8S6003C193v11Ev();
static  VTBL_ENTRY vtc_S6003C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C19[0]),
  (VTBL_ENTRY)&_ZN8S6003C193v11Ev,
};
extern VTBL_ENTRY _ZTI8S6003C19[];
extern  VTBL_ENTRY _ZTV8S6003C19[];
Class_Descriptor cd_S6003C19 = {  "S6003C19", // class name
  0,0,//no base classes
  &(vtc_S6003C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(36736,23364), // object size
  NSPAIRA(_ZTI8S6003C19),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S6003C19),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  S6003C22  : S6003C7 , S6003C12 {
  int s6003c22f0:13;
  long s6003c22f1;
  int s6003c22f2;
  void *s6003c22f3[2];
  __tsi64 s6003c22f4;
  ::S6003C4 s6003c22f5;
  virtual  ~S6003C22(); // _ZN8S6003C22D2Ev
  virtual void  v12(); // _ZN8S6003C223v12Ev
  virtual void  v13(); // _ZN8S6003C223v13Ev
  S6003C22(); // tgen
};
//SIG(-1 S6003C22) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL: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 FL 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}


 S6003C22 ::~S6003C22(){ note_dtor("S6003C22", this);}
void  S6003C22 ::v12(){vfunc_called(this, "_ZN8S6003C223v12Ev");}
void  S6003C22 ::v13(){vfunc_called(this, "_ZN8S6003C223v13Ev");}
S6003C22 ::S6003C22(){ note_ctor("S6003C22", this);} // tgen

static void Test_S6003C22()
{
  extern Class_Descriptor cd_S6003C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2000)];
    init_test(&cd_S6003C22, buf);
    S6003C22 *dp, &lv = *(dp=new (buf) S6003C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,7996), "sizeof(S6003C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C22)");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), 0, "S6003C22");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(7376,4680), "S6003C22");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(8008,5096), "S6003C22");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*), ABISELECT(8008,5096), "S6003C22");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(7840,4988), "S6003C22");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*), ABISELECT(7840,4988), "S6003C22");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(8160,5192), "S6003C22");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*), ABISELECT(8160,5192), "S6003C22");
    check_base_class_offset(lv, (S6003C7*), 0, "S6003C22");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(8464,5376), "S6003C22");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(8760,5560), "S6003C22");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(9224,5868), "S6003C22");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*), ABISELECT(8464,5376), "S6003C22");
    check_base_class_offset(lv, (S6003C12*), ABISELECT(464,292), "S6003C22");
    set_bf_and_test(lv, s6003c22f0, ABISELECT(6864,4344), 0, 13, 1, "S6003C22");
    set_bf_and_test(lv, s6003c22f0, ABISELECT(6864,4344), 0, 13, hide_sll(1LL<<12), "S6003C22");
    check_field_offset(lv, s6003c22f1, ABISELECT(6872,4348), "S6003C22.s6003c22f1");
    check_field_offset(lv, s6003c22f2, ABISELECT(6880,4352), "S6003C22.s6003c22f2");
    check_field_offset(lv, s6003c22f3, ABISELECT(6888,4356), "S6003C22.s6003c22f3");
    check_field_offset(lv, s6003c22f4, ABISELECT(6904,4364), "S6003C22.s6003c22f4");
    check_field_offset(lv, s6003c22f5, ABISELECT(6912,4372), "S6003C22.s6003c22f5");
    test_class_info(&lv, &cd_S6003C22);
    dp->~S6003C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C22(Test_S6003C22, "S6003C22", ABISELECT(12592,7996));

#else // __cplusplus

extern void _ZN8S6003C22C1Ev();
extern void _ZN8S6003C22D2Ev();
Name_Map name_map_S6003C22[] = {
  NSPAIR(_ZN8S6003C22C1Ev),
  NSPAIR(_ZN8S6003C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
static Base_Class bases_S6003C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(7376,4680), //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_S6003C5,    ABISELECT(8008,5096), //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_S6003C8,    ABISELECT(7840,4988), //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_S6003C9,    ABISELECT(8160,5192), //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_S6003C7,    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_S6003C9,    ABISELECT(8464,5376), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C4,    ABISELECT(8760,5560), //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_S6003C5,    ABISELECT(9224,5868), //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_S6003C10,    ABISELECT(8464,5376), //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_S6003C12,    ABISELECT(464,292), //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 _ZTI8S6003C22[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C22D1Ev();
extern void _ZN8S6003C22D0Ev();
extern void _ZN8S6003C223v12Ev();
extern void _ZN8S6003C223v13Ev();
extern void ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev)();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev)();
extern void ABISELECT(_ZThn8464_N8S6003C22D1Ev,_ZThn5376_N8S6003C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev)();
extern void ABISELECT(_ZThn8464_N8S6003C22D0Ev,_ZThn5376_N8S6003C22D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY vtc_S6003C22[] = {
  ABISELECT(8464,5376),
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v13Ev,
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8464,-5376),
  0,
  ABISELECT(-8464,-5376),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-8760,-5560),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-9224,-5868),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S6003C22[];
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__8S6003C22[] = {
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__8S6003C22[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__8S6003C22[] = {
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__8S6003C22[] = {
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__8S6003C22[] = {
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C22[] = {
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C12__8S6003C22[] = {
  0,
  ABISELECT(-7696,-4900),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn8000_N8S6003C12D1Ev,_ZThn5084_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn8000_N8S6003C12D0Ev,_ZThn5084_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C12__8S6003C22[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8000,-5084),
  0,
  ABISELECT(-8000,-5084),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C22[] = {
  ABISELECT(-8296,-5268),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C22[] = {
  ABISELECT(-8760,-5576),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C12__8S6003C22[] = {
  0,
  ABISELECT(-7544,-4804),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C12__8S6003C22[] = {
  ABISELECT(168,108),
  ABISELECT(-7376,-4696),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C22[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__8S6003C22[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C22[] = {
  {&(_ZTV8S6003C22[7]),  7,60},
  {&(_tg__ZTV7S6003C7__8S6003C22[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__8S6003C22[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__8S6003C22[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__8S6003C22[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__8S6003C22[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C22[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C12__8S6003C22[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C12__8S6003C22[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C12__8S6003C22[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C12__8S6003C22[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C12__8S6003C22[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C12__8S6003C22[3]),  3,3},
  {&(_ZTV8S6003C22[25]),  25,60},
  {&(_ZTV8S6003C22[31]),  31,60},
  {&(_ZTV8S6003C22[34]),  34,60},
  {&(_ZTV8S6003C22[38]),  38,60},
  {&(_ZTV8S6003C22[18]),  18,60},
  {&(_ZTV8S6003C22[48]),  48,60},
  {&(_ZTV8S6003C22[54]),  54,60},
  {&(_ZTV8S6003C22[59]),  59,60},
  {&(_tg__ZTV7S6003C8__8S6003C22[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__8S6003C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6003C22[];
extern  VTBL_ENTRY _ZTV8S6003C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C22[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N8S6003C12D0Ev,_ZThn5084_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N8S6003C12D1Ev,_ZThn5084_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N8S6003C22D0Ev,_ZThn5376_N8S6003C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N8S6003C22D1Ev,_ZThn5376_N8S6003C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C22 = {  "S6003C22", // class name
  bases_S6003C22, 11,
  &(vtc_S6003C22[0]), // expected_vtbl_contents
  &(vtt_S6003C22[0]), // expected_vtt_contents
  ABISELECT(12592,7996), // object size
  NSPAIRA(_ZTI8S6003C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6003C22),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C22),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C23  : virtual S6003C10 , virtual S6003C9 {
  __tsi64 s6003c23f0;
  int s6003c23f1;
  void *s6003c23f2;
  void *s6003c23f3[3];
  __tsi64 s6003c23f4;
  ~S6003C23(); // tgen
  S6003C23(); // tgen
};
//SIG(-1 S6003C23) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v2 v3 v4 Fi[2] Fl[2] FC4[3]} BC4 vd v6 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL:3} VBC3 FC3 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 FL Fi Fp[4] FL}


S6003C23 ::~S6003C23(){ note_dtor("S6003C23", this);} // tgen
S6003C23 ::S6003C23(){ note_ctor("S6003C23", this);} // tgen

static void Test_S6003C23()
{
  extern Class_Descriptor cd_S6003C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(282,712)];
    init_test(&cd_S6003C23, buf);
    S6003C23 *dp, &lv = *(dp=new (buf) S6003C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4496,2844), "sizeof(S6003C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C23)");
    check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(64,40), "S6003C23");
    check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(360,224), "S6003C23");
    check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(824,532), "S6003C23");
    check_base_class_offset(lv, (S6003C10*), ABISELECT(64,40), "S6003C23");
    /*is_ambiguous_... S6003C23::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*), ABISELECT(4192,2660), "S6003C23");
    check_field_offset(lv, s6003c23f0, ABISELECT(8,4), "S6003C23.s6003c23f0");
    check_field_offset(lv, s6003c23f1, ABISELECT(16,12), "S6003C23.s6003c23f1");
    check_field_offset(lv, s6003c23f2, ABISELECT(24,16), "S6003C23.s6003c23f2");
    check_field_offset(lv, s6003c23f3, ABISELECT(32,20), "S6003C23.s6003c23f3");
    check_field_offset(lv, s6003c23f4, ABISELECT(56,32), "S6003C23.s6003c23f4");
    test_class_info(&lv, &cd_S6003C23);
    dp->~S6003C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C23(Test_S6003C23, "S6003C23", ABISELECT(4496,2844));

#else // __cplusplus

extern void _ZN8S6003C23C1Ev();
extern void _ZN8S6003C23D1Ev();
Name_Map name_map_S6003C23[] = {
  NSPAIR(_ZN8S6003C23C1Ev),
  NSPAIR(_ZN8S6003C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
static Base_Class bases_S6003C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6003C9,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(360,224), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(824,532), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(64,40), //bcp->offset
    6, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C9,    ABISELECT(4192,2660), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6003C23[];
extern void _ZN8S6003C23D1Ev();
extern void _ZN8S6003C23D0Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C23D1Ev,_ZTv0_n16_N8S6003C23D1Ev)();
extern void ABISELECT(_ZThn64_N8S6003C23D1Ev,_ZThn40_N8S6003C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C23D0Ev,_ZTv0_n16_N8S6003C23D0Ev)();
extern void ABISELECT(_ZThn64_N8S6003C23D0Ev,_ZThn40_N8S6003C23D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY vtc_S6003C23[] = {
  ABISELECT(4192,2660),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN8S6003C23D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C23D0Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-64,-40),
  0,
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C23D1Ev,_ZTv0_n16_N8S6003C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C23D0Ev,_ZTv0_n16_N8S6003C23D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-824,-532),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-4192,-2660),
  (VTBL_ENTRY)&(_ZTI8S6003C23[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern VTBL_ENTRY _ZTV8S6003C23[];
static  VTT_ENTRY vtt_S6003C23[] = {
  {&(_ZTV8S6003C23[4]),  4,31},
  {&(_ZTV8S6003C23[15]),  15,31},
  {&(_ZTV8S6003C23[21]),  21,31},
  {&(_ZTV8S6003C23[26]),  26,31},
  {&(_ZTV8S6003C23[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S6003C23[];
extern  VTBL_ENTRY _ZTV8S6003C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C23[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C23D0Ev,_ZTv0_n16_N8S6003C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6003C23D0Ev,_ZThn40_N8S6003C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C23D1Ev,_ZTv0_n16_N8S6003C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6003C23D1Ev,_ZThn40_N8S6003C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C23 = {  "S6003C23", // class name
  bases_S6003C23, 5,
  &(vtc_S6003C23[0]), // expected_vtbl_contents
  &(vtt_S6003C23[0]), // expected_vtt_contents
  ABISELECT(4496,2844), // object size
  NSPAIRA(_ZTI8S6003C23),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6003C23),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6003C23),5, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6003C1  : S19763C2 , virtual S6003C17 , virtual S6003C19 , S6003C5 , virtual S6003C22 {
  int s6003c1f0;
  void *s6003c1f1;
  int s6003c1f2;
  ::S6003C23 s6003c1f3;
  char s6003c1f4:3;
  ::S6003C5 s6003c1f5;
  void *s6003c1f6;
  __tsi64 s6003c1f7:64;
  int s6003c1f8;
  ~S6003C1(); // tgen
  S6003C1(); // tgen
};
//SIG(1 S6003C1) C1{ BC2{ m Fp Fi[2] Fs Fc Fi FC3{ VBC4{ v15 v16 v17 Fi[2] Fl[2] FC5{ v18 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC6{ VBC5 VBC7{ BC5 VBC4 VBC8{ VBC5 Fp FC5 FL:3} VBC9{ v19 FL FD Fp Fc FC5 Fp[2] Fl[8] Fs Fp FL:64} FC9 Fs Fi[2]} BC10{ BC9 BC4 BC5 vd v20 Fl FL Fp[8] FC7 Fp Fi FC7 Fi} BC11{ VBC10 VBC5 VBC8 BC7 BC12{ VBC9 VBC10 VBC5 VBC8 FL:44 Fp Fi FC7 Fl[2] Fi[3] FC10 Fc:7 FC13{ BC9 vd v24 FC8 Fi Fp Fi}} v21 FC10 FL Fc:7} v22 v23 FC12 Fs FL:8} BC14{ VBC8 FC12 FL:6 Fi Fl} VBC15{ VBC9 BC4 VBC11 Fc:8 Fi} VBC16{ BC5 VBC9 VBC15 BC7 BC13 vd v25 Fi FC7 Fi Fs FL:8 Fi} v14 FC15 FC6} Fi} VBC17{ VBC18{ v1 v2 v3 Fi[2] Fl[2] FC19{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC20{ VBC21{ v4 FL FD Fp Fc FC19 Fp[2] Fl[8] Fs Fp FL:64} BC18 VBC22{ VBC23{ BC21 BC18 BC19 vd v6 Fl FL Fp[8] FC24{ BC19 VBC18 VBC25{ VBC19 Fp FC19 FL:3} VBC21 FC21 Fs Fi[2]} Fp Fi FC24 Fi} VBC19 VBC25 BC24 BC26{ VBC21 VBC23 VBC19 VBC25 FL:44 Fp Fi FC24 Fl[2] Fi[3] FC23 Fc:7 FC27{ BC21 vd v10 FC25 Fi Fp Fi}} v7 FC23 FL Fc:7} Fc:8 Fi} VBC28{ VBC19 VBC24 BC23 BC22 v8 v9 FC26 Fs FL:8} BC26 BC27 vd FU29{ m Fl Fi Fl Fs Fi} FL FD Fp FL Fi FC20 Fi FC19} VBC30{ v11 FC31{} FC32{ BC24 VBC20 BC33{ BC19 VBC21 VBC20 BC24 BC27 vd v28 Fi FC24 Fi Fs FL:8 Fi} v26 v27 FC20 Fi Fi Fc Fi FL Fi Fi Fp Fp Fi Fi} Fi Fc:5} BC19 VBC34{ BC24 BC26 vd v12 v13 Fi:13 Fl Fi Fp[2] FL FC18} Fi Fp Fi FC35{ VBC23 VBC21 FL Fi Fp Fp[3] FL} Fc:3 FC19 Fp FL:64 Fi}


S6003C1 ::~S6003C1(){ note_dtor("S6003C1", this);} // tgen
S6003C1 ::S6003C1(){ note_ctor("S6003C1", this);} // tgen

static void Test_S6003C1()
{
  extern Class_Descriptor cd_S6003C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13905,35301)];
    init_test(&cd_S6003C1, buf);
    S6003C1 *dp, &lv = *(dp=new (buf) S6003C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(222464,141200), "sizeof(S6003C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6003C1)");
    check_base_class_offset(lv, (S19763C2*), ABISELECT(144,96), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C17*), ABISELECT(135384,85912), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*), ABISELECT(135384,85912), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C7*), ABISELECT(135384,85912), "S6003C1");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(135384,85912), "S6003C1");
    check_base_class_offset(lv, (S6003C4*)(S6003C7*)(S6003C22*), ABISELECT(135384,85912), "S6003C1");
    /*is_ambiguous_... S6003C15::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C15*)(S6003C17*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C7*), ABISELECT(135856,86220), "S6003C1");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C17*), ABISELECT(135856,86220), "S6003C1");
    check_base_class_offset(lv, (S6003C9*)(S6003C7*)(S6003C22*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C9 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C12*)(S6003C22*), ABISELECT(135856,86220), "S6003C1");
    /*is_ambiguous_... S6003C15::S6003C4 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C15*)(S6003C17*), ABISELECT(110960,70396), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*), ABISELECT(147464,93564), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*), ABISELECT(147928,93872), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C11*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*), ABISELECT(147168,93380), "S6003C1");
    check_base_class_offset(lv, (S6003C10*)(S6003C11*)(S6003C6*), ABISELECT(147168,93380), "S6003C1");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C17*), ABISELECT(147168,93380), "S6003C1");
    check_base_class_offset(lv, (S6003C10*)(S6003C12*)(S6003C22*), ABISELECT(147168,93380), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*), ABISELECT(151288,96000), "S6003C1");
    check_base_class_offset(lv, (S6003C5*)(S6003C8*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C6*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C11::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C11*)(S6003C6*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C17*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C12::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C12*)(S6003C22*), ABISELECT(151288,96000), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C11*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C7*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C11*)(S6003C6*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C17*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C7*)(S6003C22*), ABISELECT(151432,96096), "S6003C1");
    check_base_class_offset(lv, (S6003C8*)(S6003C12*)(S6003C22*), ABISELECT(151432,96096), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*), ABISELECT(136160,86404), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C11*), ABISELECT(136160,86404), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C11 */ AMB_check_base_class_offset(lv, (S6003C12*)(S6003C11*), ABISELECT(136624,86696), "S6003C1");
    check_base_class_offset(lv, (S6003C11*)(S6003C15*)(S6003C17*), ABISELECT(136160,86404), "S6003C1");
    check_base_class_offset(lv, (S6003C15*)(S6003C17*), ABISELECT(110960,70396), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*), ABISELECT(177888,112864), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C7 */ AMB_check_base_class_offset(lv, (S6003C7*)(S6003C6*), ABISELECT(177888,112864), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C9*)(S6003C10*)(S6003C6*), ABISELECT(151600,96204), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C4*)(S6003C10*)(S6003C6*), ABISELECT(151896,96388), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C10*)(S6003C6*), ABISELECT(152360,96696), "S6003C1");
    /*is_ambiguous_... S6003C6::S6003C10 */ AMB_check_base_class_offset(lv, (S6003C10*)(S6003C6*), ABISELECT(151600,96204), "S6003C1");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(155728,98824), "S6003C1");
    check_base_class_offset(lv, (S6003C7*)(S6003C11*)(S6003C6*), ABISELECT(155728,98824), "S6003C1");
    check_base_class_offset(lv, (S6003C12*)(S6003C11*)(S6003C6*), ABISELECT(156192,99116), "S6003C1");
    check_base_class_offset(lv, (S6003C11*)(S6003C6*), ABISELECT(155728,98824), "S6003C1");
    check_base_class_offset(lv, (S6003C6*)(S6003C17*), ABISELECT(151600,96204), "S6003C1");
    /*is_ambiguous_... S6003C17::S6003C12 */ AMB_check_base_class_offset(lv, (S6003C12*)(S6003C17*), ABISELECT(111440,70712), "S6003C1");
    check_base_class_offset(lv, (S6003C9*)(S6003C13*)(S6003C17*), ABISELECT(117840,74764), "S6003C1");
    check_base_class_offset(lv, (S6003C13*)(S6003C17*), ABISELECT(117840,74764), "S6003C1");
    check_base_class_offset(lv, (S6003C17*), ABISELECT(110960,70396), "S6003C1");
    check_base_class_offset(lv, (S6003C19*), ABISELECT(178352,113156), "S6003C1");
    /*is_ambiguous_... S6003C1::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*), 0, "S6003C1");
    /*is_ambiguous_... S6003C7::S6003C5 */ AMB_check_base_class_offset(lv, (S6003C5*)(S6003C7*)(S6003C22*), ABISELECT(215088,136520), "S6003C1");
    check_base_class_offset(lv, (S6003C7*)(S6003C22*), ABISELECT(215088,136520), "S6003C1");
    check_base_class_offset(lv, (S6003C12*)(S6003C22*), ABISELECT(215552,136812), "S6003C1");
    check_base_class_offset(lv, (S6003C22*), ABISELECT(215088,136520), "S6003C1");
    check_field_offset(lv, s6003c1f0, ABISELECT(106260,67424), "S6003C1.s6003c1f0");
    check_field_offset(lv, s6003c1f1, ABISELECT(106264,67428), "S6003C1.s6003c1f1");
    check_field_offset(lv, s6003c1f2, ABISELECT(106272,67432), "S6003C1.s6003c1f2");
    check_field_offset(lv, s6003c1f3, ABISELECT(106288,67436), "S6003C1.s6003c1f3");
    set_bf_and_test(lv, s6003c1f4, ABISELECT(110784,70280), 0, 3, 1, "S6003C1");
    set_bf_and_test(lv, s6003c1f4, ABISELECT(110784,70280), 0, 3, hide_sll(1LL<<2), "S6003C1");
    check_field_offset(lv, s6003c1f5, ABISELECT(110792,70284), "S6003C1.s6003c1f5");
    check_field_offset(lv, s6003c1f6, ABISELECT(110936,70380), "S6003C1.s6003c1f6");
    set_bf_and_test(lv, s6003c1f7, ABISELECT(110944,70384), 0, 64, 1, "S6003C1");
    set_bf_and_test(lv, s6003c1f7, ABISELECT(110944,70384), 0, 64, hide_sll(1LL<<63), "S6003C1");
    check_field_offset(lv, s6003c1f8, ABISELECT(110952,70392), "S6003C1.s6003c1f8");
    test_class_info(&lv, &cd_S6003C1);
    dp->~S6003C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6003C1(Test_S6003C1, "S6003C1", ABISELECT(222464,141200));

#else // __cplusplus

extern void _ZN7S6003C1C1Ev();
extern void _ZN7S6003C1D1Ev();
Name_Map name_map_S6003C1[] = {
  NSPAIR(_ZN7S6003C1C1Ev),
  NSPAIR(_ZN7S6003C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C2;
extern VTBL_ENTRY _ZTI8S19763C2[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C8;
extern VTBL_ENTRY _ZTI7S6003C8[];
extern  VTBL_ENTRY _ZTV7S6003C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C8[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C15;
extern VTBL_ENTRY _ZTI8S6003C15[];
extern  VTBL_ENTRY _ZTV8S6003C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C15[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C4;
extern VTBL_ENTRY _ZTI7S6003C4[];
extern  VTBL_ENTRY _ZTV7S6003C4[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C10;
extern VTBL_ENTRY _ZTI8S6003C10[];
extern  VTBL_ENTRY _ZTV8S6003C10[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C11;
extern VTBL_ENTRY _ZTI8S6003C11[];
extern  VTBL_ENTRY _ZTV8S6003C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C11[];
extern Class_Descriptor cd_S6003C6;
extern VTBL_ENTRY _ZTI7S6003C6[];
extern  VTBL_ENTRY _ZTV7S6003C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C6[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C9;
extern VTBL_ENTRY _ZTI7S6003C9[];
extern  VTBL_ENTRY _ZTV7S6003C9[];
extern Class_Descriptor cd_S6003C13;
extern VTBL_ENTRY _ZTI8S6003C13[];
extern  VTBL_ENTRY _ZTV8S6003C13[];
extern Class_Descriptor cd_S6003C17;
extern VTBL_ENTRY _ZTI8S6003C17[];
extern  VTBL_ENTRY _ZTV8S6003C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C17[];
extern Class_Descriptor cd_S6003C19;
extern VTBL_ENTRY _ZTI8S6003C19[];
extern  VTBL_ENTRY _ZTV8S6003C19[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C5;
extern VTBL_ENTRY _ZTI7S6003C5[];
extern  VTBL_ENTRY _ZTV7S6003C5[];
extern Class_Descriptor cd_S6003C7;
extern VTBL_ENTRY _ZTI7S6003C7[];
extern  VTBL_ENTRY _ZTV7S6003C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C7[];
extern Class_Descriptor cd_S6003C12;
extern VTBL_ENTRY _ZTI8S6003C12[];
extern  VTBL_ENTRY _ZTV8S6003C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C12[];
extern Class_Descriptor cd_S6003C22;
extern VTBL_ENTRY _ZTI8S6003C22[];
extern  VTBL_ENTRY _ZTV8S6003C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6003C22[];
static Base_Class bases_S6003C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C2,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C4,    ABISELECT(135384,85912), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(135856,86220), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C4,    ABISELECT(110960,70396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(147168,93380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6003C4,    ABISELECT(147464,93564), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(147928,93872), //bcp->offset
    103, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(147168,93380), //bcp->offset
    85, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(151288,96000), //bcp->offset
    106, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6003C8,    ABISELECT(151432,96096), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6003C5,    ABISELECT(136160,86404), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6003C7,    ABISELECT(136160,86404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(136624,86696), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(136160,86404), //bcp->offset
    63, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6003C15,    ABISELECT(110960,70396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(177888,112864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(177888,112864), //bcp->offset
    164, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6003C9,    ABISELECT(151600,96204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C4,    ABISELECT(151896,96388), //bcp->offset
    137, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(152360,96696), //bcp->offset
    142, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6003C10,    ABISELECT(151600,96204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6003C5,    ABISELECT(155728,98824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(155728,98824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(156192,99116), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6003C11,    ABISELECT(155728,98824), //bcp->offset
    145, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6003C6,    ABISELECT(151600,96204), //bcp->offset
    113, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S6003C12,    ABISELECT(111440,70712), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6003C9,    ABISELECT(117840,74764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6003C13,    ABISELECT(117840,74764), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6003C17,    ABISELECT(110960,70396), //bcp->offset
    16, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C19,    ABISELECT(178352,113156), //bcp->offset
    172, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6003C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6003C5,    ABISELECT(215088,136520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6003C7,    ABISELECT(215088,136520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6003C12,    ABISELECT(215552,136812), //bcp->offset
    192, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S6003C22,    ABISELECT(215088,136520), //bcp->offset
    176, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6003C1[];
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C1D1Ev();
extern void _ZN7S6003C1D0Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void ABISELECT(_ZTv0_n112_N7S6003C1D1Ev,_ZTv0_n56_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn110960_N7S6003C1D1Ev,_ZThn70396_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S6003C1D0Ev,_ZTv0_n56_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn110960_N7S6003C1D0Ev,_ZThn70396_N7S6003C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn480_n112_N7S6003C1D1Ev,_ZTvn316_n56_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn480_n112_N7S6003C1D0Ev,_ZTvn316_n56_N7S6003C1D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTvn6880_n112_N7S6003C1D1Ev,_ZTvn4368_n56_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn6880_n112_N7S6003C1D0Ev,_ZTvn4368_n56_N7S6003C1D0Ev)();
extern void _ZN8S6003C133v10Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn136160_N7S6003C1D1Ev,_ZThn86404_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn136160_N7S6003C1D0Ev,_ZThn86404_N7S6003C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N7S6003C1D1Ev,_ZTvn292_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N7S6003C1D0Ev,_ZTvn292_n40_N7S6003C1D0Ev)();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C1D1Ev,_ZTv0_n16_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn147168_N7S6003C1D1Ev,_ZThn93380_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6003C1D0Ev,_ZTv0_n16_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn147168_N7S6003C1D0Ev,_ZThn93380_N7S6003C1D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn151600_N7S6003C1D1Ev,_ZThn96204_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn151600_N7S6003C1D0Ev,_ZThn96204_N7S6003C1D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N7S6003C1D1Ev,_ZTvn2620_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N7S6003C1D0Ev,_ZTvn2620_n40_N7S6003C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N7S6003C1D1Ev,_ZTvn2912_n40_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N7S6003C1D0Ev,_ZTvn2912_n40_N7S6003C1D0Ev)();
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C193v11Ev();
extern void _ZN7S6003C52v5Ev();
extern void ABISELECT(_ZTv0_n72_N7S6003C1D1Ev,_ZTv0_n36_N7S6003C1D1Ev)();
extern void ABISELECT(_ZThn215088_N7S6003C1D1Ev,_ZThn136520_N7S6003C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6003C1D0Ev,_ZTv0_n36_N7S6003C1D0Ev)();
extern void ABISELECT(_ZThn215088_N7S6003C1D0Ev,_ZThn136520_N7S6003C1D0Ev)() __attribute__((weak));
extern void _ZN8S6003C223v12Ev();
extern void _ZN8S6003C223v13Ev();
extern void ABISELECT(_ZTvn464_n72_N7S6003C1D1Ev,_ZTvn292_n36_N7S6003C1D1Ev)();
extern void ABISELECT(_ZTvn464_n72_N7S6003C1D0Ev,_ZTvn292_n36_N7S6003C1D0Ev)();
static  VTBL_ENTRY vtc_S6003C1[] = {
  ABISELECT(215088,136520),
  ABISELECT(178352,113156),
  ABISELECT(177888,112864),
  ABISELECT(151600,96204),
  ABISELECT(151432,96096),
  ABISELECT(151288,96000),
  ABISELECT(147168,93380),
  ABISELECT(136160,86404),
  ABISELECT(135856,86220),
  ABISELECT(135384,85912),
  ABISELECT(110960,70396),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN7S6003C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C1D0Ev,
  ABISELECT(6880,4368),
  ABISELECT(6880,4368),
  ABISELECT(-110960,-70396),
  0,
  0,
  0,
  ABISELECT(66928,42468),
  ABISELECT(40640,25808),
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  ABISELECT(-110960,-70396),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S6003C1D1Ev,_ZTv0_n56_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S6003C1D0Ev,_ZTv0_n56_N7S6003C1D0Ev),
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  ABISELECT(-111440,-70712),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn480_n112_N7S6003C1D1Ev,_ZTvn316_n56_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn480_n112_N7S6003C1D0Ev,_ZTvn316_n56_N7S6003C1D0Ev),
  ABISELECT(-117840,-74764),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn6880_n112_N7S6003C1D1Ev,_ZTvn4368_n56_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn6880_n112_N7S6003C1D0Ev,_ZTvn4368_n56_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C133v10Ev,
  0,
  0,
  0,
  ABISELECT(-135384,-85912),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  0,
  ABISELECT(-135856,-86220),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  ABISELECT(-136160,-86404),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-136160,-86404),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-136624,-86696),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N7S6003C1D1Ev,_ZTvn292_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N7S6003C1D0Ev,_ZTvn292_n40_N7S6003C1D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-147168,-93380),
  0,
  ABISELECT(-147168,-93380),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C1D1Ev,_ZTv0_n16_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C1D0Ev,_ZTv0_n16_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  ABISELECT(-147464,-93564),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-147928,-93872),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-151288,-96000),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-144,-96),
  ABISELECT(-151432,-96096),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-151600,-96204),
  0,
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  ABISELECT(-151600,-96204),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
  ABISELECT(-151896,-96388),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  ABISELECT(-152360,-96696),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-155728,-98824),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N7S6003C1D1Ev,_ZTvn2620_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N7S6003C1D0Ev,_ZTvn2620_n40_N7S6003C1D0Ev),
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-156192,-99116),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N7S6003C1D1Ev,_ZTvn2912_n40_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N7S6003C1D0Ev,_ZTvn2912_n40_N7S6003C1D0Ev),
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-177888,-112864),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  0,
  ABISELECT(-178352,-113156),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN8S6003C193v11Ev,
  0,
  0,
  ABISELECT(-215088,-136520),
  0,
  ABISELECT(-67920,-43140),
  ABISELECT(-79232,-50300),
  ABISELECT(-63800,-40520),
  ABISELECT(-63656,-40424),
  ABISELECT(-79704,-50608),
  ABISELECT(-215088,-136520),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6003C1D1Ev,_ZTv0_n36_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6003C1D0Ev,_ZTv0_n36_N7S6003C1D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v13Ev,
  ABISELECT(-64120,-40716),
  ABISELECT(-64264,-40812),
  ABISELECT(-68384,-43432),
  ABISELECT(-79696,-50592),
  ABISELECT(-215552,-136812),
  (VTBL_ENTRY)&(_ZTI7S6003C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N7S6003C1D1Ev,_ZTvn292_n36_N7S6003C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N7S6003C1D0Ev,_ZTvn292_n36_N7S6003C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6003C1[];
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C17D1Ev();
extern void _ZN8S6003C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C17__7S6003C1[] = {
  ABISELECT(66928,42468),
  ABISELECT(40640,25808),
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C17D0Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
extern void _ZN8S6003C15D1Ev();
extern void _ZN8S6003C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(24424,15516),
  ABISELECT(40472,25700),
  ABISELECT(40328,25604),
  ABISELECT(36208,22984),
  ABISELECT(25200,16008),
  ABISELECT(24896,15824),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C15D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C158S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C158S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A2__8S6003C158S6003C17__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C158S6003C17__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D1Ev,_ZTvn292_n40_N8S6003C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C15D0Ev,_ZTvn292_n40_N8S6003C15D0Ev),
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C17__A2__7S6003C1[] = {
  0,
  ABISELECT(-24416,-15508),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-35728,-22668),
  0,
  ABISELECT(-35728,-22668),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(-36024,-22852),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(-36488,-23160),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C17__A2__7S6003C1[] = {
  0,
  ABISELECT(-39848,-25288),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C17__A2__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-39992,-25384),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__8S6003C17__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(-24424,-15516),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-24896,-15824),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6003C11__8S6003C17__7S6003C1[] = {
  ABISELECT(-25200,-16008),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  ABISELECT(-25200,-16008),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C17__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36208,-22984),
  0,
  ABISELECT(-36208,-22984),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A2__8S6003C17__7S6003C1[] = {
  ABISELECT(-36504,-23168),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C17__7S6003C1[] = {
  ABISELECT(-36968,-23476),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-40328,-25604),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C17__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-40472,-25700),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
};
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__8S6003C17__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-25664,-16300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D1Ev,_ZTvn292_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S6003C17D0Ev,_ZTvn292_n40_N8S6003C17D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev)();
extern void ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C6__8S6003C17__7S6003C1[] = {
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-40640,-25808),
  0,
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  ABISELECT(-40640,-25808),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__8S6003C17__7S6003C1[] = {
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-66928,-42468),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C107S6003C6__A3__8S6003C17__7S6003C1[] = {
  ABISELECT(-40936,-25992),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C107S6003C6__A4__8S6003C17__7S6003C1[] = {
  ABISELECT(-41400,-26300),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C117S6003C6__A1__8S6003C17__7S6003C1[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-44768,-28428),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D1Ev,_ZTvn2620_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S6003C17D0Ev,_ZTvn2620_n40_N8S6003C17D0Ev),
};
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-45232,-28720),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D1Ev,_ZTvn2912_n40_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S6003C17D0Ev,_ZTvn2912_n40_N8S6003C17D0Ev),
};
extern void ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev)();
extern void ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__A2__8S6003C17__7S6003C1[] = {
  ABISELECT(39992,25384),
  ABISELECT(39848,25288),
  ABISELECT(35728,22668),
  ABISELECT(24416,15508),
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S6003C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D1Ev,_ZThn316_N8S6003C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn480_N8S6003C17D0Ev,_ZThn316_N8S6003C17D0Ev),
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C1[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C11__7S6003C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(-776,-492),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C11__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C11__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C11__7S6003C1[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C11__7S6003C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C1[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C1[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev)() __attribute__((weak));
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C11__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C1[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C1[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C11__7S6003C1[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C11__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C11__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C11__7S6003C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C11__7S6003C1[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C1[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C8__7S6003C1[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S6003C8[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void _ZN7S6003C6D1Ev();
extern void _ZN7S6003C6D0Ev();
extern void _ZN8S6003C102v6Ev();
extern void _ZN7S6003C62v8Ev();
extern void _ZN7S6003C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C6__7S6003C1[] = {
  ABISELECT(-4432,-2824),
  ABISELECT(-15744,-9984),
  ABISELECT(-168,-108),
  ABISELECT(-16216,-10292),
  ABISELECT(26288,16660),
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6003C6D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v8Ev,
  (VTBL_ENTRY)&_ZN7S6003C62v9Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void _ZN8S6003C11D1Ev();
extern void _ZN8S6003C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C11D0Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__7S6003C1[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(20336,12896),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(9024,5736),
  0,
  ABISELECT(9024,5736),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(8728,5552),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(8264,5244),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(4904,3116),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(4760,3020),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8560,5444),
  0,
  ABISELECT(8560,5444),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(8264,5260),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(7800,4952),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(4296,2728),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(20344,12912),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__7S6003C1[] = {
  0,
  ABISELECT(19872,12604),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C117S6003C6__A1__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D1Ev,_ZThn292_N8S6003C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C11D0Ev,_ZThn292_N8S6003C11D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__7S6003C6__7S6003C1[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__7S6003C6__7S6003C1[] = {
  0,
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C6__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(16216,10292),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C6__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C6__7S6003C1[] = {
  0,
  ABISELECT(15744,9984),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C112v7Ev();
extern void ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C11__7S6003C6__7S6003C1[] = {
  ABISELECT(-8560,-5444),
  ABISELECT(-19872,-12604),
  ABISELECT(-4440,-2824),
  ABISELECT(-4296,-2728),
  ABISELECT(-20344,-12912),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C112v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D1Ev,_ZThn2620_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N7S6003C6D0Ev,_ZThn2620_N7S6003C6D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__A1__7S6003C6__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4432,2824),
  0,
  ABISELECT(4432,2824),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D1Ev,_ZTv0_n16_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6003C6D0Ev,_ZTv0_n16_N7S6003C6D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A2__7S6003C6__7S6003C1[] = {
  ABISELECT(4136,2640),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A3__7S6003C6__7S6003C1[] = {
  ABISELECT(3672,2332),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev)();
extern void ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C11__7S6003C6__7S6003C1[] = {
  ABISELECT(-4760,-3020),
  ABISELECT(-4904,-3116),
  ABISELECT(-9024,-5736),
  ABISELECT(-20336,-12896),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI7S6003C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D1Ev,_ZThn2912_N7S6003C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N7S6003C6D0Ev,_ZThn2912_N7S6003C6D0Ev),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C7__A1__7S6003C1[] = {
  ABISELECT(-42032,-26644),
  ABISELECT(-26600,-16864),
  ABISELECT(-26456,-16768),
  ABISELECT(-42504,-26952),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C7__A1__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(42504,26952),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C7__A1__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(26456,16768),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C7__A1__7S6003C1[] = {
  0,
  ABISELECT(26600,16864),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C7__A1__7S6003C1[] = {
  0,
  ABISELECT(42032,26644),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C52v5Ev();
extern void _ZN8S6003C22D1Ev();
extern void _ZN8S6003C22D0Ev();
extern void _ZN8S6003C223v12Ev();
extern void _ZN8S6003C223v13Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C22__7S6003C1[] = {
  ABISELECT(-67920,-43140),
  ABISELECT(-79232,-50300),
  ABISELECT(-63800,-40520),
  ABISELECT(-63656,-40424),
  ABISELECT(-79704,-50608),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C22D0Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v12Ev,
  (VTBL_ENTRY)&_ZN8S6003C223v13Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C78S6003C22__A3__7S6003C1[] = {
  ABISELECT(-79232,-50300),
  ABISELECT(-63800,-40520),
  ABISELECT(-63656,-40424),
  ABISELECT(-79704,-50608),
  0,
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__7S6003C78S6003C22__A3__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(79704,50608),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__7S6003C78S6003C22__A3__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(63656,40424),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__7S6003C78S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(63800,40520),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__7S6003C78S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(79232,50300),
  (VTBL_ENTRY)&(_ZTI7S6003C7[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN8S6003C12D1Ev();
extern void _ZN8S6003C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(-64120,-40716),
  ABISELECT(-64264,-40812),
  ABISELECT(-68384,-43432),
  ABISELECT(-79696,-50592),
  0,
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN8S6003C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6003C12D0Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C128S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(79696,50592),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(68384,43432),
  0,
  ABISELECT(68384,43432),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(68088,43248),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(67624,42940),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C128S6003C22__A3__7S6003C1[] = {
  0,
  ABISELECT(64264,40812),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C128S6003C22__A3__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(64120,40716),
  (VTBL_ENTRY)&(_ZTI8S6003C12[0]),
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C4__8S6003C22__7S6003C1[] = {
  0,
  0,
  0,
  ABISELECT(79704,50608),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
static  VTBL_ENTRY _tg__ZTV7S6003C8__8S6003C22__7S6003C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(63656,40424),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C5__A1__8S6003C22__7S6003C1[] = {
  0,
  ABISELECT(63800,40520),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
extern void _ZN7S6003C92v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C9__8S6003C22__7S6003C1[] = {
  0,
  ABISELECT(79232,50300),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
};
extern void ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev)();
extern void ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6003C12__8S6003C22__7S6003C1[] = {
  ABISELECT(-64120,-40716),
  ABISELECT(-64264,-40812),
  ABISELECT(-68384,-43432),
  ABISELECT(-79696,-50592),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D1Ev,_ZThn292_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S6003C22D0Ev,_ZThn292_N8S6003C22D0Ev),
};
extern void _ZN7S6003C92v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev)();
extern void _ZN8S6003C102v6Ev();
static  VTBL_ENTRY _tg__ZTV8S6003C10__8S6003C22__7S6003C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(67920,43140),
  0,
  ABISELECT(67920,43140),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D1Ev,_ZTv0_n16_N8S6003C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6003C22D0Ev,_ZTv0_n16_N8S6003C22D0Ev),
  (VTBL_ENTRY)&_ZN8S6003C102v6Ev,
};
extern void _ZN7S6003C42v2Ev();
extern void _ZN7S6003C42v3Ev();
extern void _ZN7S6003C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C48S6003C10__A1__8S6003C22__7S6003C1[] = {
  ABISELECT(67624,42956),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C42v2Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6003C42v4Ev,
};
extern void _ZN7S6003C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6003C58S6003C10__A2__8S6003C22__7S6003C1[] = {
  ABISELECT(67160,42648),
  (VTBL_ENTRY)&(_ZTI8S6003C22[0]),
  (VTBL_ENTRY)&_ZN7S6003C52v5Ev,
};
static  VTT_ENTRY vtt_S6003C1[] = {
  {&(_ZTV7S6003C1[13]),  13,200},
  {&(_ZTV7S6003C1[32]),  32,200},
  {&(_ZTV7S6003C1[56]),  56,200},
  {&(_ZTV7S6003C1[62]),  62,200},
  {&(_ZTV7S6003C1[73]),  73,200},
  {&(_ZTV7S6003C1[94]),  94,200},
  {&(_ZTV7S6003C1[100]),  100,200},
  {&(_ZTV7S6003C1[105]),  105,200},
  {&(_ZTV7S6003C1[109]),  109,200},
  {&(_ZTV7S6003C1[113]),  113,200},
  {&(_ZTV7S6003C1[83]),  83,200},
  {&(_ZTV7S6003C1[131]),  131,200},
  {&(_ZTV7S6003C1[171]),  171,200},
  {&(_ZTV7S6003C1[139]),  139,200},
  {&(_ZTV7S6003C1[144]),  144,200},
  {&(_ZTV7S6003C1[152]),  152,200},
  {&(_ZTV7S6003C1[162]),  162,200},
  {&(_ZTV7S6003C1[43]),  43,200},
  {&(_ZTV7S6003C1[47]),  47,200},
  {&(_ZTV7S6003C1[175]),  175,200},
  {&(_ZTV7S6003C1[187]),  187,200},
  {&(_ZTV7S6003C1[198]),  198,200},
  {&(_tg__ZTV8S6003C17__7S6003C1[10]),  10,15},
  {&(_tg__ZTV8S6003C158S6003C17__7S6003C1[8]),  8,13},
  {&(_tg__ZTV7S6003C9__8S6003C158S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C158S6003C17__7S6003C1[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C158S6003C17__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C158S6003C17__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C158S6003C17__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C158S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C158S6003C17__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A2__8S6003C158S6003C17__7S6003C1[5]),  5,8},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C158S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C128S6003C17__A2__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C17__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C17__A2__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C17__A2__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C17__A2__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C17__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C17__A2__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__8S6003C17__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C9__8S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C11__8S6003C17__7S6003C1[10]),  10,14},
  {&(_tg__ZTV8S6003C10__8S6003C17__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A2__8S6003C17__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C17__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C17__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C17__7S6003C1[3]),  3,3},
  {&(_tg__ZTV8S6003C128S6003C11__8S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C6__8S6003C17__7S6003C1[18]),  18,24},
  {&(_tg__ZTV7S6003C7__A1__8S6003C17__7S6003C1[7]),  7,8},
  {&(_tg__ZTV7S6003C48S6003C107S6003C6__A3__8S6003C17__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C107S6003C6__A4__8S6003C17__7S6003C1[2]),  2,3},
  {&(_tg__ZTV8S6003C117S6003C6__A1__8S6003C17__7S6003C1[7]),  7,11},
  {&(_tg__ZTV8S6003C128S6003C117S6003C6__A1__8S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C12__A2__8S6003C17__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C11__7S6003C1[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C11__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C11__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C11__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C11__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C11__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C11__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C11__7S6003C1[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C11__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C11__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C11__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C11__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C11__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C11__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C11__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C8__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__7S6003C8__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C6__7S6003C1[8]),  8,14},
  {&(_tg__ZTV8S6003C117S6003C6__A1__7S6003C1[7]),  7,11},
  {&(_tg__ZTV7S6003C78S6003C117S6003C6__A2__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C117S6003C6__A2__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C117S6003C6__A2__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C117S6003C6__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C117S6003C6__A2__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C117S6003C6__A1__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C117S6003C6__A1__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C117S6003C6__A1__7S6003C1[3]),  3,3},
  {&(_tg__ZTV8S6003C10__8S6003C117S6003C6__A1__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C117S6003C6__A1__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C117S6003C6__A1__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C117S6003C6__A1__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__A1__8S6003C117S6003C6__A1__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C9__A1__8S6003C117S6003C6__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C117S6003C6__A1__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C5__7S6003C6__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C7__7S6003C6__7S6003C1[7]),  7,8},
  {&(_tg__ZTV7S6003C4__7S6003C6__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C6__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C9__7S6003C6__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C11__7S6003C6__7S6003C1[7]),  7,11},
  {&(_tg__ZTV8S6003C10__A1__7S6003C6__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A2__7S6003C6__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A3__7S6003C6__7S6003C1[2]),  2,3},
  {&(_tg__ZTV8S6003C128S6003C11__7S6003C6__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C7__A1__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C7__A1__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C7__A1__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C7__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C7__A1__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C22__7S6003C1[7]),  7,12},
  {&(_tg__ZTV7S6003C78S6003C22__A3__7S6003C1[6]),  6,7},
  {&(_tg__ZTV7S6003C4__7S6003C78S6003C22__A3__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__7S6003C78S6003C22__A3__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__7S6003C78S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__7S6003C78S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C128S6003C22__A3__7S6003C1[6]),  6,8},
  {&(_tg__ZTV7S6003C9__8S6003C128S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C10__8S6003C128S6003C22__A3__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__8S6003C128S6003C22__A3__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__8S6003C128S6003C22__A3__7S6003C1[2]),  2,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C128S6003C22__A3__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C8__8S6003C128S6003C22__A3__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C4__8S6003C22__7S6003C1[5]),  5,8},
  {&(_tg__ZTV7S6003C8__8S6003C22__7S6003C1[3]),  3,3},
  {&(_tg__ZTV7S6003C5__A1__8S6003C22__7S6003C1[3]),  3,4},
  {&(_tg__ZTV7S6003C9__8S6003C22__7S6003C1[3]),  3,4},
  {&(_tg__ZTV8S6003C12__8S6003C22__7S6003C1[6]),  6,8},
  {&(_tg__ZTV8S6003C10__8S6003C22__7S6003C1[9]),  9,13},
  {&(_tg__ZTV7S6003C48S6003C10__A1__8S6003C22__7S6003C1[2]),  2,5},
  {&(_tg__ZTV7S6003C58S6003C10__A2__8S6003C22__7S6003C1[2]),  2,3},
};
extern VTBL_ENTRY _ZTI7S6003C1[];
extern  VTBL_ENTRY _ZTV7S6003C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6003C1[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D0Ev,_ZTv0_n16_N8S6003C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D0Ev,_ZThn6976_N8S6003C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C11D1Ev,_ZTv0_n16_N8S6003C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S6003C11D1Ev,_ZThn6976_N8S6003C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D0Ev,_ZTv0_n16_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D0Ev,_ZThn22984_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C17D1Ev,_ZTv0_n16_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C17D1Ev,_ZThn22984_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D0Ev,_ZTv0_n40_N8S6003C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D0Ev,_ZThn25808_N8S6003C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D0Ev,_ZThn16008_N8S6003C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C17D1Ev,_ZTv0_n40_N8S6003C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40640_N8S6003C17D1Ev,_ZThn25808_N8S6003C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C17D1Ev,_ZThn16008_N8S6003C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D0Ev,_ZTv0_n16_N8S6003C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D0Ev,_ZThn6684_N8S6003C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D0Ev,_ZThn22668_N8S6003C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C12D1Ev,_ZTv0_n16_N8S6003C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N8S6003C12D1Ev,_ZThn6684_N8S6003C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35728_N8S6003C12D1Ev,_ZThn22668_N8S6003C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D0Ev,_ZTv0_n16_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D0Ev,_ZThn22984_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6003C15D1Ev,_ZTv0_n16_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36208_N8S6003C15D1Ev,_ZThn22984_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D0Ev,_ZTv0_n40_N8S6003C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D0Ev,_ZThn16008_N8S6003C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6003C15D1Ev,_ZTv0_n40_N8S6003C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn25200_N8S6003C15D1Ev,_ZThn16008_N8S6003C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6003C1D0Ev,_ZTv0_n36_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn215088_N7S6003C1D0Ev,_ZThn136520_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6003C1D1Ev,_ZTv0_n36_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn215088_N7S6003C1D1Ev,_ZThn136520_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C1D0Ev,_ZTv0_n16_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147168_N7S6003C1D0Ev,_ZThn93380_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6003C1D1Ev,_ZTv0_n16_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn147168_N7S6003C1D1Ev,_ZThn93380_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6003C1D0Ev,_ZTv0_n40_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn151600_N7S6003C1D0Ev,_ZThn96204_N7S6003C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136160_N7S6003C1D0Ev,_ZThn86404_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6003C1D1Ev,_ZTv0_n40_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn151600_N7S6003C1D1Ev,_ZThn96204_N7S6003C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136160_N7S6003C1D1Ev,_ZThn86404_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S6003C1D0Ev,_ZTv0_n56_N7S6003C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn110960_N7S6003C1D0Ev,_ZThn70396_N7S6003C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S6003C1D1Ev,_ZTv0_n56_N7S6003C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn110960_N7S6003C1D1Ev,_ZThn70396_N7S6003C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6003C1 = {  "S6003C1", // class name
  bases_S6003C1, 36,
  &(vtc_S6003C1[0]), // expected_vtbl_contents
  &(vtt_S6003C1[0]), // expected_vtt_contents
  ABISELECT(222464,141200), // object size
  NSPAIRA(_ZTI7S6003C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6003C1),200, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6003C1),137, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S205C6  {
  int s205c6f0;
  __tsi64 s205c6f1;
  void *s205c6f2[4];
  int s205c6f3[2];
  void *s205c6f4;
  ::S3423C4_nt s205c6f5;
  void *s205c6f6[2];
  virtual  ~S205C6(); // _ZN6S205C6D1Ev
  virtual void  v4(); // _ZN6S205C62v4Ev
  virtual void  v5(); // _ZN6S205C62v5Ev
  virtual void  v6(); // _ZN6S205C62v6Ev
  virtual void  v7(); // _ZN6S205C62v7Ev
  virtual void  v8(); // _ZN6S205C62v8Ev
  virtual void  v9(); // _ZN6S205C62v9Ev
  virtual void  v10(); // _ZN6S205C63v10Ev
  virtual void  v11(); // _ZN6S205C63v11Ev
  virtual void  v12(); // _ZN6S205C63v12Ev
  virtual void  v13(); // _ZN6S205C63v13Ev
  virtual void  v14(); // _ZN6S205C63v14Ev
  virtual void  v15(); // _ZN6S205C63v15Ev
  virtual void  v16(); // _ZN6S205C63v16Ev
  virtual void  v17(); // _ZN6S205C63v17Ev
  virtual void  v18(); // _ZN6S205C63v18Ev
  virtual void  v19(); // _ZN6S205C63v19Ev
  virtual void  v20(); // _ZN6S205C63v20Ev
  virtual void  v21(); // _ZN6S205C63v21Ev
  virtual void  v22(); // _ZN6S205C63v22Ev
  virtual void  v23(); // _ZN6S205C63v23Ev
  virtual void  v24(); // _ZN6S205C63v24Ev
  virtual void  v25(); // _ZN6S205C63v25Ev
  virtual void  v26(); // _ZN6S205C63v26Ev
  virtual void  v27(); // _ZN6S205C63v27Ev
  virtual void  v28(); // _ZN6S205C63v28Ev
  virtual void  v29(); // _ZN6S205C63v29Ev
  virtual void  v30(); // _ZN6S205C63v30Ev
  virtual void  v31(); // _ZN6S205C63v31Ev
  virtual void  v32(); // _ZN6S205C63v32Ev
  virtual void  v33(); // _ZN6S205C63v33Ev
  virtual void  v34(); // _ZN6S205C63v34Ev
  virtual void  v35(); // _ZN6S205C63v35Ev
  virtual void  v36(); // _ZN6S205C63v36Ev
  virtual void  v37(); // _ZN6S205C63v37Ev
  virtual void  v38(); // _ZN6S205C63v38Ev
  virtual void  v39(); // _ZN6S205C63v39Ev
  virtual void  v40(); // _ZN6S205C63v40Ev
  virtual void  v41(); // _ZN6S205C63v41Ev
  virtual void  v42(); // _ZN6S205C63v42Ev
  virtual void  v43(); // _ZN6S205C63v43Ev
  virtual void  v44(); // _ZN6S205C63v44Ev
  virtual void  v45(); // _ZN6S205C63v45Ev
  virtual void  v46(); // _ZN6S205C63v46Ev
  virtual void  v47(); // _ZN6S205C63v47Ev
  virtual void  v48(); // _ZN6S205C63v48Ev
  virtual void  v49(); // _ZN6S205C63v49Ev
  virtual void  v50(); // _ZN6S205C63v50Ev
  virtual void  v51(); // _ZN6S205C63v51Ev
  virtual void  v52(); // _ZN6S205C63v52Ev
  virtual void  v53(); // _ZN6S205C63v53Ev
  virtual void  v54(); // _ZN6S205C63v54Ev
  virtual void  v55(); // _ZN6S205C63v55Ev
  virtual void  v56(); // _ZN6S205C63v56Ev
  virtual void  v57(); // _ZN6S205C63v57Ev
  virtual void  v58(); // _ZN6S205C63v58Ev
  virtual void  v59(); // _ZN6S205C63v59Ev
  virtual void  v60(); // _ZN6S205C63v60Ev
  virtual void  v61(); // _ZN6S205C63v61Ev
  virtual void  v62(); // _ZN6S205C63v62Ev
  virtual void  v63(); // _ZN6S205C63v63Ev
  virtual void  v64(); // _ZN6S205C63v64Ev
  virtual void  v65(); // _ZN6S205C63v65Ev
  virtual void  v66(); // _ZN6S205C63v66Ev
  virtual void  v67(); // _ZN6S205C63v67Ev
  S205C6(); // tgen
};
//SIG(-1 S205C6) 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]}


 S205C6 ::~S205C6(){ note_dtor("S205C6", this);}
void  S205C6 ::v4(){vfunc_called(this, "_ZN6S205C62v4Ev");}
void  S205C6 ::v5(){vfunc_called(this, "_ZN6S205C62v5Ev");}
void  S205C6 ::v6(){vfunc_called(this, "_ZN6S205C62v6Ev");}
void  S205C6 ::v7(){vfunc_called(this, "_ZN6S205C62v7Ev");}
void  S205C6 ::v8(){vfunc_called(this, "_ZN6S205C62v8Ev");}
void  S205C6 ::v9(){vfunc_called(this, "_ZN6S205C62v9Ev");}
void  S205C6 ::v10(){vfunc_called(this, "_ZN6S205C63v10Ev");}
void  S205C6 ::v11(){vfunc_called(this, "_ZN6S205C63v11Ev");}
void  S205C6 ::v12(){vfunc_called(this, "_ZN6S205C63v12Ev");}
void  S205C6 ::v13(){vfunc_called(this, "_ZN6S205C63v13Ev");}
void  S205C6 ::v14(){vfunc_called(this, "_ZN6S205C63v14Ev");}
void  S205C6 ::v15(){vfunc_called(this, "_ZN6S205C63v15Ev");}
void  S205C6 ::v16(){vfunc_called(this, "_ZN6S205C63v16Ev");}
void  S205C6 ::v17(){vfunc_called(this, "_ZN6S205C63v17Ev");}
void  S205C6 ::v18(){vfunc_called(this, "_ZN6S205C63v18Ev");}
void  S205C6 ::v19(){vfunc_called(this, "_ZN6S205C63v19Ev");}
void  S205C6 ::v20(){vfunc_called(this, "_ZN6S205C63v20Ev");}
void  S205C6 ::v21(){vfunc_called(this, "_ZN6S205C63v21Ev");}
void  S205C6 ::v22(){vfunc_called(this, "_ZN6S205C63v22Ev");}
void  S205C6 ::v23(){vfunc_called(this, "_ZN6S205C63v23Ev");}
void  S205C6 ::v24(){vfunc_called(this, "_ZN6S205C63v24Ev");}
void  S205C6 ::v25(){vfunc_called(this, "_ZN6S205C63v25Ev");}
void  S205C6 ::v26(){vfunc_called(this, "_ZN6S205C63v26Ev");}
void  S205C6 ::v27(){vfunc_called(this, "_ZN6S205C63v27Ev");}
void  S205C6 ::v28(){vfunc_called(this, "_ZN6S205C63v28Ev");}
void  S205C6 ::v29(){vfunc_called(this, "_ZN6S205C63v29Ev");}
void  S205C6 ::v30(){vfunc_called(this, "_ZN6S205C63v30Ev");}
void  S205C6 ::v31(){vfunc_called(this, "_ZN6S205C63v31Ev");}
void  S205C6 ::v32(){vfunc_called(this, "_ZN6S205C63v32Ev");}
void  S205C6 ::v33(){vfunc_called(this, "_ZN6S205C63v33Ev");}
void  S205C6 ::v34(){vfunc_called(this, "_ZN6S205C63v34Ev");}
void  S205C6 ::v35(){vfunc_called(this, "_ZN6S205C63v35Ev");}
void  S205C6 ::v36(){vfunc_called(this, "_ZN6S205C63v36Ev");}
void  S205C6 ::v37(){vfunc_called(this, "_ZN6S205C63v37Ev");}
void  S205C6 ::v38(){vfunc_called(this, "_ZN6S205C63v38Ev");}
void  S205C6 ::v39(){vfunc_called(this, "_ZN6S205C63v39Ev");}
void  S205C6 ::v40(){vfunc_called(this, "_ZN6S205C63v40Ev");}
void  S205C6 ::v41(){vfunc_called(this, "_ZN6S205C63v41Ev");}
void  S205C6 ::v42(){vfunc_called(this, "_ZN6S205C63v42Ev");}
void  S205C6 ::v43(){vfunc_called(this, "_ZN6S205C63v43Ev");}
void  S205C6 ::v44(){vfunc_called(this, "_ZN6S205C63v44Ev");}
void  S205C6 ::v45(){vfunc_called(this, "_ZN6S205C63v45Ev");}
void  S205C6 ::v46(){vfunc_called(this, "_ZN6S205C63v46Ev");}
void  S205C6 ::v47(){vfunc_called(this, "_ZN6S205C63v47Ev");}
void  S205C6 ::v48(){vfunc_called(this, "_ZN6S205C63v48Ev");}
void  S205C6 ::v49(){vfunc_called(this, "_ZN6S205C63v49Ev");}
void  S205C6 ::v50(){vfunc_called(this, "_ZN6S205C63v50Ev");}
void  S205C6 ::v51(){vfunc_called(this, "_ZN6S205C63v51Ev");}
void  S205C6 ::v52(){vfunc_called(this, "_ZN6S205C63v52Ev");}
void  S205C6 ::v53(){vfunc_called(this, "_ZN6S205C63v53Ev");}
void  S205C6 ::v54(){vfunc_called(this, "_ZN6S205C63v54Ev");}
void  S205C6 ::v55(){vfunc_called(this, "_ZN6S205C63v55Ev");}
void  S205C6 ::v56(){vfunc_called(this, "_ZN6S205C63v56Ev");}
void  S205C6 ::v57(){vfunc_called(this, "_ZN6S205C63v57Ev");}
void  S205C6 ::v58(){vfunc_called(this, "_ZN6S205C63v58Ev");}
void  S205C6 ::v59(){vfunc_called(this, "_ZN6S205C63v59Ev");}
void  S205C6 ::v60(){vfunc_called(this, "_ZN6S205C63v60Ev");}
void  S205C6 ::v61(){vfunc_called(this, "_ZN6S205C63v61Ev");}
void  S205C6 ::v62(){vfunc_called(this, "_ZN6S205C63v62Ev");}
void  S205C6 ::v63(){vfunc_called(this, "_ZN6S205C63v63Ev");}
void  S205C6 ::v64(){vfunc_called(this, "_ZN6S205C63v64Ev");}
void  S205C6 ::v65(){vfunc_called(this, "_ZN6S205C63v65Ev");}
void  S205C6 ::v66(){vfunc_called(this, "_ZN6S205C63v66Ev");}
void  S205C6 ::v67(){vfunc_called(this, "_ZN6S205C63v67Ev");}
S205C6 ::S205C6(){ note_ctor("S205C6", this);} // tgen

static void Test_S205C6()
{
  extern Class_Descriptor cd_S205C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S205C6, buf);
    S205C6 *dp, &lv = *(dp=new (buf) S205C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S205C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C6)");
    check_field_offset(lv, s205c6f0, ABISELECT(8,4), "S205C6.s205c6f0");
    check_field_offset(lv, s205c6f1, ABISELECT(16,8), "S205C6.s205c6f1");
    check_field_offset(lv, s205c6f2, ABISELECT(24,16), "S205C6.s205c6f2");
    check_field_offset(lv, s205c6f3, ABISELECT(56,32), "S205C6.s205c6f3");
    check_field_offset(lv, s205c6f4, ABISELECT(64,40), "S205C6.s205c6f4");
    check_field_offset(lv, s205c6f5, ABISELECT(72,44), "S205C6.s205c6f5");
    check_field_offset(lv, s205c6f6, ABISELECT(80,52), "S205C6.s205c6f6");
    test_class_info(&lv, &cd_S205C6);
    dp->~S205C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C6(Test_S205C6, "S205C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S205C6C1Ev();
extern void _ZN6S205C6D1Ev();
Name_Map name_map_S205C6[] = {
  NSPAIR(_ZN6S205C6C1Ev),
  NSPAIR(_ZN6S205C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S205C6[];
extern void _ZN6S205C6D1Ev();
extern void _ZN6S205C6D0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
static  VTBL_ENTRY vtc_S205C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S205C6[0]),
  (VTBL_ENTRY)&_ZN6S205C6D1Ev,
  (VTBL_ENTRY)&_ZN6S205C6D0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
};
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
Class_Descriptor cd_S205C6 = {  "S205C6", // class name
  0,0,//no base classes
  &(vtc_S205C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S205C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S205C6),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  S205C10  : S3423C7_nt {
};
//SIG(-1 S205C10) C1{ BC2{ m Fp Fi[2]}}



static void Test_S205C10()
{
  extern Class_Descriptor cd_S205C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C10, buf);
    S205C10 &lv = *(new (buf) S205C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C10)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S205C10");
    test_class_info(&lv, &cd_S205C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C10(Test_S205C10, "S205C10", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S205C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S205C10 = {  "S205C10", // class name
  bases_S205C10, 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  S205C9  : S205C10 {
};
//SIG(-1 S205C9) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S205C9()
{
  extern Class_Descriptor cd_S205C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C9, buf);
    S205C9 &lv = *(new (buf) S205C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C9)");
    check_base_class_offset(lv, (S3423C7_nt*)(S205C10*), 0, "S205C9");
    check_base_class_offset(lv, (S205C10*), 0, "S205C9");
    test_class_info(&lv, &cd_S205C9);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C9(Test_S205C9, "S205C9", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S205C10;
static Base_Class bases_S205C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S205C9 = {  "S205C9", // class name
  bases_S205C9, 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  S205C8_nt  : S205C9 {
};
//SIG(-1 S205C8_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S205C8_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S205C10;
extern Class_Descriptor cd_S205C9;
static Base_Class bases_S205C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S205C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S205C5_nt  : S205C6 {
  int s205c5f0[2];
  void *s205c5f1;
  int s205c5f2[2];
  ::S205C8_nt s205c5f3;
  ::S205C8_nt s205c5f4;
  ::S4228C37 s205c5f5;
  ::S205C8_nt s205c5f6;
  unsigned int s205c5f7:1;
  unsigned int s205c5f8:1;
  unsigned int s205c5f9:1;
  unsigned int s205c5f10:1;
  unsigned int s205c5f11:1;
  int s205c5f12[2];
  virtual  ~S205C5_nt(); // _ZN9S205C5_ntD1Ev
  virtual void  v68(); // _ZN9S205C5_nt3v68Ev
  virtual void  v69(); // _ZN9S205C5_nt3v69Ev
  virtual void  v70(); // _ZN9S205C5_nt3v70Ev
  virtual void  v71(); // _ZN9S205C5_nt3v71Ev
  virtual void  v72(); // _ZN9S205C5_nt3v72Ev
  virtual void  v73(); // _ZN9S205C5_nt3v73Ev
  virtual void  v74(); // _ZN9S205C5_nt3v74Ev
  virtual void  v75(); // _ZN9S205C5_nt3v75Ev
  virtual void  v76(); // _ZN9S205C5_nt3v76Ev
  virtual void  v77(); // _ZN9S205C5_nt3v77Ev
  virtual void  v78(); // _ZN9S205C5_nt3v78Ev
  virtual void  v79(); // _ZN9S205C5_nt3v79Ev
  virtual void  v80(); // _ZN9S205C5_nt3v80Ev
  virtual void  v81(); // _ZN9S205C5_nt3v81Ev
  virtual void  v82(); // _ZN9S205C5_nt3v82Ev
  virtual void  v83(); // _ZN9S205C5_nt3v83Ev
  virtual void  v84(); // _ZN9S205C5_nt3v84Ev
  virtual void  v85(); // _ZN9S205C5_nt3v85Ev
  virtual void  v86(); // _ZN9S205C5_nt3v86Ev
  virtual void  v87(); // _ZN9S205C5_nt3v87Ev
  virtual void  v88(); // _ZN9S205C5_nt3v88Ev
  virtual void  v89(); // _ZN9S205C5_nt3v89Ev
  S205C5_nt(); // tgen
};
//SIG(-1 S205C5_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]}


 S205C5_nt ::~S205C5_nt(){ note_dtor("S205C5_nt", this);}
void  S205C5_nt ::v68(){vfunc_called(this, "_ZN9S205C5_nt3v68Ev");}
void  S205C5_nt ::v69(){vfunc_called(this, "_ZN9S205C5_nt3v69Ev");}
void  S205C5_nt ::v70(){vfunc_called(this, "_ZN9S205C5_nt3v70Ev");}
void  S205C5_nt ::v71(){vfunc_called(this, "_ZN9S205C5_nt3v71Ev");}
void  S205C5_nt ::v72(){vfunc_called(this, "_ZN9S205C5_nt3v72Ev");}
void  S205C5_nt ::v73(){vfunc_called(this, "_ZN9S205C5_nt3v73Ev");}
void  S205C5_nt ::v74(){vfunc_called(this, "_ZN9S205C5_nt3v74Ev");}
void  S205C5_nt ::v75(){vfunc_called(this, "_ZN9S205C5_nt3v75Ev");}
void  S205C5_nt ::v76(){vfunc_called(this, "_ZN9S205C5_nt3v76Ev");}
void  S205C5_nt ::v77(){vfunc_called(this, "_ZN9S205C5_nt3v77Ev");}
void  S205C5_nt ::v78(){vfunc_called(this, "_ZN9S205C5_nt3v78Ev");}
void  S205C5_nt ::v79(){vfunc_called(this, "_ZN9S205C5_nt3v79Ev");}
void  S205C5_nt ::v80(){vfunc_called(this, "_ZN9S205C5_nt3v80Ev");}
void  S205C5_nt ::v81(){vfunc_called(this, "_ZN9S205C5_nt3v81Ev");}
void  S205C5_nt ::v82(){vfunc_called(this, "_ZN9S205C5_nt3v82Ev");}
void  S205C5_nt ::v83(){vfunc_called(this, "_ZN9S205C5_nt3v83Ev");}
void  S205C5_nt ::v84(){vfunc_called(this, "_ZN9S205C5_nt3v84Ev");}
void  S205C5_nt ::v85(){vfunc_called(this, "_ZN9S205C5_nt3v85Ev");}
void  S205C5_nt ::v86(){vfunc_called(this, "_ZN9S205C5_nt3v86Ev");}
void  S205C5_nt ::v87(){vfunc_called(this, "_ZN9S205C5_nt3v87Ev");}
void  S205C5_nt ::v88(){vfunc_called(this, "_ZN9S205C5_nt3v88Ev");}
void  S205C5_nt ::v89(){vfunc_called(this, "_ZN9S205C5_nt3v89Ev");}
S205C5_nt ::S205C5_nt(){ note_ctor("S205C5_nt", this);} // tgen

//skip512 S205C5_nt

#else // __cplusplus

extern void _ZN9S205C5_ntC1Ev();
extern void _ZN9S205C5_ntD1Ev();
Name_Map name_map_S205C5_nt[] = {
  NSPAIR(_ZN9S205C5_ntC1Ev),
  NSPAIR(_ZN9S205C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
static Base_Class bases_S205C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern void _ZN9S205C5_ntD1Ev();
extern void _ZN9S205C5_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
static  VTBL_ENTRY vtc_S205C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI9S205C5_nt[];
VTBL_ENTRY *P__ZTI9S205C5_nt = _ZTI9S205C5_nt; 
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
Class_Descriptor cd_S205C5_nt = {  "S205C5_nt", // class name
  bases_S205C5_nt, 1,
  &(vtc_S205C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S205C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C5_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  S205C20  : S3423C7_nt {
};
//SIG(-1 S205C20) C1{ BC2{ m Fp Fi[2]}}



static void Test_S205C20()
{
  extern Class_Descriptor cd_S205C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C20, buf);
    S205C20 &lv = *(new (buf) S205C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C20)");
    check_base_class_offset(lv, (S3423C7_nt*), 0, "S205C20");
    test_class_info(&lv, &cd_S205C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C20(Test_S205C20, "S205C20", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
static Base_Class bases_S205C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S205C20 = {  "S205C20", // class name
  bases_S205C20, 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  S205C19  : S205C20 {
};
//SIG(-1 S205C19) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S205C19()
{
  extern Class_Descriptor cd_S205C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S205C19, buf);
    S205C19 &lv = *(new (buf) S205C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S205C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C19)");
    check_base_class_offset(lv, (S3423C7_nt*)(S205C20*), 0, "S205C19");
    check_base_class_offset(lv, (S205C20*), 0, "S205C19");
    test_class_info(&lv, &cd_S205C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C19(Test_S205C19, "S205C19", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3423C7_nt;
extern Class_Descriptor cd_S205C20;
static Base_Class bases_S205C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S205C19 = {  "S205C19", // class name
  bases_S205C19, 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  S205C4_nt  : S205C5_nt {
  unsigned int s205c4f0:1;
  unsigned int s205c4f1:1;
  unsigned int s205c4f2:1;
  ::S3423C17 s205c4f3;
  ::S3423C11 s205c4f4;
  ::S3423C5_nt s205c4f5;
  ::S205C19 s205c4f6;
  int s205c4f7[3];
  virtual  ~S205C4_nt(); // _ZN9S205C4_ntD1Ev
  virtual void  v90(); // _ZN9S205C4_nt3v90Ev
  virtual void  v91(); // _ZN9S205C4_nt3v91Ev
  virtual void  v92(); // _ZN9S205C4_nt3v92Ev
  virtual void  v93(); // _ZN9S205C4_nt3v93Ev
  virtual void  v94(); // _ZN9S205C4_nt3v94Ev
  virtual void  v95(); // _ZN9S205C4_nt3v95Ev
  virtual void  v96(); // _ZN9S205C4_nt3v96Ev
  virtual void  v97(); // _ZN9S205C4_nt3v97Ev
  virtual void  v98(); // _ZN9S205C4_nt3v98Ev
  virtual void  v99(); // _ZN9S205C4_nt3v99Ev
  virtual void  v100(); // _ZN9S205C4_nt4v100Ev
  virtual void  v101(); // _ZN9S205C4_nt4v101Ev
  virtual void  v102(); // _ZN9S205C4_nt4v102Ev
  virtual void  v103(); // _ZN9S205C4_nt4v103Ev
  virtual void  v104(); // _ZN9S205C4_nt4v104Ev
  virtual void  v105(); // _ZN9S205C4_nt4v105Ev
  virtual void  v106(); // _ZN9S205C4_nt4v106Ev
  virtual void  v107(); // _ZN9S205C4_nt4v107Ev
  virtual void  v108(); // _ZN9S205C4_nt4v108Ev
  virtual void  v109(); // _ZN9S205C4_nt4v109Ev
  S205C4_nt(); // tgen
};
//SIG(-1 S205C4_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]}


 S205C4_nt ::~S205C4_nt(){ note_dtor("S205C4_nt", this);}
void  S205C4_nt ::v90(){vfunc_called(this, "_ZN9S205C4_nt3v90Ev");}
void  S205C4_nt ::v91(){vfunc_called(this, "_ZN9S205C4_nt3v91Ev");}
void  S205C4_nt ::v92(){vfunc_called(this, "_ZN9S205C4_nt3v92Ev");}
void  S205C4_nt ::v93(){vfunc_called(this, "_ZN9S205C4_nt3v93Ev");}
void  S205C4_nt ::v94(){vfunc_called(this, "_ZN9S205C4_nt3v94Ev");}
void  S205C4_nt ::v95(){vfunc_called(this, "_ZN9S205C4_nt3v95Ev");}
void  S205C4_nt ::v96(){vfunc_called(this, "_ZN9S205C4_nt3v96Ev");}
void  S205C4_nt ::v97(){vfunc_called(this, "_ZN9S205C4_nt3v97Ev");}
void  S205C4_nt ::v98(){vfunc_called(this, "_ZN9S205C4_nt3v98Ev");}
void  S205C4_nt ::v99(){vfunc_called(this, "_ZN9S205C4_nt3v99Ev");}
void  S205C4_nt ::v100(){vfunc_called(this, "_ZN9S205C4_nt4v100Ev");}
void  S205C4_nt ::v101(){vfunc_called(this, "_ZN9S205C4_nt4v101Ev");}
void  S205C4_nt ::v102(){vfunc_called(this, "_ZN9S205C4_nt4v102Ev");}
void  S205C4_nt ::v103(){vfunc_called(this, "_ZN9S205C4_nt4v103Ev");}
void  S205C4_nt ::v104(){vfunc_called(this, "_ZN9S205C4_nt4v104Ev");}
void  S205C4_nt ::v105(){vfunc_called(this, "_ZN9S205C4_nt4v105Ev");}
void  S205C4_nt ::v106(){vfunc_called(this, "_ZN9S205C4_nt4v106Ev");}
void  S205C4_nt ::v107(){vfunc_called(this, "_ZN9S205C4_nt4v107Ev");}
void  S205C4_nt ::v108(){vfunc_called(this, "_ZN9S205C4_nt4v108Ev");}
void  S205C4_nt ::v109(){vfunc_called(this, "_ZN9S205C4_nt4v109Ev");}
S205C4_nt ::S205C4_nt(){ note_ctor("S205C4_nt", this);} // tgen

//skip512 S205C4_nt

#else // __cplusplus

extern void _ZN9S205C4_ntC1Ev();
extern void _ZN9S205C4_ntD1Ev();
Name_Map name_map_S205C4_nt[] = {
  NSPAIR(_ZN9S205C4_ntC1Ev),
  NSPAIR(_ZN9S205C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
static Base_Class bases_S205C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S205C4_nt[];
extern void _ZN9S205C4_ntD1Ev();
extern void _ZN9S205C4_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
static  VTBL_ENTRY vtc_S205C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI9S205C4_nt[];
VTBL_ENTRY *P__ZTI9S205C4_nt = _ZTI9S205C4_nt; 
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
Class_Descriptor cd_S205C4_nt = {  "S205C4_nt", // class name
  bases_S205C4_nt, 2,
  &(vtc_S205C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S205C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C4_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  S205C3_nt  : S205C4_nt {
  ::S3423C4_nt s205c3f0;
  unsigned int s205c3f1:1;
  ::S205C19 s205c3f2;
  virtual  ~S205C3_nt(); // _ZN9S205C3_ntD1Ev
  virtual void  v110(); // _ZN9S205C3_nt4v110Ev
  virtual void  v111(); // _ZN9S205C3_nt4v111Ev
  virtual void  v112(); // _ZN9S205C3_nt4v112Ev
  virtual void  v113(); // _ZN9S205C3_nt4v113Ev
  S205C3_nt(); // tgen
};
//SIG(-1 S205C3_nt) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi[2] Fp Fi[2] FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC6 FC10{ m} FC6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 Fi:1 Fi:1 Fi:1 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} FC17{ BC18{ BC9}} Fi[3]} vd v1 v2 v3 v4 FC5 Fi:1 FC17}


 S205C3_nt ::~S205C3_nt(){ note_dtor("S205C3_nt", this);}
void  S205C3_nt ::v110(){vfunc_called(this, "_ZN9S205C3_nt4v110Ev");}
void  S205C3_nt ::v111(){vfunc_called(this, "_ZN9S205C3_nt4v111Ev");}
void  S205C3_nt ::v112(){vfunc_called(this, "_ZN9S205C3_nt4v112Ev");}
void  S205C3_nt ::v113(){vfunc_called(this, "_ZN9S205C3_nt4v113Ev");}
S205C3_nt ::S205C3_nt(){ note_ctor("S205C3_nt", this);} // tgen

//skip512 S205C3_nt

#else // __cplusplus

extern void _ZN9S205C3_ntC1Ev();
extern void _ZN9S205C3_ntD1Ev();
Name_Map name_map_S205C3_nt[] = {
  NSPAIR(_ZN9S205C3_ntC1Ev),
  NSPAIR(_ZN9S205C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
extern Class_Descriptor cd_S205C4_nt;
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
static Base_Class bases_S205C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S205C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S205C3_nt[];
extern void _ZN9S205C3_ntD1Ev();
extern void _ZN9S205C3_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
extern void _ZN9S205C3_nt4v110Ev();
extern void _ZN9S205C3_nt4v111Ev();
extern void _ZN9S205C3_nt4v112Ev();
extern void _ZN9S205C3_nt4v113Ev();
static  VTBL_ENTRY vtc_S205C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S205C3_nt[];
VTBL_ENTRY *P__ZTI9S205C3_nt = _ZTI9S205C3_nt; 
extern  VTBL_ENTRY _ZTV9S205C3_nt[];
Class_Descriptor cd_S205C3_nt = {  "S205C3_nt", // class name
  bases_S205C3_nt, 3,
  &(vtc_S205C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S205C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C3_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  S205C2_nt  : S205C3_nt {
  int s205c2f0;
  unsigned int s205c2f1:1;
  virtual  ~S205C2_nt(); // _ZN9S205C2_ntD1Ev
  virtual void  v114(); // _ZN9S205C2_nt4v114Ev
  virtual void  v115(); // _ZN9S205C2_nt4v115Ev
  virtual void  v116(); // _ZN9S205C2_nt4v116Ev
  virtual void  v117(); // _ZN9S205C2_nt4v117Ev
  virtual void  v118(); // _ZN9S205C2_nt4v118Ev
  virtual void  v119(); // _ZN9S205C2_nt4v119Ev
  virtual void  v120(); // _ZN9S205C2_nt4v120Ev
  virtual void  v121(); // _ZN9S205C2_nt4v121Ev
  S205C2_nt(); // tgen
};
//SIG(-1 S205C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 Fi[2] Fp Fi[2] FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} FC7 FC11{ m} FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 Fi:1 Fi:1 Fi:1 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} FC18{ BC19{ BC10}} Fi[3]} vd v115 v116 v117 v118 FC6 Fi:1 FC18} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi Fi:1}


 S205C2_nt ::~S205C2_nt(){ note_dtor("S205C2_nt", this);}
void  S205C2_nt ::v114(){vfunc_called(this, "_ZN9S205C2_nt4v114Ev");}
void  S205C2_nt ::v115(){vfunc_called(this, "_ZN9S205C2_nt4v115Ev");}
void  S205C2_nt ::v116(){vfunc_called(this, "_ZN9S205C2_nt4v116Ev");}
void  S205C2_nt ::v117(){vfunc_called(this, "_ZN9S205C2_nt4v117Ev");}
void  S205C2_nt ::v118(){vfunc_called(this, "_ZN9S205C2_nt4v118Ev");}
void  S205C2_nt ::v119(){vfunc_called(this, "_ZN9S205C2_nt4v119Ev");}
void  S205C2_nt ::v120(){vfunc_called(this, "_ZN9S205C2_nt4v120Ev");}
void  S205C2_nt ::v121(){vfunc_called(this, "_ZN9S205C2_nt4v121Ev");}
S205C2_nt ::S205C2_nt(){ note_ctor("S205C2_nt", this);} // tgen

//skip512 S205C2_nt

#else // __cplusplus

extern void _ZN9S205C2_ntC1Ev();
extern void _ZN9S205C2_ntD1Ev();
Name_Map name_map_S205C2_nt[] = {
  NSPAIR(_ZN9S205C2_ntC1Ev),
  NSPAIR(_ZN9S205C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
extern Class_Descriptor cd_S205C4_nt;
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
extern Class_Descriptor cd_S205C3_nt;
extern VTBL_ENTRY _ZTI9S205C3_nt[];
extern  VTBL_ENTRY _ZTV9S205C3_nt[];
static Base_Class bases_S205C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S205C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S205C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S205C2_nt[];
extern void _ZN9S205C2_ntD1Ev();
extern void _ZN9S205C2_ntD0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
extern void _ZN9S205C3_nt4v110Ev();
extern void _ZN9S205C3_nt4v111Ev();
extern void _ZN9S205C3_nt4v112Ev();
extern void _ZN9S205C3_nt4v113Ev();
extern void _ZN9S205C2_nt4v114Ev();
extern void _ZN9S205C2_nt4v115Ev();
extern void _ZN9S205C2_nt4v116Ev();
extern void _ZN9S205C2_nt4v117Ev();
extern void _ZN9S205C2_nt4v118Ev();
extern void _ZN9S205C2_nt4v119Ev();
extern void _ZN9S205C2_nt4v120Ev();
extern void _ZN9S205C2_nt4v121Ev();
static  VTBL_ENTRY vtc_S205C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S205C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S205C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S205C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v121Ev,
};
extern VTBL_ENTRY _ZTI9S205C2_nt[];
VTBL_ENTRY *P__ZTI9S205C2_nt = _ZTI9S205C2_nt; 
extern  VTBL_ENTRY _ZTV9S205C2_nt[];
Class_Descriptor cd_S205C2_nt = {  "S205C2_nt", // class name
  bases_S205C2_nt, 4,
  &(vtc_S205C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,228), // object size
  NSPAIRA(_ZTI9S205C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S205C2_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  S205C1  : S205C2_nt {
  int s205c1f0[4];
  virtual  ~S205C1(); // _ZN6S205C1D1Ev
  virtual void  v1(); // _ZN6S205C12v1Ev
  virtual void  v2(); // _ZN6S205C12v2Ev
  virtual void  v3(); // _ZN6S205C12v3Ev
  S205C1(); // tgen
};
//SIG(1 S205C1) 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 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 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 FC13{ BC14{ BC11}} FC15{ BC16{ BC11}} FC17{ BC18{ BC11}} FC19{ BC20{ BC11}} Fi[3]} vd v110 v111 v112 v113 FC7 Fi:1 FC19} vd v114 v115 v116 v117 v118 v119 v120 v121 Fi Fi:1} vd v1 v2 v3 Fi[4]}


 S205C1 ::~S205C1(){ note_dtor("S205C1", this);}
void  S205C1 ::v1(){vfunc_called(this, "_ZN6S205C12v1Ev");}
void  S205C1 ::v2(){vfunc_called(this, "_ZN6S205C12v2Ev");}
void  S205C1 ::v3(){vfunc_called(this, "_ZN6S205C12v3Ev");}
S205C1 ::S205C1(){ note_ctor("S205C1", this);} // tgen

static void Test_S205C1()
{
  extern Class_Descriptor cd_S205C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,62)];
    init_test(&cd_S205C1, buf);
    S205C1 *dp, &lv = *(dp=new (buf) S205C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,244), "sizeof(S205C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S205C1)");
    check_base_class_offset(lv, (S205C6*)(S205C5_nt*)(S205C4_nt*)(S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C5_nt*)(S205C4_nt*)(S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C4_nt*)(S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C3_nt*)(S205C2_nt*), 0, "S205C1");
    check_base_class_offset(lv, (S205C2_nt*), 0, "S205C1");
    check_field_offset(lv, s205c1f0, ABISELECT(304,228), "S205C1.s205c1f0");
    test_class_info(&lv, &cd_S205C1);
    dp->~S205C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS205C1(Test_S205C1, "S205C1", ABISELECT(320,244));

#else // __cplusplus

extern void _ZN6S205C1C1Ev();
extern void _ZN6S205C1D1Ev();
Name_Map name_map_S205C1[] = {
  NSPAIR(_ZN6S205C1C1Ev),
  NSPAIR(_ZN6S205C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S205C6;
extern VTBL_ENTRY _ZTI6S205C6[];
extern  VTBL_ENTRY _ZTV6S205C6[];
extern Class_Descriptor cd_S205C5_nt;
extern VTBL_ENTRY _ZTI9S205C5_nt[];
extern  VTBL_ENTRY _ZTV9S205C5_nt[];
extern Class_Descriptor cd_S205C4_nt;
extern VTBL_ENTRY _ZTI9S205C4_nt[];
extern  VTBL_ENTRY _ZTV9S205C4_nt[];
extern Class_Descriptor cd_S205C3_nt;
extern VTBL_ENTRY _ZTI9S205C3_nt[];
extern  VTBL_ENTRY _ZTV9S205C3_nt[];
extern Class_Descriptor cd_S205C2_nt;
extern VTBL_ENTRY _ZTI9S205C2_nt[];
extern  VTBL_ENTRY _ZTV9S205C2_nt[];
static Base_Class bases_S205C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S205C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S205C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S205C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S205C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S205C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S205C1[];
extern void _ZN6S205C1D1Ev();
extern void _ZN6S205C1D0Ev();
extern void _ZN6S205C62v4Ev();
extern void _ZN6S205C62v5Ev();
extern void _ZN6S205C62v6Ev();
extern void _ZN6S205C62v7Ev();
extern void _ZN6S205C62v8Ev();
extern void _ZN6S205C62v9Ev();
extern void _ZN6S205C63v10Ev();
extern void _ZN6S205C63v11Ev();
extern void _ZN6S205C63v12Ev();
extern void _ZN6S205C63v13Ev();
extern void _ZN6S205C63v14Ev();
extern void _ZN6S205C63v15Ev();
extern void _ZN6S205C63v16Ev();
extern void _ZN6S205C63v17Ev();
extern void _ZN6S205C63v18Ev();
extern void _ZN6S205C63v19Ev();
extern void _ZN6S205C63v20Ev();
extern void _ZN6S205C63v21Ev();
extern void _ZN6S205C63v22Ev();
extern void _ZN6S205C63v23Ev();
extern void _ZN6S205C63v24Ev();
extern void _ZN6S205C63v25Ev();
extern void _ZN6S205C63v26Ev();
extern void _ZN6S205C63v27Ev();
extern void _ZN6S205C63v28Ev();
extern void _ZN6S205C63v29Ev();
extern void _ZN6S205C63v30Ev();
extern void _ZN6S205C63v31Ev();
extern void _ZN6S205C63v32Ev();
extern void _ZN6S205C63v33Ev();
extern void _ZN6S205C63v34Ev();
extern void _ZN6S205C63v35Ev();
extern void _ZN6S205C63v36Ev();
extern void _ZN6S205C63v37Ev();
extern void _ZN6S205C63v38Ev();
extern void _ZN6S205C63v39Ev();
extern void _ZN6S205C63v40Ev();
extern void _ZN6S205C63v41Ev();
extern void _ZN6S205C63v42Ev();
extern void _ZN6S205C63v43Ev();
extern void _ZN6S205C63v44Ev();
extern void _ZN6S205C63v45Ev();
extern void _ZN6S205C63v46Ev();
extern void _ZN6S205C63v47Ev();
extern void _ZN6S205C63v48Ev();
extern void _ZN6S205C63v49Ev();
extern void _ZN6S205C63v50Ev();
extern void _ZN6S205C63v51Ev();
extern void _ZN6S205C63v52Ev();
extern void _ZN6S205C63v53Ev();
extern void _ZN6S205C63v54Ev();
extern void _ZN6S205C63v55Ev();
extern void _ZN6S205C63v56Ev();
extern void _ZN6S205C63v57Ev();
extern void _ZN6S205C63v58Ev();
extern void _ZN6S205C63v59Ev();
extern void _ZN6S205C63v60Ev();
extern void _ZN6S205C63v61Ev();
extern void _ZN6S205C63v62Ev();
extern void _ZN6S205C63v63Ev();
extern void _ZN6S205C63v64Ev();
extern void _ZN6S205C63v65Ev();
extern void _ZN6S205C63v66Ev();
extern void _ZN6S205C63v67Ev();
extern void _ZN9S205C5_nt3v68Ev();
extern void _ZN9S205C5_nt3v69Ev();
extern void _ZN9S205C5_nt3v70Ev();
extern void _ZN9S205C5_nt3v71Ev();
extern void _ZN9S205C5_nt3v72Ev();
extern void _ZN9S205C5_nt3v73Ev();
extern void _ZN9S205C5_nt3v74Ev();
extern void _ZN9S205C5_nt3v75Ev();
extern void _ZN9S205C5_nt3v76Ev();
extern void _ZN9S205C5_nt3v77Ev();
extern void _ZN9S205C5_nt3v78Ev();
extern void _ZN9S205C5_nt3v79Ev();
extern void _ZN9S205C5_nt3v80Ev();
extern void _ZN9S205C5_nt3v81Ev();
extern void _ZN9S205C5_nt3v82Ev();
extern void _ZN9S205C5_nt3v83Ev();
extern void _ZN9S205C5_nt3v84Ev();
extern void _ZN9S205C5_nt3v85Ev();
extern void _ZN9S205C5_nt3v86Ev();
extern void _ZN9S205C5_nt3v87Ev();
extern void _ZN9S205C5_nt3v88Ev();
extern void _ZN9S205C5_nt3v89Ev();
extern void _ZN9S205C4_nt3v90Ev();
extern void _ZN9S205C4_nt3v91Ev();
extern void _ZN9S205C4_nt3v92Ev();
extern void _ZN9S205C4_nt3v93Ev();
extern void _ZN9S205C4_nt3v94Ev();
extern void _ZN9S205C4_nt3v95Ev();
extern void _ZN9S205C4_nt3v96Ev();
extern void _ZN9S205C4_nt3v97Ev();
extern void _ZN9S205C4_nt3v98Ev();
extern void _ZN9S205C4_nt3v99Ev();
extern void _ZN9S205C4_nt4v100Ev();
extern void _ZN9S205C4_nt4v101Ev();
extern void _ZN9S205C4_nt4v102Ev();
extern void _ZN9S205C4_nt4v103Ev();
extern void _ZN9S205C4_nt4v104Ev();
extern void _ZN9S205C4_nt4v105Ev();
extern void _ZN9S205C4_nt4v106Ev();
extern void _ZN9S205C4_nt4v107Ev();
extern void _ZN9S205C4_nt4v108Ev();
extern void _ZN9S205C4_nt4v109Ev();
extern void _ZN9S205C3_nt4v110Ev();
extern void _ZN9S205C3_nt4v111Ev();
extern void _ZN9S205C3_nt4v112Ev();
extern void _ZN9S205C3_nt4v113Ev();
extern void _ZN9S205C2_nt4v114Ev();
extern void _ZN9S205C2_nt4v115Ev();
extern void _ZN9S205C2_nt4v116Ev();
extern void _ZN9S205C2_nt4v117Ev();
extern void _ZN9S205C2_nt4v118Ev();
extern void _ZN9S205C2_nt4v119Ev();
extern void _ZN9S205C2_nt4v120Ev();
extern void _ZN9S205C2_nt4v121Ev();
extern void _ZN6S205C12v1Ev();
extern void _ZN6S205C12v2Ev();
extern void _ZN6S205C12v3Ev();
static  VTBL_ENTRY vtc_S205C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S205C1[0]),
  (VTBL_ENTRY)&_ZN6S205C1D1Ev,
  (VTBL_ENTRY)&_ZN6S205C1D0Ev,
  (VTBL_ENTRY)&_ZN6S205C62v4Ev,
  (VTBL_ENTRY)&_ZN6S205C62v5Ev,
  (VTBL_ENTRY)&_ZN6S205C62v6Ev,
  (VTBL_ENTRY)&_ZN6S205C62v7Ev,
  (VTBL_ENTRY)&_ZN6S205C62v8Ev,
  (VTBL_ENTRY)&_ZN6S205C62v9Ev,
  (VTBL_ENTRY)&_ZN6S205C63v10Ev,
  (VTBL_ENTRY)&_ZN6S205C63v11Ev,
  (VTBL_ENTRY)&_ZN6S205C63v12Ev,
  (VTBL_ENTRY)&_ZN6S205C63v13Ev,
  (VTBL_ENTRY)&_ZN6S205C63v14Ev,
  (VTBL_ENTRY)&_ZN6S205C63v15Ev,
  (VTBL_ENTRY)&_ZN6S205C63v16Ev,
  (VTBL_ENTRY)&_ZN6S205C63v17Ev,
  (VTBL_ENTRY)&_ZN6S205C63v18Ev,
  (VTBL_ENTRY)&_ZN6S205C63v19Ev,
  (VTBL_ENTRY)&_ZN6S205C63v20Ev,
  (VTBL_ENTRY)&_ZN6S205C63v21Ev,
  (VTBL_ENTRY)&_ZN6S205C63v22Ev,
  (VTBL_ENTRY)&_ZN6S205C63v23Ev,
  (VTBL_ENTRY)&_ZN6S205C63v24Ev,
  (VTBL_ENTRY)&_ZN6S205C63v25Ev,
  (VTBL_ENTRY)&_ZN6S205C63v26Ev,
  (VTBL_ENTRY)&_ZN6S205C63v27Ev,
  (VTBL_ENTRY)&_ZN6S205C63v28Ev,
  (VTBL_ENTRY)&_ZN6S205C63v29Ev,
  (VTBL_ENTRY)&_ZN6S205C63v30Ev,
  (VTBL_ENTRY)&_ZN6S205C63v31Ev,
  (VTBL_ENTRY)&_ZN6S205C63v32Ev,
  (VTBL_ENTRY)&_ZN6S205C63v33Ev,
  (VTBL_ENTRY)&_ZN6S205C63v34Ev,
  (VTBL_ENTRY)&_ZN6S205C63v35Ev,
  (VTBL_ENTRY)&_ZN6S205C63v36Ev,
  (VTBL_ENTRY)&_ZN6S205C63v37Ev,
  (VTBL_ENTRY)&_ZN6S205C63v38Ev,
  (VTBL_ENTRY)&_ZN6S205C63v39Ev,
  (VTBL_ENTRY)&_ZN6S205C63v40Ev,
  (VTBL_ENTRY)&_ZN6S205C63v41Ev,
  (VTBL_ENTRY)&_ZN6S205C63v42Ev,
  (VTBL_ENTRY)&_ZN6S205C63v43Ev,
  (VTBL_ENTRY)&_ZN6S205C63v44Ev,
  (VTBL_ENTRY)&_ZN6S205C63v45Ev,
  (VTBL_ENTRY)&_ZN6S205C63v46Ev,
  (VTBL_ENTRY)&_ZN6S205C63v47Ev,
  (VTBL_ENTRY)&_ZN6S205C63v48Ev,
  (VTBL_ENTRY)&_ZN6S205C63v49Ev,
  (VTBL_ENTRY)&_ZN6S205C63v50Ev,
  (VTBL_ENTRY)&_ZN6S205C63v51Ev,
  (VTBL_ENTRY)&_ZN6S205C63v52Ev,
  (VTBL_ENTRY)&_ZN6S205C63v53Ev,
  (VTBL_ENTRY)&_ZN6S205C63v54Ev,
  (VTBL_ENTRY)&_ZN6S205C63v55Ev,
  (VTBL_ENTRY)&_ZN6S205C63v56Ev,
  (VTBL_ENTRY)&_ZN6S205C63v57Ev,
  (VTBL_ENTRY)&_ZN6S205C63v58Ev,
  (VTBL_ENTRY)&_ZN6S205C63v59Ev,
  (VTBL_ENTRY)&_ZN6S205C63v60Ev,
  (VTBL_ENTRY)&_ZN6S205C63v61Ev,
  (VTBL_ENTRY)&_ZN6S205C63v62Ev,
  (VTBL_ENTRY)&_ZN6S205C63v63Ev,
  (VTBL_ENTRY)&_ZN6S205C63v64Ev,
  (VTBL_ENTRY)&_ZN6S205C63v65Ev,
  (VTBL_ENTRY)&_ZN6S205C63v66Ev,
  (VTBL_ENTRY)&_ZN6S205C63v67Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S205C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S205C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S205C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S205C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN6S205C12v1Ev,
  (VTBL_ENTRY)&_ZN6S205C12v2Ev,
  (VTBL_ENTRY)&_ZN6S205C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S205C1[];
extern  VTBL_ENTRY _ZTV6S205C1[];
Class_Descriptor cd_S205C1 = {  "S205C1", // class name
  bases_S205C1, 5,
  &(vtc_S205C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,244), // object size
  NSPAIRA(_ZTI6S205C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S205C1),125, //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  S19942C6  {
  void *s19942c6f0[3];
  int s19942c6f1[2];
  __tsi64 s19942c6f2;
  virtual void  v3(); // _ZN8S19942C62v3Ev
  ~S19942C6(); // tgen
  S19942C6(); // tgen
};
//SIG(-1 S19942C6) C1{ v1 Fp[3] Fi[2] FL}


void  S19942C6 ::v3(){vfunc_called(this, "_ZN8S19942C62v3Ev");}
S19942C6 ::~S19942C6(){ note_dtor("S19942C6", this);} // tgen
S19942C6 ::S19942C6(){ note_ctor("S19942C6", this);} // tgen

static void Test_S19942C6()
{
  extern Class_Descriptor cd_S19942C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19942C6, buf);
    S19942C6 *dp, &lv = *(dp=new (buf) S19942C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19942C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19942C6)");
    check_field_offset(lv, s19942c6f0, ABISELECT(8,4), "S19942C6.s19942c6f0");
    check_field_offset(lv, s19942c6f1, ABISELECT(32,16), "S19942C6.s19942c6f1");
    check_field_offset(lv, s19942c6f2, ABISELECT(40,24), "S19942C6.s19942c6f2");
    test_class_info(&lv, &cd_S19942C6);
    dp->~S19942C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C6(Test_S19942C6, "S19942C6", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19942C6C1Ev();
extern void _ZN8S19942C6D1Ev();
Name_Map name_map_S19942C6[] = {
  NSPAIR(_ZN8S19942C6C1Ev),
  NSPAIR(_ZN8S19942C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19942C6[];
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C6[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
Class_Descriptor cd_S19942C6 = {  "S19942C6", // class name
  0,0,//no base classes
  &(vtc_S19942C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19942C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19942C6),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

union  S19942C8  {
  void *s19942c8f0;
  int s19942c8f1;
  long double s19942c8f2;
  void *s19942c8f3;
  __tsi64 s19942c8f4;
  __tsi64 s19942c8f5:64;
  int s19942c8f6;
  void *s19942c8f7;
  int s19942c8f8;
  __tsi64 s19942c8f9;
  int s19942c8f10;
  char s19942c8f11:8;
  void  mf19942c8(); // _ZN8S19942C89mf19942c8Ev
};
//SIG(1 S19942C8) U1{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19942C5  : S19942C6 {
  char s19942c5f0[10];
  long s19942c5f1[6];
  ::S19942C6 s19942c5f2;
  void *s19942c5f3;
  ::S19763C18_nt s19942c5f4;
  int s19942c5f5[4];
  ::S19942C8 s19942c5f6;
  int s19942c5f7;
  void *s19942c5f8;
  __tsi64 s19942c5f9;
  int s19942c5f10:19;
  virtual void  v4(); // _ZN8S19942C52v4Ev
  virtual void  v5(); // _ZN8S19942C52v5Ev
  ~S19942C5(); // tgen
  S19942C5(); // tgen
};
//SIG(-1 S19942C5) C1{ BC2{ v3 Fp[3] Fi[2] FL} v1 v2 Fc[10] Fl[6] FC2 Fp FC3{} Fi[4] FU4{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19}


void  S19942C5 ::v4(){vfunc_called(this, "_ZN8S19942C52v4Ev");}
void  S19942C5 ::v5(){vfunc_called(this, "_ZN8S19942C52v5Ev");}
S19942C5 ::~S19942C5(){ note_dtor("S19942C5", this);} // tgen
S19942C5 ::S19942C5(){ note_ctor("S19942C5", this);} // tgen

static void Test_S19942C5()
{
  extern Class_Descriptor cd_S19942C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,40)];
    init_test(&cd_S19942C5, buf);
    S19942C5 *dp, &lv = *(dp=new (buf) S19942C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S19942C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C5)");
    check_base_class_offset(lv, (S19942C6*), 0, "S19942C5");
    check_field_offset(lv, s19942c5f0, ABISELECT(48,32), "S19942C5.s19942c5f0");
    check_field_offset(lv, s19942c5f1, ABISELECT(64,44), "S19942C5.s19942c5f1");
    check_field_offset(lv, s19942c5f2, ABISELECT(112,68), "S19942C5.s19942c5f2");
    check_field_offset(lv, s19942c5f3, ABISELECT(160,100), "S19942C5.s19942c5f3");
    check_field_offset(lv, s19942c5f4, ABISELECT(168,104), "S19942C5.s19942c5f4");
    check_field_offset(lv, s19942c5f5, ABISELECT(172,108), "S19942C5.s19942c5f5");
    check_field_offset(lv, s19942c5f6, ABISELECT(192,124), "S19942C5.s19942c5f6");
    check_field_offset(lv, s19942c5f7, ABISELECT(208,136), "S19942C5.s19942c5f7");
    check_field_offset(lv, s19942c5f8, ABISELECT(216,140), "S19942C5.s19942c5f8");
    check_field_offset(lv, s19942c5f9, ABISELECT(224,144), "S19942C5.s19942c5f9");
    set_bf_and_test(lv, s19942c5f10, ABISELECT(232,152), 0, 19, 1, "S19942C5");
    set_bf_and_test(lv, s19942c5f10, ABISELECT(232,152), 0, 19, hide_sll(1LL<<18), "S19942C5");
    test_class_info(&lv, &cd_S19942C5);
    dp->~S19942C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C5(Test_S19942C5, "S19942C5", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN8S19942C5C1Ev();
extern void _ZN8S19942C5D1Ev();
Name_Map name_map_S19942C5[] = {
  NSPAIR(_ZN8S19942C5C1Ev),
  NSPAIR(_ZN8S19942C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
static Base_Class bases_S19942C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C5[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY vtc_S19942C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C5[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
Class_Descriptor cd_S19942C5 = {  "S19942C5", // class name
  bases_S19942C5, 1,
  &(vtc_S19942C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI8S19942C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19942C5),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C9  : S19942C6 {
  int s19942c9f0[10];
  short s19942c9f1:11;
  ::S19942C6 s19942c9f2;
  ~S19942C9(); // tgen
  S19942C9(); // tgen
};
//SIG(-1 S19942C9) C1{ BC2{ v1 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC2}


S19942C9 ::~S19942C9(){ note_dtor("S19942C9", this);} // tgen
S19942C9 ::S19942C9(){ note_ctor("S19942C9", this);} // tgen

static void Test_S19942C9()
{
  extern Class_Descriptor cd_S19942C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S19942C9, buf);
    S19942C9 *dp, &lv = *(dp=new (buf) S19942C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S19942C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19942C9)");
    check_base_class_offset(lv, (S19942C6*), 0, "S19942C9");
    check_field_offset(lv, s19942c9f0, ABISELECT(48,32), "S19942C9.s19942c9f0");
    set_bf_and_test(lv, s19942c9f1, ABISELECT(88,72), 0, 11, 1, "S19942C9");
    set_bf_and_test(lv, s19942c9f1, ABISELECT(88,72), 0, 11, hide_sll(1LL<<10), "S19942C9");
    check_field_offset(lv, s19942c9f2, ABISELECT(96,76), "S19942C9.s19942c9f2");
    test_class_info(&lv, &cd_S19942C9);
    dp->~S19942C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C9(Test_S19942C9, "S19942C9", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN8S19942C9C1Ev();
extern void _ZN8S19942C9D1Ev();
Name_Map name_map_S19942C9[] = {
  NSPAIR(_ZN8S19942C9C1Ev),
  NSPAIR(_ZN8S19942C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
static Base_Class bases_S19942C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C9[];
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C9[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
Class_Descriptor cd_S19942C9 = {  "S19942C9", // class name
  bases_S19942C9, 1,
  &(vtc_S19942C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI8S19942C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19942C9),3, //virtual function table var
  2, // 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

union  S19942C11  {
  void *s19942c11f0;
  long double s19942c11f1[10];
  void *s19942c11f2;
  short s19942c11f3;
  int s19942c11f4;
  int s19942c11f5:10;
  void *s19942c11f6;
  int s19942c11f7;
  char s19942c11f8[3];
  void *s19942c11f9;
  void  mf19942c11(); // _ZN9S19942C1110mf19942c11Ev
};
//SIG(1 S19942C11) U1{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19942C10  {
  void *s19942c10f0;
  short s19942c10f1;
  ::S19763C18_nt s19942c10f2;
  void *s19942c10f3;
  __tsi64 s19942c10f4;
  int s19942c10f5;
  ::S19942C11 s19942c10f6;
  int s19942c10f7;
  int s19942c10f8:12;
  int s19942c10f9;
  int s19942c10f10:8;
  virtual void  v6(); // _ZN9S19942C102v6Ev
  ~S19942C10(); // tgen
  S19942C10(); // tgen
};
//SIG(-1 S19942C10) C1{ v1 Fp Fs FC2{} Fp FL Fi FU3{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8}


void  S19942C10 ::v6(){vfunc_called(this, "_ZN9S19942C102v6Ev");}
S19942C10 ::~S19942C10(){ note_dtor("S19942C10", this);} // tgen
S19942C10 ::S19942C10(){ note_ctor("S19942C10", this);} // tgen

static void Test_S19942C10()
{
  extern Class_Descriptor cd_S19942C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S19942C10, buf);
    S19942C10 *dp, &lv = *(dp=new (buf) S19942C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S19942C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C10)");
    check_field_offset(lv, s19942c10f0, ABISELECT(8,4), "S19942C10.s19942c10f0");
    check_field_offset(lv, s19942c10f1, ABISELECT(16,8), "S19942C10.s19942c10f1");
    check_field_offset(lv, s19942c10f2, ABISELECT(18,10), "S19942C10.s19942c10f2");
    check_field_offset(lv, s19942c10f3, ABISELECT(24,12), "S19942C10.s19942c10f3");
    check_field_offset(lv, s19942c10f4, ABISELECT(32,16), "S19942C10.s19942c10f4");
    check_field_offset(lv, s19942c10f5, ABISELECT(40,24), "S19942C10.s19942c10f5");
    check_field_offset(lv, s19942c10f6, ABISELECT(48,28), "S19942C10.s19942c10f6");
    check_field_offset(lv, s19942c10f7, ABISELECT(208,148), "S19942C10.s19942c10f7");
    set_bf_and_test(lv, s19942c10f8, ABISELECT(212,152), 0, 12, 1, "S19942C10");
    set_bf_and_test(lv, s19942c10f8, ABISELECT(212,152), 0, 12, hide_sll(1LL<<11), "S19942C10");
    check_field_offset(lv, s19942c10f9, ABISELECT(216,156), "S19942C10.s19942c10f9");
    set_bf_and_test(lv, s19942c10f10, ABISELECT(220,160), 0, 8, 1, "S19942C10");
    set_bf_and_test(lv, s19942c10f10, ABISELECT(220,160), 0, 8, hide_sll(1LL<<7), "S19942C10");
    test_class_info(&lv, &cd_S19942C10);
    dp->~S19942C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C10(Test_S19942C10, "S19942C10", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN9S19942C10C1Ev();
extern void _ZN9S19942C10D1Ev();
Name_Map name_map_S19942C10[] = {
  NSPAIR(_ZN9S19942C10C1Ev),
  NSPAIR(_ZN9S19942C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19942C10[];
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C10[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
Class_Descriptor cd_S19942C10 = {  "S19942C10", // class name
  0,0,//no base classes
  &(vtc_S19942C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI9S19942C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19942C10),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  S19942C4  : virtual S19942C5 , virtual S19942C6 , virtual S19942C9 , S19942C10 {
  long double s19942c4f0;
  int s19942c4f1;
  long double s19942c4f2[3];
  long double s19942c4f3;
  int s19942c4f4;
  __tsi64 s19942c4f5[9];
  int s19942c4f6;
  int s19942c4f7;
  int s19942c4f8;
  int s19942c4f9;
  virtual void  v7(); // _ZN8S19942C42v7Ev
  ~S19942C4(); // tgen
  S19942C4(); // tgen
};
//SIG(-1 S19942C4) C1{ VBC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC6{ BC3 Fi[10] Fs:11 FC3} BC7{ v5 Fp Fs FC4 Fp FL Fi FU8{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v1 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi}


void  S19942C4 ::v7(){vfunc_called(this, "_ZN8S19942C42v7Ev");}
S19942C4 ::~S19942C4(){ note_dtor("S19942C4", this);} // tgen
S19942C4 ::S19942C4(){ note_ctor("S19942C4", this);} // tgen

static void Test_S19942C4()
{
  extern Class_Descriptor cd_S19942C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,155)];
    init_test(&cd_S19942C4, buf);
    S19942C4 *dp, &lv = *(dp=new (buf) S19942C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,616), "sizeof(S19942C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C4)");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(416,320), "S19942C4");
    check_base_class_offset(lv, (S19942C5*), ABISELECT(416,320), "S19942C4");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*), ABISELECT(656,476), "S19942C4");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(704,508), "S19942C4");
    check_base_class_offset(lv, (S19942C9*), ABISELECT(704,508), "S19942C4");
    check_base_class_offset(lv, (S19942C10*), 0, "S19942C4");
    check_field_offset(lv, s19942c4f0, ABISELECT(224,164), "S19942C4.s19942c4f0");
    check_field_offset(lv, s19942c4f1, ABISELECT(240,176), "S19942C4.s19942c4f1");
    check_field_offset(lv, s19942c4f2, ABISELECT(256,180), "S19942C4.s19942c4f2");
    check_field_offset(lv, s19942c4f3, ABISELECT(304,216), "S19942C4.s19942c4f3");
    check_field_offset(lv, s19942c4f4, ABISELECT(320,228), "S19942C4.s19942c4f4");
    check_field_offset(lv, s19942c4f5, ABISELECT(328,232), "S19942C4.s19942c4f5");
    check_field_offset(lv, s19942c4f6, ABISELECT(400,304), "S19942C4.s19942c4f6");
    check_field_offset(lv, s19942c4f7, ABISELECT(404,308), "S19942C4.s19942c4f7");
    check_field_offset(lv, s19942c4f8, ABISELECT(408,312), "S19942C4.s19942c4f8");
    check_field_offset(lv, s19942c4f9, ABISELECT(412,316), "S19942C4.s19942c4f9");
    test_class_info(&lv, &cd_S19942C4);
    dp->~S19942C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C4(Test_S19942C4, "S19942C4", ABISELECT(848,616));

#else // __cplusplus

extern void _ZN8S19942C4C1Ev();
extern void _ZN8S19942C4D1Ev();
Name_Map name_map_S19942C4[] = {
  NSPAIR(_ZN8S19942C4C1Ev),
  NSPAIR(_ZN8S19942C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
static Base_Class bases_S19942C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(416,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(416,320), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(656,476), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(704,508), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //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_S19942C9,    ABISELECT(704,508), //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S19942C4[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C4[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19942C4[];
static  VTT_ENTRY vtt_S19942C4[] = {
  {&(_ZTV8S19942C4[5]),  5,23},
  {&(_ZTV8S19942C4[12]),  12,23},
  {&(_ZTV8S19942C4[18]),  18,23},
  {&(_ZTV8S19942C4[22]),  22,23},
};
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
Class_Descriptor cd_S19942C4 = {  "S19942C4", // class name
  bases_S19942C4, 6,
  &(vtc_S19942C4[0]), // expected_vtbl_contents
  &(vtt_S19942C4[0]), // expected_vtt_contents
  ABISELECT(848,616), // object size
  NSPAIRA(_ZTI8S19942C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19942C4),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19942C4),4, //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  S19942C12_nt  {
  char s19942c12f0[2];
  void  mf19942c12(); // _ZN12S19942C12_nt10mf19942c12Ev
};
//SIG(-1 S19942C12_nt) C1{ m Fc[2]}


void  S19942C12_nt ::mf19942c12(){}

//skip512 S19942C12_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S19942C12_nt[];
VTBL_ENTRY *P__ZTI12S19942C12_nt = _ZTI12S19942C12_nt; 
Class_Descriptor cd_S19942C12_nt = {  "S19942C12_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  2, // object size
  NSPAIRA(_ZTI12S19942C12_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  S19942C13  : S19942C6 , virtual S19942C9 , virtual S19942C4 , virtual S19942C10 , S19942C5 {
  __tsi64 s19942c13f0[3];
  ::S19942C12_nt s19942c13f1;
  void *s19942c13f2;
  short s19942c13f3;
  char s19942c13f4;
  int s19942c13f5;
  int s19942c13f6;
  virtual  ~S19942C13(); // _ZN9S19942C13D2Ev
  S19942C13(); // tgen
};
//SIG(-1 S19942C13) C1{ BC2{ v1 Fp[3] Fi[2] FL} VBC3{ BC2 Fi[10] Fs:11 FC2} VBC4{ VBC5{ BC2 v2 v3 Fc[10] Fl[6] FC2 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC3 BC8{ v4 Fp Fs FC6 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC8 BC5 vd FL[3] FC10{ m Fc[2]} Fp Fs Fc Fi Fi}


 S19942C13 ::~S19942C13(){ note_dtor("S19942C13", this);}
S19942C13 ::S19942C13(){ note_ctor("S19942C13", this);} // tgen

static void Test_S19942C13()
{
  extern Class_Descriptor cd_S19942C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(90,254)];
    init_test(&cd_S19942C13, buf);
    S19942C13 *dp, &lv = *(dp=new (buf) S19942C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1424,1012), "sizeof(S19942C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C13)");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*), 0, "S19942C13");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(344,232), "S19942C13");
    check_base_class_offset(lv, (S19942C9*), ABISELECT(344,232), "S19942C13");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(344,232), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(912,660), "S19942C13");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(912,660), "S19942C13");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(1152,816), "S19942C13");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(496,340), "S19942C13");
    check_base_class_offset(lv, (S19942C4*), ABISELECT(496,340), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(1200,848), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(48,32), "S19942C13");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*), ABISELECT(48,32), "S19942C13");
    check_field_offset(lv, s19942c13f0, ABISELECT(288,188), "S19942C13.s19942c13f0");
    check_field_offset(lv, s19942c13f1, ABISELECT(312,212), "S19942C13.s19942c13f1");
    check_field_offset(lv, s19942c13f2, ABISELECT(320,216), "S19942C13.s19942c13f2");
    check_field_offset(lv, s19942c13f3, ABISELECT(328,220), "S19942C13.s19942c13f3");
    check_field_offset(lv, s19942c13f4, ABISELECT(330,222), "S19942C13.s19942c13f4");
    check_field_offset(lv, s19942c13f5, ABISELECT(332,224), "S19942C13.s19942c13f5");
    check_field_offset(lv, s19942c13f6, ABISELECT(336,228), "S19942C13.s19942c13f6");
    test_class_info(&lv, &cd_S19942C13);
    dp->~S19942C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C13(Test_S19942C13, "S19942C13", ABISELECT(1424,1012));

#else // __cplusplus

extern void _ZN9S19942C13C1Ev();
extern void _ZN9S19942C13D2Ev();
Name_Map name_map_S19942C13[] = {
  NSPAIR(_ZN9S19942C13C1Ev),
  NSPAIR(_ZN9S19942C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
static Base_Class bases_S19942C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C6,    ABISELECT(344,232), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_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_S19942C9,    ABISELECT(344,232), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(912,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_S19942C5,    ABISELECT(912,660), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(1152,816), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(496,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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(496,340), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    ABISELECT(1200,848), //bcp->offset
    40, //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_S19942C6,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(48,32), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C13[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C13[] = {
  ABISELECT(1200,848),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-344,-232),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-912,-660),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-1152,-816),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-1200,-848),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTV9S19942C13[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13[] = {
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C13[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C13[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C13[] = {
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C13[] = {
  {&(_ZTV9S19942C13[7]),  7,44},
  {&(_ZTV9S19942C13[18]),  18,44},
  {&(_ZTV9S19942C13[26]),  26,44},
  {&(_ZTV9S19942C13[33]),  33,44},
  {&(_ZTV9S19942C13[39]),  39,44},
  {&(_ZTV9S19942C13[43]),  43,44},
  {&(_tg__ZTV8S19942C4__9S19942C13[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C13[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C13[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
Class_Descriptor cd_S19942C13 = {  "S19942C13", // class name
  bases_S19942C13, 11,
  &(vtc_S19942C13[0]), // expected_vtbl_contents
  &(vtt_S19942C13[0]), // expected_vtt_contents
  ABISELECT(1424,1012), // object size
  NSPAIRA(_ZTI9S19942C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19942C13),44, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C13),10, //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  S19942C3  : S19942C4 , virtual S19942C12_nt {
  ::S19942C13 s19942c3f0;
  void *s19942c3f1;
  virtual  ~S19942C3(); // _ZN8S19942C3D2Ev
  virtual void  v10(); // _ZN8S19942C33v10Ev
  virtual void  v11(); // _ZN8S19942C33v11Ev
  virtual void  v12(); // _ZN8S19942C33v12Ev
  S19942C3(); // tgen
};
//SIG(-1 S19942C3) C1{ BC2{ VBC3{ BC4{ v4 Fp[3] Fi[2] FL} v5 v6 Fc[10] Fl[6] FC4 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC7{ BC4 Fi[10] Fs:11 FC4} BC8{ v7 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v8 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} vd v1 v2 v3 FC11{ BC4 VBC7 VBC2 VBC8 BC3 vd FL[3] FC10 Fp Fs Fc Fi Fi} Fp}


 S19942C3 ::~S19942C3(){ note_dtor("S19942C3", this);}
void  S19942C3 ::v10(){vfunc_called(this, "_ZN8S19942C33v10Ev");}
void  S19942C3 ::v11(){vfunc_called(this, "_ZN8S19942C33v11Ev");}
void  S19942C3 ::v12(){vfunc_called(this, "_ZN8S19942C33v12Ev");}
S19942C3 ::S19942C3(){ note_ctor("S19942C3", this);} // tgen

static void Test_S19942C3()
{
  extern Class_Descriptor cd_S19942C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(145,410)];
    init_test(&cd_S19942C3, buf);
    S19942C3 *dp, &lv = *(dp=new (buf) S19942C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2304,1636), "sizeof(S19942C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C3)");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(1856,1336), "S19942C3");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(1856,1336), "S19942C3");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(2096,1492), "S19942C3");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(2144,1524), "S19942C3");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(2144,1524), "S19942C3");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), 0, "S19942C3");
    check_base_class_offset(lv, (S19942C4*), 0, "S19942C3");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(2288,1632), "S19942C3");
    check_field_offset(lv, s19942c3f0, ABISELECT(416,320), "S19942C3.s19942c3f0");
    check_field_offset(lv, s19942c3f1, ABISELECT(1840,1332), "S19942C3.s19942c3f1");
    test_class_info(&lv, &cd_S19942C3);
    dp->~S19942C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C3(Test_S19942C3, "S19942C3", ABISELECT(2304,1636));

#else // __cplusplus

extern void _ZN8S19942C3C1Ev();
extern void _ZN8S19942C3D2Ev();
Name_Map name_map_S19942C3[] = {
  NSPAIR(_ZN8S19942C3C1Ev),
  NSPAIR(_ZN8S19942C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
static Base_Class bases_S19942C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(1856,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
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(1856,1336), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(2096,1492), //bcp->offset
    21, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(2144,1524), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //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_S19942C9,    ABISELECT(2144,1524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(2288,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19942C3[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C3[] = {
  ABISELECT(2288,1632),
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S19942C3[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__8S19942C3[] = {
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__8S19942C3[] = {
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__8S19942C3[] = {
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C3[] = {
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C3[] = {
  {&(_ZTV8S19942C3[6]),  6,29},
  {&(_tg__ZTV8S19942C4__8S19942C3[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__8S19942C3[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__8S19942C3[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C3[3]),  3,4},
  {&(_ZTV8S19942C3[18]),  18,29},
  {&(_ZTV8S19942C3[24]),  24,29},
  {&(_ZTV8S19942C3[28]),  28,29},
};
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
Class_Descriptor cd_S19942C3 = {  "S19942C3", // class name
  bases_S19942C3, 8,
  &(vtc_S19942C3[0]), // expected_vtbl_contents
  &(vtt_S19942C3[0]), // expected_vtt_contents
  ABISELECT(2304,1636), // object size
  NSPAIRA(_ZTI8S19942C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19942C3),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19942C3),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C2  {
  int s19942c2f0[2];
  ::S19942C3 s19942c2f1[9];
  int s19942c2f2;
  long s19942c2f3;
  int s19942c2f4;
  int s19942c2f5;
  ::S19942C6 s19942c2f6;
  int s19942c2f7;
  int s19942c2f8;
  int s19942c2f9;
  long double s19942c2f10;
  int s19942c2f11;
  virtual void  v1(); // _ZN8S19942C22v1Ev
  virtual void  v2(); // _ZN8S19942C22v2Ev
  ~S19942C2(); // tgen
  S19942C2(); // tgen
};
//SIG(-1 S19942C2) C1{ v1 v2 Fi[2] FC2{ BC3{ VBC4{ BC5{ v6 Fp[3] Fi[2] FL} v7 v8 Fc[10] Fl[6] FC5 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC5 VBC8{ BC5 Fi[10] Fs:11 FC5} BC9{ v9 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v10 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} vd v3 v4 v5 FC12{ BC5 VBC8 VBC3 VBC9 BC4 vd FL[3] FC11 Fp Fs Fc Fi Fi} Fp}[9] Fi Fl Fi Fi FC5 Fi Fi Fi FD Fi}


void  S19942C2 ::v1(){vfunc_called(this, "_ZN8S19942C22v1Ev");}
void  S19942C2 ::v2(){vfunc_called(this, "_ZN8S19942C22v2Ev");}
S19942C2 ::~S19942C2(){ note_dtor("S19942C2", this);} // tgen
S19942C2 ::S19942C2(){ note_ctor("S19942C2", this);} // tgen

static void Test_S19942C2()
{
  extern Class_Descriptor cd_S19942C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1306,3704)];
    init_test(&cd_S19942C2, buf);
    S19942C2 *dp, &lv = *(dp=new (buf) S19942C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20880,14812), "sizeof(S19942C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C2)");
    check_field_offset(lv, s19942c2f0, ABISELECT(8,4), "S19942C2.s19942c2f0");
    check_field_offset(lv, s19942c2f1, ABISELECT(16,12), "S19942C2.s19942c2f1");
    check_field_offset(lv, s19942c2f2, ABISELECT(20752,14736), "S19942C2.s19942c2f2");
    check_field_offset(lv, s19942c2f3, ABISELECT(20760,14740), "S19942C2.s19942c2f3");
    check_field_offset(lv, s19942c2f4, ABISELECT(20768,14744), "S19942C2.s19942c2f4");
    check_field_offset(lv, s19942c2f5, ABISELECT(20772,14748), "S19942C2.s19942c2f5");
    check_field_offset(lv, s19942c2f6, ABISELECT(20776,14752), "S19942C2.s19942c2f6");
    check_field_offset(lv, s19942c2f7, ABISELECT(20824,14784), "S19942C2.s19942c2f7");
    check_field_offset(lv, s19942c2f8, ABISELECT(20828,14788), "S19942C2.s19942c2f8");
    check_field_offset(lv, s19942c2f9, ABISELECT(20832,14792), "S19942C2.s19942c2f9");
    check_field_offset(lv, s19942c2f10, ABISELECT(20848,14796), "S19942C2.s19942c2f10");
    check_field_offset(lv, s19942c2f11, ABISELECT(20864,14808), "S19942C2.s19942c2f11");
    test_class_info(&lv, &cd_S19942C2);
    dp->~S19942C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C2(Test_S19942C2, "S19942C2", ABISELECT(20880,14812));

#else // __cplusplus

extern void _ZN8S19942C2C1Ev();
extern void _ZN8S19942C2D1Ev();
Name_Map name_map_S19942C2[] = {
  NSPAIR(_ZN8S19942C2C1Ev),
  NSPAIR(_ZN8S19942C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19942C2[];
extern void _ZN8S19942C22v1Ev();
extern void _ZN8S19942C22v2Ev();
static  VTBL_ENTRY vtc_S19942C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C2[0]),
  (VTBL_ENTRY)&_ZN8S19942C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19942C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19942C2[];
extern  VTBL_ENTRY _ZTV8S19942C2[];
Class_Descriptor cd_S19942C2 = {  "S19942C2", // class name
  0,0,//no base classes
  &(vtc_S19942C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(20880,14812), // object size
  NSPAIRA(_ZTI8S19942C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19942C2),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  S19942C15  : virtual S19942C6 , S19942C4 , virtual S19942C12_nt , S19942C10 {
  int s19942c15f0;
  long double s19942c15f1;
  ::S19942C12_nt s19942c15f2;
  void *s19942c15f3;
  short s19942c15f4;
  int s19942c15f5;
  int s19942c15f6;
  int s19942c15f7;
  virtual void  v8(); // _ZN9S19942C152v8Ev
  ~S19942C15(); // tgen
  S19942C15(); // tgen
};
//SIG(-1 S19942C15) C1{ VBC2{ v2 Fp[3] Fi[2] FL} BC3{ VBC4{ BC2 v3 v4 Fc[10] Fl[6] FC2 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC7{ BC2 Fi[10] Fs:11 FC2} BC8{ v5 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} BC8 v1 Fi FD FC10 Fp Fs Fi Fi Fi}


void  S19942C15 ::v8(){vfunc_called(this, "_ZN9S19942C152v8Ev");}
S19942C15 ::~S19942C15(){ note_dtor("S19942C15", this);} // tgen
S19942C15 ::S19942C15(){ note_ctor("S19942C15", this);} // tgen

static void Test_S19942C15()
{
  extern Class_Descriptor cd_S19942C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,207)];
    init_test(&cd_S19942C15, buf);
    S19942C15 *dp, &lv = *(dp=new (buf) S19942C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,824), "sizeof(S19942C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C15)");
    /*is_ambiguous_... S19942C15::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*), ABISELECT(704,524), "S19942C15");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(704,524), "S19942C15");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(752,556), "S19942C15");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(752,556), "S19942C15");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(992,712), "S19942C15");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(992,712), "S19942C15");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), 0, "S19942C15");
    check_base_class_offset(lv, (S19942C4*), 0, "S19942C15");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1136,820), "S19942C15");
    /*is_ambiguous_... S19942C15::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(416,320), "S19942C15");
    check_field_offset(lv, s19942c15f0, ABISELECT(640,484), "S19942C15.s19942c15f0");
    check_field_offset(lv, s19942c15f1, ABISELECT(656,488), "S19942C15.s19942c15f1");
    check_field_offset(lv, s19942c15f2, ABISELECT(672,500), "S19942C15.s19942c15f2");
    check_field_offset(lv, s19942c15f3, ABISELECT(680,504), "S19942C15.s19942c15f3");
    check_field_offset(lv, s19942c15f4, ABISELECT(688,508), "S19942C15.s19942c15f4");
    check_field_offset(lv, s19942c15f5, ABISELECT(692,512), "S19942C15.s19942c15f5");
    check_field_offset(lv, s19942c15f6, ABISELECT(696,516), "S19942C15.s19942c15f6");
    check_field_offset(lv, s19942c15f7, ABISELECT(700,520), "S19942C15.s19942c15f7");
    test_class_info(&lv, &cd_S19942C15);
    dp->~S19942C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C15(Test_S19942C15, "S19942C15", ABISELECT(1152,824));

#else // __cplusplus

extern void _ZN9S19942C15C1Ev();
extern void _ZN9S19942C15D1Ev();
Name_Map name_map_S19942C15[] = {
  NSPAIR(_ZN9S19942C15C1Ev),
  NSPAIR(_ZN9S19942C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
static Base_Class bases_S19942C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(704,524), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(752,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(752,556), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(992,712), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //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_S19942C9,    ABISELECT(992,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(1136,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19942C10,    ABISELECT(416,320), //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},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C15[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C15[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19942C15[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C15[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C15[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C15[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C15[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C15[] = {
  {&(_ZTV9S19942C15[6]),  6,28},
  {&(_tg__ZTV8S19942C4__9S19942C15[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C15[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C15[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C15[3]),  3,4},
  {&(_ZTV9S19942C15[15]),  15,28},
  {&(_ZTV9S19942C15[21]),  21,28},
  {&(_ZTV9S19942C15[27]),  27,28},
};
extern VTBL_ENTRY _ZTI9S19942C15[];
extern  VTBL_ENTRY _ZTV9S19942C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C15[];
Class_Descriptor cd_S19942C15 = {  "S19942C15", // class name
  bases_S19942C15, 9,
  &(vtc_S19942C15[0]), // expected_vtbl_contents
  &(vtt_S19942C15[0]), // expected_vtt_contents
  ABISELECT(1152,824), // object size
  NSPAIRA(_ZTI9S19942C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19942C15),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C15),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C14  : S19942C5 , virtual S19942C10 , virtual S19942C4 , S19942C13 , S19942C15 {
  void *s19942c14f0;
  int s19942c14f1;
  ::S19942C13 s19942c14f2;
  char s19942c14f3;
  int s19942c14f4;
  ::S19763C18_nt s19942c14f5;
  int s19942c14f6;
  int s19942c14f7;
  ::S19942C5 s19942c14f8;
  ::S19942C11 s19942c14f9;
  virtual void  v9(); // _ZN9S19942C142v9Ev
  ~S19942C14(); // tgen
  S19942C14(); // tgen
};
//SIG(-1 S19942C14) C1{ BC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6{ v5 Fp Fs FC4 Fp FL Fi FU7{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} VBC8{ VBC2 VBC3 VBC9{ BC3 Fi[10] Fs:11 FC3} BC6 v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} BC10{ BC3 VBC9 VBC8 VBC6 BC2 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} BC12{ VBC3 BC8 VBC11 BC6 v7 Fi FD FC11 Fp Fs Fi Fi Fi} v1 Fp Fi FC10 Fc Fi FC4 Fi Fi FC2 FU7}


void  S19942C14 ::v9(){vfunc_called(this, "_ZN9S19942C142v9Ev");}
S19942C14 ::~S19942C14(){ note_dtor("S19942C14", this);} // tgen
S19942C14 ::S19942C14(){ note_ctor("S19942C14", this);} // tgen

static void Test_S19942C14()
{
  extern Class_Descriptor cd_S19942C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(267,754)];
    init_test(&cd_S19942C14, buf);
    S19942C14 *dp, &lv = *(dp=new (buf) S19942C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4256,3012), "sizeof(S19942C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C14)");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), 0, "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*), 0, "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(3168,2228), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(3168,2228), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(3808,2712), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(3808,2712), "S19942C14");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C15*), ABISELECT(3808,2712), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(4048,2868), "S19942C14");
    /*is_ambiguous_... S19942C15::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C15*), ABISELECT(4048,2868), "S19942C14");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C15*), ABISELECT(4048,2868), "S19942C14");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(4096,2900), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(4096,2900), "S19942C14");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(4096,2900), "S19942C14");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C15*), ABISELECT(4096,2900), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(3392,2392), "S19942C14");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*), ABISELECT(3392,2392), "S19942C14");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(3392,2392), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(240,156), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(288,188), "S19942C14");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(288,188), "S19942C14");
    check_base_class_offset(lv, (S19942C13*), ABISELECT(240,156), "S19942C14");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C15*), ABISELECT(592,388), "S19942C14");
    check_base_class_offset(lv, (S19942C4*)(S19942C15*), ABISELECT(592,388), "S19942C14");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C15*), ABISELECT(4240,3008), "S19942C14");
    /*is_ambiguous_... S19942C15::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C15*), ABISELECT(1008,708), "S19942C14");
    check_base_class_offset(lv, (S19942C15*), ABISELECT(592,388), "S19942C14");
    check_field_offset(lv, s19942c14f0, ABISELECT(1296,912), "S19942C14.s19942c14f0");
    check_field_offset(lv, s19942c14f1, ABISELECT(1304,916), "S19942C14.s19942c14f1");
    check_field_offset(lv, s19942c14f2, ABISELECT(1312,920), "S19942C14.s19942c14f2");
    check_field_offset(lv, s19942c14f3, ABISELECT(2736,1932), "S19942C14.s19942c14f3");
    check_field_offset(lv, s19942c14f4, ABISELECT(2740,1936), "S19942C14.s19942c14f4");
    check_field_offset(lv, s19942c14f5, ABISELECT(2744,1940), "S19942C14.s19942c14f5");
    check_field_offset(lv, s19942c14f6, ABISELECT(2748,1944), "S19942C14.s19942c14f6");
    check_field_offset(lv, s19942c14f7, ABISELECT(2752,1948), "S19942C14.s19942c14f7");
    check_field_offset(lv, s19942c14f8, ABISELECT(2768,1952), "S19942C14.s19942c14f8");
    check_field_offset(lv, s19942c14f9, ABISELECT(3008,2108), "S19942C14.s19942c14f9");
    test_class_info(&lv, &cd_S19942C14);
    dp->~S19942C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C14(Test_S19942C14, "S19942C14", ABISELECT(4256,3012));

#else // __cplusplus

extern void _ZN9S19942C14C1Ev();
extern void _ZN9S19942C14D1Ev();
Name_Map name_map_S19942C14[] = {
  NSPAIR(_ZN9S19942C14C1Ev),
  NSPAIR(_ZN9S19942C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C15;
extern VTBL_ENTRY _ZTI9S19942C15[];
extern  VTBL_ENTRY _ZTV9S19942C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C15[];
static Base_Class bases_S19942C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C10,    ABISELECT(3168,2228), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(3808,2712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19942C5,    ABISELECT(3808,2712), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4048,2868), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4096,2900), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //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_S19942C9,    ABISELECT(4096,2900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(3392,2392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    ABISELECT(3392,2392), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(240,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(288,188), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(240,156), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(592,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
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(592,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(4240,3008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19942C10,    ABISELECT(1008,708), //bcp->offset
    38, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S19942C15,    ABISELECT(592,388), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C14[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C142v9Ev();
extern void _ZN9S19942C14D1Ev();
extern void _ZN9S19942C14D0Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev)();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C14[] = {
  ABISELECT(4240,3008),
  ABISELECT(4096,2900),
  ABISELECT(4048,2868),
  ABISELECT(3808,2712),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19942C142v9Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D0Ev,
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
  ABISELECT(-1008,-708),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3392,-2392),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-4048,-2868),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-4096,-2900),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19942C14[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C14[] = {
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C14[] = {
  0,
  ABISELECT(-3856,-2744),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__9S19942C14[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3152,-2236),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-3568,-2556),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__9S19942C14[] = {
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__9S19942C14[] = {
  0,
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C15__9S19942C14[] = {
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C49S19942C15__A1__9S19942C14[] = {
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C49S19942C15__A1__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C49S19942C15__A1__9S19942C14[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C15__A1__9S19942C14[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__9S19942C15__9S19942C14[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C15__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__9S19942C15__9S19942C14[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C14[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C14[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C14[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C14[] = {
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C14[] = {
  {&(_ZTV9S19942C14[8]),  8,70},
  {&(_tg__ZTV9S19942C13__9S19942C14[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__9S19942C14[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__9S19942C14[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__9S19942C14[3]),  3,4},
  {&(_tg__ZTV9S19942C15__9S19942C14[6]),  6,9},
  {&(_tg__ZTV8S19942C49S19942C15__A1__9S19942C14[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C49S19942C15__A1__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C49S19942C15__A1__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C15__A1__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C6__9S19942C15__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C5__9S19942C15__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C68S19942C9__A2__9S19942C15__9S19942C14[3]),  3,4},
  {&(_ZTV9S19942C14[44]),  44,70},
  {&(_ZTV9S19942C14[52]),  52,70},
  {&(_ZTV9S19942C14[59]),  59,70},
  {&(_ZTV9S19942C14[65]),  65,70},
  {&(_ZTV9S19942C14[69]),  69,70},
  {&(_ZTV9S19942C14[21]),  21,70},
  {&(_ZTV9S19942C14[35]),  35,70},
  {&(_tg__ZTV8S19942C4__9S19942C14[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C14[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C14[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C14[];
extern  VTBL_ENTRY _ZTV9S19942C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C14[];
Class_Descriptor cd_S19942C14 = {  "S19942C14", // class name
  bases_S19942C14, 19,
  &(vtc_S19942C14[0]), // expected_vtbl_contents
  &(vtt_S19942C14[0]), // expected_vtt_contents
  ABISELECT(4256,3012), // object size
  NSPAIRA(_ZTI9S19942C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19942C14),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C14),26, //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  S19942C16  : virtual S19942C10 , virtual S19942C13 , S19942C12_nt , S19942C3 {
  long s19942c16f0;
  ::S19942C9 s19942c16f1[10];
  ~S19942C16(); // tgen
  S19942C16(); // tgen
};
//SIG(-1 S19942C16) C1{ VBC2{ v1 Fp Fs FC3{} Fp FL Fi FU4{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} VBC5{ BC6{ v2 Fp[3] Fi[2] FL} VBC7{ BC6 Fi[10] Fs:11 FC6} VBC8{ VBC9{ BC6 v3 v4 Fc[10] Fl[6] FC6 Fp FC3 Fi[4] FU10{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6 VBC7 BC2 v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC2 BC9 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} BC11 BC12{ BC8 VBC11 vd v6 v7 v8 FC5 Fp} Fl FC7[10]}


S19942C16 ::~S19942C16(){ note_dtor("S19942C16", this);} // tgen
S19942C16 ::S19942C16(){ note_ctor("S19942C16", this);} // tgen

static void Test_S19942C16()
{
  extern Class_Descriptor cd_S19942C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(298,861)];
    init_test(&cd_S19942C16, buf);
    S19942C16 *dp, &lv = *(dp=new (buf) S19942C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4752,3440), "sizeof(S19942C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C16)");
    /*is_ambiguous_... S19942C16::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(3312,2424), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(3312,2424), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(3536,2588), "S19942C16");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(3880,2820), "S19942C16");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(3880,2820), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(3880,2820), "S19942C16");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*), ABISELECT(3880,2820), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(4448,3248), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(4448,3248), "S19942C16");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*), ABISELECT(4448,3248), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(4688,3404), "S19942C16");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*), ABISELECT(4688,3404), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(4032,2928), "S19942C16");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(4032,2928), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(3584,2620), "S19942C16");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(3584,2620), "S19942C16");
    check_base_class_offset(lv, (S19942C13*), ABISELECT(3536,2588), "S19942C16");
    /*is_ambiguous_... S19942C16::S19942C12_nt */ AMB_check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1848,1336), "S19942C16");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*), 0, "S19942C16");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*), 0, "S19942C16");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*), ABISELECT(4736,3436), "S19942C16");
    check_base_class_offset(lv, (S19942C3*), 0, "S19942C16");
    check_field_offset(lv, s19942c16f0, ABISELECT(1856,1340), "S19942C16.s19942c16f0");
    check_field_offset(lv, s19942c16f1, ABISELECT(1864,1344), "S19942C16.s19942c16f1");
    test_class_info(&lv, &cd_S19942C16);
    dp->~S19942C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C16(Test_S19942C16, "S19942C16", ABISELECT(4752,3440));

#else // __cplusplus

extern void _ZN9S19942C16C1Ev();
extern void _ZN9S19942C16D1Ev();
Name_Map name_map_S19942C16[] = {
  NSPAIR(_ZN9S19942C16C1Ev),
  NSPAIR(_ZN9S19942C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
static Base_Class bases_S19942C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C10,    ABISELECT(3312,2424), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(3536,2588), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C6,    ABISELECT(3880,2820), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_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_S19942C9,    ABISELECT(3880,2820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4448,3248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(4448,3248), //bcp->offset
    52, //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
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(4688,3404), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(4032,2928), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    ABISELECT(4032,2928), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(3584,2620), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C5,    ABISELECT(3584,2620), //bcp->offset
    34, //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
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(3536,2588), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C12_nt,    ABISELECT(1848,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
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    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
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(4736,3436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19942C3,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C16[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C16D1Ev();
extern void _ZN9S19942C16D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev)();
extern void ABISELECT(_ZThn3536_N9S19942C16D1Ev,_ZThn2588_N9S19942C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev)();
extern void ABISELECT(_ZThn3536_N9S19942C16D0Ev,_ZThn2588_N9S19942C16D0Ev)() __attribute__((weak));
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY vtc_S19942C16[] = {
  ABISELECT(4032,2928),
  ABISELECT(3536,2588),
  ABISELECT(3312,2424),
  ABISELECT(4736,3436),
  ABISELECT(3880,2820),
  ABISELECT(4688,3404),
  ABISELECT(4448,3248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  ABISELECT(-3312,-2424),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(-3536,-2588),
  0,
  ABISELECT(-224,-164),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  ABISELECT(-3536,-2588),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev),
  ABISELECT(-3584,-2620),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-3880,-2820),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-4032,-2928),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-4448,-3248),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-4688,-3404),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern VTBL_ENTRY _ZTV9S19942C16[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C3__9S19942C16[] = {
  ABISELECT(4736,3436),
  ABISELECT(3880,2820),
  ABISELECT(4688,3404),
  ABISELECT(4448,3248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C3__A1__9S19942C16[] = {
  ABISELECT(3880,2820),
  ABISELECT(4688,3404),
  ABISELECT(4448,3248),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-4448,-3248),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C16[] = {
  0,
  ABISELECT(-4688,-3404),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C16[] = {
  0,
  ABISELECT(-3880,-2820),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C3__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-4448,-3248),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C3__9S19942C16[] = {
  0,
  ABISELECT(-4688,-3404),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C16[] = {
  0,
  ABISELECT(-3880,-2820),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C16[] = {
  ABISELECT(-224,-164),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C16[] = {
  0,
  ABISELECT(-344,-232),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__9S19942C16[] = {
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-912,-660),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__9S19942C16[] = {
  0,
  ABISELECT(-1152,-816),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__9S19942C16[] = {
  0,
  ABISELECT(224,164),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C16[] = {
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C16[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C16[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C16[] = {
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C16[] = {
  {&(_ZTV9S19942C16[9]),  9,64},
  {&(_tg__ZTV8S19942C3__9S19942C16[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C3__A1__9S19942C16[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C3__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C3__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C16[3]),  3,4},
  {&(_ZTV9S19942C16[19]),  19,64},
  {&(_ZTV9S19942C16[31]),  31,64},
  {&(_ZTV9S19942C16[42]),  42,64},
  {&(_ZTV9S19942C16[50]),  50,64},
  {&(_ZTV9S19942C16[57]),  57,64},
  {&(_ZTV9S19942C16[63]),  63,64},
  {&(_ZTV9S19942C16[36]),  36,64},
  {&(_tg__ZTV9S19942C13__9S19942C16[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__9S19942C16[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__9S19942C16[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C16[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C16[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C16[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C16[];
extern  VTBL_ENTRY _ZTV9S19942C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C16[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3536_N9S19942C16D0Ev,_ZThn2588_N9S19942C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3536_N9S19942C16D1Ev,_ZThn2588_N9S19942C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19942C16 = {  "S19942C16", // class name
  bases_S19942C16, 17,
  &(vtc_S19942C16[0]), // expected_vtbl_contents
  &(vtt_S19942C16[0]), // expected_vtt_contents
  ABISELECT(4752,3440), // object size
  NSPAIRA(_ZTI9S19942C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19942C16),64, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C16),26, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C18  {
  char s19942c18f0;
  int s19942c18f1;
  unsigned char s19942c18f2:1;
  void *s19942c18f3;
  ::S19942C15 s19942c18f4[7];
  void *s19942c18f5;
  ::S19942C6 s19942c18f6;
  int s19942c18f7;
  int s19942c18f8;
  virtual void  v13(); // _ZN9S19942C183v13Ev
  ~S19942C18(); // tgen
  S19942C18(); // tgen
};
//SIG(-1 S19942C18) C1{ v1 Fc Fi Fc:1 Fp FC2{ VBC3{ v3 Fp[3] Fi[2] FL} BC4{ VBC5{ BC3 v4 v5 Fc[10] Fl[6] FC3 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC8{ BC3 Fi[10] Fs:11 FC3} BC9{ v6 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} BC9 v2 Fi FD FC11 Fp Fs Fi Fi Fi}[7] Fp FC3 Fi Fi}


void  S19942C18 ::v13(){vfunc_called(this, "_ZN9S19942C183v13Ev");}
S19942C18 ::~S19942C18(){ note_dtor("S19942C18", this);} // tgen
S19942C18 ::S19942C18(){ note_ctor("S19942C18", this);} // tgen

static void Test_S19942C18()
{
  extern Class_Descriptor cd_S19942C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(511,1459)];
    init_test(&cd_S19942C18, buf);
    S19942C18 *dp, &lv = *(dp=new (buf) S19942C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8160,5832), "sizeof(S19942C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C18)");
    check_field_offset(lv, s19942c18f0, ABISELECT(8,4), "S19942C18.s19942c18f0");
    check_field_offset(lv, s19942c18f1, ABISELECT(12,8), "S19942C18.s19942c18f1");
    set_bf_and_test(lv, s19942c18f2, ABISELECT(16,12), 0, 1, 1, "S19942C18");
    check_field_offset(lv, s19942c18f3, ABISELECT(24,16), "S19942C18.s19942c18f3");
    check_field_offset(lv, s19942c18f4, ABISELECT(32,20), "S19942C18.s19942c18f4");
    check_field_offset(lv, s19942c18f5, ABISELECT(8096,5788), "S19942C18.s19942c18f5");
    check_field_offset(lv, s19942c18f6, ABISELECT(8104,5792), "S19942C18.s19942c18f6");
    check_field_offset(lv, s19942c18f7, ABISELECT(8152,5824), "S19942C18.s19942c18f7");
    check_field_offset(lv, s19942c18f8, ABISELECT(8156,5828), "S19942C18.s19942c18f8");
    test_class_info(&lv, &cd_S19942C18);
    dp->~S19942C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C18(Test_S19942C18, "S19942C18", ABISELECT(8160,5832));

#else // __cplusplus

extern void _ZN9S19942C18C1Ev();
extern void _ZN9S19942C18D1Ev();
Name_Map name_map_S19942C18[] = {
  NSPAIR(_ZN9S19942C18C1Ev),
  NSPAIR(_ZN9S19942C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19942C18[];
extern void _ZN9S19942C183v13Ev();
static  VTBL_ENTRY vtc_S19942C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C18[0]),
  (VTBL_ENTRY)&_ZN9S19942C183v13Ev,
};
extern VTBL_ENTRY _ZTI9S19942C18[];
extern  VTBL_ENTRY _ZTV9S19942C18[];
Class_Descriptor cd_S19942C18 = {  "S19942C18", // class name
  0,0,//no base classes
  &(vtc_S19942C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8160,5832), // object size
  NSPAIRA(_ZTI9S19942C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19942C18),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  S19942C17  : S19942C4 , S19942C18 , S19942C3 , virtual S19942C10 {
  ::S19942C8 s19942c17f0[6];
  virtual  ~S19942C17(); // _ZN9S19942C17D2Ev
  S19942C17(); // tgen
};
//SIG(-1 S19942C17) C1{ BC2{ VBC3{ BC4{ v1 Fp[3] Fi[2] FL} v2 v3 Fc[10] Fl[6] FC4 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC7{ BC4 Fi[10] Fs:11 FC4} BC8{ v4 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} BC10{ v6 Fc Fi Fc:1 Fp FC11{ VBC4 BC2 VBC12{ m Fc[2]} BC8 v10 Fi FD FC12 Fp Fs Fi Fi Fi}[7] Fp FC4 Fi Fi} BC13{ BC2 VBC12 vd v7 v8 v9 FC14{ BC4 VBC7 VBC2 VBC8 BC3 vd FL[3] FC12 Fp Fs Fc Fi Fi} Fp} VBC8 vd FU6[6]}


 S19942C17 ::~S19942C17(){ note_dtor("S19942C17", this);}
S19942C17 ::S19942C17(){ note_ctor("S19942C17", this);} // tgen

static void Test_S19942C17()
{
  extern Class_Descriptor cd_S19942C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(701,2007)];
    init_test(&cd_S19942C17, buf);
    S19942C17 *dp, &lv = *(dp=new (buf) S19942C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11200,8024), "sizeof(S19942C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C17)");
    check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(10528,7560), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(10528,7560), "S19942C17");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*), ABISELECT(10528,7560), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(10768,7716), "S19942C17");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*), ABISELECT(10768,7716), "S19942C17");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(10816,7748), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(10816,7748), "S19942C17");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*), ABISELECT(10816,7748), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), 0, "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*), 0, "S19942C17");
    check_base_class_offset(lv, (S19942C18*), ABISELECT(416,320), "S19942C17");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*), ABISELECT(8576,6152), "S19942C17");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*), ABISELECT(8576,6152), "S19942C17");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*), ABISELECT(10960,7856), "S19942C17");
    check_base_class_offset(lv, (S19942C3*), ABISELECT(8576,6152), "S19942C17");
    /*is_ambiguous_... S19942C17::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(10976,7860), "S19942C17");
    check_field_offset(lv, s19942c17f0, ABISELECT(10432,7488), "S19942C17.s19942c17f0");
    test_class_info(&lv, &cd_S19942C17);
    dp->~S19942C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C17(Test_S19942C17, "S19942C17", ABISELECT(11200,8024));

#else // __cplusplus

extern void _ZN9S19942C17C1Ev();
extern void _ZN9S19942C17D2Ev();
Name_Map name_map_S19942C17[] = {
  NSPAIR(_ZN9S19942C17C1Ev),
  NSPAIR(_ZN9S19942C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C18;
extern VTBL_ENTRY _ZTI9S19942C18[];
extern  VTBL_ENTRY _ZTV9S19942C18[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
static Base_Class bases_S19942C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    ABISELECT(10528,7560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(10528,7560), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(10768,7716), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(10816,7748), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //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_S19942C9,    ABISELECT(10816,7748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C18,    ABISELECT(416,320), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(8576,6152), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    ABISELECT(8576,6152), //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
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(10960,7856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19942C3,    ABISELECT(8576,6152), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(10976,7860), //bcp->offset
    43, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19942C17[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C17D1Ev();
extern void _ZN9S19942C17D0Ev();
extern void _ZN9S19942C183v13Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev)();
extern void ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev)();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C17[] = {
  ABISELECT(10976,7860),
  ABISELECT(10960,7856),
  ABISELECT(10816,7748),
  ABISELECT(10768,7716),
  ABISELECT(10528,7560),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D0Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C183v13Ev,
  ABISELECT(2384,1704),
  ABISELECT(2240,1596),
  ABISELECT(2192,1564),
  ABISELECT(1952,1408),
  ABISELECT(-8576,-6152),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  0,
  0,
  ABISELECT(-10528,-7560),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-10768,-7716),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-10816,-7748),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-10976,-7860),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTV9S19942C17[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C17[] = {
  ABISELECT(10816,7748),
  ABISELECT(10768,7716),
  ABISELECT(10528,7560),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C17[] = {
  0,
  0,
  0,
  ABISELECT(-10528,-7560),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C17[] = {
  0,
  ABISELECT(-10768,-7716),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C17[] = {
  0,
  ABISELECT(-10816,-7748),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C3__9S19942C17[] = {
  ABISELECT(2384,1704),
  ABISELECT(2240,1596),
  ABISELECT(2192,1564),
  ABISELECT(1952,1408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C3__A1__9S19942C17[] = {
  ABISELECT(2240,1596),
  ABISELECT(2192,1564),
  ABISELECT(1952,1408),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C17[] = {
  0,
  0,
  0,
  ABISELECT(-1952,-1408),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C17[] = {
  0,
  ABISELECT(-2192,-1564),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C17[] = {
  0,
  ABISELECT(-2240,-1596),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C3__9S19942C17[] = {
  0,
  0,
  0,
  ABISELECT(-1952,-1408),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C3__9S19942C17[] = {
  0,
  ABISELECT(-2192,-1564),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C17[] = {
  0,
  ABISELECT(-2240,-1596),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C17[] = {
  {&(_ZTV9S19942C17[7]),  7,47},
  {&(_tg__ZTV8S19942C4__9S19942C17[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C17[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C3__9S19942C17[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C3__A1__9S19942C17[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C3__A1__9S19942C17[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C3__A1__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C3__A1__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C3__9S19942C17[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C3__9S19942C17[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C3__9S19942C17[3]),  3,4},
  {&(_ZTV9S19942C17[32]),  32,47},
  {&(_ZTV9S19942C17[38]),  38,47},
  {&(_ZTV9S19942C17[42]),  42,47},
  {&(_ZTV9S19942C17[20]),  20,47},
  {&(_ZTV9S19942C17[46]),  46,47},
};
extern VTBL_ENTRY _ZTI9S19942C17[];
extern  VTBL_ENTRY _ZTV9S19942C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C17[];
Class_Descriptor cd_S19942C17 = {  "S19942C17", // class name
  bases_S19942C17, 13,
  &(vtc_S19942C17[0]), // expected_vtbl_contents
  &(vtt_S19942C17[0]), // expected_vtt_contents
  ABISELECT(11200,8024), // object size
  NSPAIRA(_ZTI9S19942C17),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19942C17),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C17),18, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C19  : S19942C9 , S19942C13 {
  void *s19942c19f0;
  virtual  ~S19942C19(); // _ZN9S19942C19D2Ev
  virtual void  v14(); // _ZN9S19942C193v14Ev
  virtual void  v15(); // _ZN9S19942C193v15Ev
  S19942C19(); // tgen
};
//SIG(-1 S19942C19) C1{ BC2{ BC3{ v3 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC3} BC4{ BC3 VBC2 VBC5{ VBC6{ BC3 v4 v5 Fc[10] Fl[6] FC3 Fp FC7{} Fi[4] FU8{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC2 BC9{ v6 Fp Fs FC7 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC9 BC6 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} vd v1 v2 Fp}


 S19942C19 ::~S19942C19(){ note_dtor("S19942C19", this);}
void  S19942C19 ::v14(){vfunc_called(this, "_ZN9S19942C193v14Ev");}
void  S19942C19 ::v15(){vfunc_called(this, "_ZN9S19942C193v15Ev");}
S19942C19 ::S19942C19(){ note_ctor("S19942C19", this);} // tgen

static void Test_S19942C19()
{
  extern Class_Descriptor cd_S19942C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(99,282)];
    init_test(&cd_S19942C19, buf);
    S19942C19 *dp, &lv = *(dp=new (buf) S19942C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1568,1124), "sizeof(S19942C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C19)");
    /*is_ambiguous_... S19942C19::S19942C9 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C9*), 0, "S19942C19");
    /*is_ambiguous_... S19942C19::S19942C9 */ AMB_check_base_class_offset(lv, (S19942C9*), 0, "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(144,108), "S19942C19");
    /*is_ambiguous_... S19942C19::S19942C9 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(496,344), "S19942C19");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(496,344), "S19942C19");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(496,344), "S19942C19");
    /*is_ambiguous_... S19942C19::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(1056,772), "S19942C19");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(1056,772), "S19942C19");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(1296,928), "S19942C19");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(640,452), "S19942C19");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(640,452), "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(1344,960), "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(192,140), "S19942C19");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(192,140), "S19942C19");
    check_base_class_offset(lv, (S19942C13*), ABISELECT(144,108), "S19942C19");
    check_field_offset(lv, s19942c19f0, ABISELECT(488,340), "S19942C19.s19942c19f0");
    test_class_info(&lv, &cd_S19942C19);
    dp->~S19942C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C19(Test_S19942C19, "S19942C19", ABISELECT(1568,1124));

#else // __cplusplus

extern void _ZN9S19942C19C1Ev();
extern void _ZN9S19942C19D2Ev();
Name_Map name_map_S19942C19[] = {
  NSPAIR(_ZN9S19942C19C1Ev),
  NSPAIR(_ZN9S19942C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
static Base_Class bases_S19942C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19942C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C6,    ABISELECT(144,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
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(496,344), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_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_S19942C9,    ABISELECT(496,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(1056,772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19942C5,    ABISELECT(1056,772), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(1296,928), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(640,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(640,452), //bcp->offset
    31, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(1344,960), //bcp->offset
    52, //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
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(192,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
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(144,108), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //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 _ZTI9S19942C19[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C19D1Ev();
extern void _ZN9S19942C19D0Ev();
extern void _ZN9S19942C193v14Ev();
extern void _ZN9S19942C193v15Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZThn144_N9S19942C19D1Ev,_ZThn108_N9S19942C19D1Ev)();
extern void ABISELECT(_ZThn144_N9S19942C19D0Ev,_ZThn108_N9S19942C19D0Ev)();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY vtc_S19942C19[] = {
  ABISELECT(1344,960),
  ABISELECT(1296,928),
  ABISELECT(1056,772),
  ABISELECT(640,452),
  ABISELECT(496,344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C19D0Ev,
  (VTBL_ENTRY)&_ZN9S19942C193v14Ev,
  (VTBL_ENTRY)&_ZN9S19942C193v15Ev,
  ABISELECT(1200,852),
  ABISELECT(1152,820),
  ABISELECT(912,664),
  ABISELECT(496,344),
  ABISELECT(352,236),
  ABISELECT(-144,-108),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19942C19D1Ev,_ZThn108_N9S19942C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S19942C19D0Ev,_ZThn108_N9S19942C19D0Ev),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-496,-344),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  0,
  ABISELECT(-144,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-640,-452),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-1056,-772),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-1296,-928),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-1344,-960),
  (VTBL_ENTRY)&(_ZTI9S19942C19[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern VTBL_ENTRY _ZTV9S19942C19[];
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C19[] = {
  ABISELECT(1200,852),
  ABISELECT(1152,820),
  ABISELECT(912,664),
  ABISELECT(496,344),
  ABISELECT(352,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C19[] = {
  0,
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__9S19942C19[] = {
  0,
  0,
  ABISELECT(-144,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-344),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__9S19942C19[] = {
  0,
  0,
  0,
  ABISELECT(-912,-664),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__9S19942C19[] = {
  0,
  ABISELECT(-1152,-820),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__9S19942C19[] = {
  0,
  ABISELECT(-1200,-852),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C19[] = {
  ABISELECT(-144,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__9S19942C19[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__9S19942C19[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C19[] = {
  0,
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
static  VTT_ENTRY vtt_S19942C19[] = {
  {&(_ZTV9S19942C19[7]),  7,56},
  {&(_tg__ZTV9S19942C13__9S19942C19[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__9S19942C19[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__9S19942C19[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__9S19942C19[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__9S19942C19[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__9S19942C19[3]),  3,4},
  {&(_ZTV9S19942C19[19]),  19,56},
  {&(_ZTV9S19942C19[30]),  30,56},
  {&(_ZTV9S19942C19[38]),  38,56},
  {&(_ZTV9S19942C19[45]),  45,56},
  {&(_ZTV9S19942C19[51]),  51,56},
  {&(_ZTV9S19942C19[55]),  55,56},
  {&(_tg__ZTV8S19942C4__9S19942C19[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__9S19942C19[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__9S19942C19[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__9S19942C19[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19942C19[];
extern  VTBL_ENTRY _ZTV9S19942C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C19[];
Class_Descriptor cd_S19942C19 = {  "S19942C19", // class name
  bases_S19942C19, 14,
  &(vtc_S19942C19[0]), // expected_vtbl_contents
  &(vtt_S19942C19[0]), // expected_vtt_contents
  ABISELECT(1568,1124), // object size
  NSPAIRA(_ZTI9S19942C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19942C19),56, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19942C19),17, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19942C1  : virtual S19942C2 , virtual S19942C10 , virtual S19942C14 , S19942C16 , S19942C17 {
  ::S19942C17 s19942c1f0;
  __tsi64 s19942c1f1;
  ::S19942C9 s19942c1f2;
  char s19942c1f3[6];
  ::S19942C19 s19942c1f4;
  short s19942c1f5;
  char s19942c1f6[6];
  long double s19942c1f7[6];
  int s19942c1f8;
  int s19942c1f9;
  int s19942c1f10;
  ~S19942C1(); // tgen
  S19942C1(); // tgen
};
//SIG(1 S19942C1) C1{ VBC2{ v1 v2 Fi[2] FC3{ BC4{ VBC5{ BC6{ v4 Fp[3] Fi[2] FL} v5 v6 Fc[10] Fl[6] FC6 Fp FC7{} Fi[4] FU8{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6 VBC9{ BC6 Fi[10] Fs:11 FC6} BC10{ v3 Fp Fs FC7 Fp FL Fi FU11{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC12{ m Fc[2]} vd v10 v11 v12 FC13{ BC6 VBC9 VBC4 VBC10 BC5 vd FL[3] FC12 Fp Fs Fc Fi Fi} Fp}[9] Fi Fl Fi Fi FC6 Fi Fi Fi FD Fi} VBC10 VBC14{ BC5 VBC10 VBC4 BC13 BC15{ VBC6 BC4 VBC12 BC10 v8 Fi FD FC12 Fp Fs Fi Fi Fi} v9 Fp Fi FC13 Fc Fi FC7 Fi Fi FC5 FU11} BC16{ VBC10 VBC13 BC12 BC3 Fl FC9[10]} BC17{ BC4 BC18{ v13 Fc Fi Fc:1 Fp FC15[7] Fp FC6 Fi Fi} BC3 VBC10 vd FU8[6]} FC17 FL FC9 Fc[6] FC19{ BC9 BC13 vd v14 v15 Fp} Fs Fc[6] FD[6] Fi Fi Fi}


S19942C1 ::~S19942C1(){ note_dtor("S19942C1", this);} // tgen
S19942C1 ::S19942C1(){ note_ctor("S19942C1", this);} // tgen

static void Test_S19942C1()
{
  extern Class_Descriptor cd_S19942C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3275,9352)];
    init_test(&cd_S19942C1, buf);
    S19942C1 *dp, &lv = *(dp=new (buf) S19942C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(52384,37404), "sizeof(S19942C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19942C1)");
    check_base_class_offset(lv, (S19942C2*), ABISELECT(26896,19348), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C14*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*)(S19942C14*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C16::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C16*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C13*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C17*), ABISELECT(47776,34160), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C14*), ABISELECT(48000,34324), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C14*), ABISELECT(48000,34324), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*), ABISELECT(51584,36872), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*), ABISELECT(51584,36872), "S19942C1");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(51584,36872), "S19942C1");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*)(S19942C16*), ABISELECT(51584,36872), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C17*), ABISELECT(51584,36872), "S19942C1");
    check_base_class_offset(lv, (S19942C5*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(51584,36872), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C15::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C15*)(S19942C14*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*)(S19942C16*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C17*), ABISELECT(51824,37028), "S19942C1");
    /*is_ambiguous_... S19942C4::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(51824,37028), "S19942C1");
    check_base_class_offset(lv, (S19942C6*)(S19942C9*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C13*)(S19942C14*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C13*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*)(S19942C16*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C17*), ABISELECT(51872,37060), "S19942C1");
    check_base_class_offset(lv, (S19942C9*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(51872,37060), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*), ABISELECT(51168,36552), "S19942C1");
    /*is_ambiguous_... S19942C14::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*)(S19942C14*), ABISELECT(51168,36552), "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C13*)(S19942C14*), ABISELECT(51168,36552), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C4*)(S19942C13*), ABISELECT(51168,36552), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C6 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*)(S19942C14*), ABISELECT(48240,34480), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*)(S19942C14*), ABISELECT(48288,34512), "S19942C1");
    /*is_ambiguous_... S19942C13::S19942C5 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*)(S19942C14*), ABISELECT(48288,34512), "S19942C1");
    check_base_class_offset(lv, (S19942C13*)(S19942C14*), ABISELECT(48240,34480), "S19942C1");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(48592,34712), "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C15*)(S19942C14*), ABISELECT(48592,34712), "S19942C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C15*)(S19942C14*), ABISELECT(52016,37168), "S19942C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*)(S19942C16*), ABISELECT(52016,37168), "S19942C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S19942C3*)(S19942C17*), ABISELECT(52016,37168), "S19942C1");
    /*is_ambiguous_... S19942C15::S19942C10 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C15*)(S19942C14*), ABISELECT(49008,35032), "S19942C1");
    check_base_class_offset(lv, (S19942C15*)(S19942C14*), ABISELECT(48592,34712), "S19942C1");
    check_base_class_offset(lv, (S19942C14*), ABISELECT(48000,34324), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C13*), ABISELECT(52032,37172), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C6*)(S19942C5*)(S19942C13*), ABISELECT(52080,37204), "S19942C1");
    /*is_ambiguous_... S19942C1::S19942C13 */ AMB_check_base_class_offset(lv, (S19942C5*)(S19942C13*), ABISELECT(52080,37204), "S19942C1");
    check_base_class_offset(lv, (S19942C13*)(S19942C16*), ABISELECT(52032,37172), "S19942C1");
    /*is_ambiguous_... S19942C16::S19942C12_nt */ AMB_check_base_class_offset(lv, (S19942C12_nt*)(S19942C16*), ABISELECT(1848,1336), "S19942C1");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*)(S19942C16*), 0, "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*)(S19942C16*), 0, "S19942C1");
    check_base_class_offset(lv, (S19942C3*)(S19942C16*), 0, "S19942C1");
    check_base_class_offset(lv, (S19942C16*), 0, "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C17*), ABISELECT(3312,2424), "S19942C1");
    /*is_ambiguous_... S19942C17::S19942C4 */ AMB_check_base_class_offset(lv, (S19942C4*)(S19942C17*), ABISELECT(3312,2424), "S19942C1");
    check_base_class_offset(lv, (S19942C18*)(S19942C17*), ABISELECT(3728,2744), "S19942C1");
    check_base_class_offset(lv, (S19942C10*)(S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(11888,8576), "S19942C1");
    check_base_class_offset(lv, (S19942C4*)(S19942C3*)(S19942C17*), ABISELECT(11888,8576), "S19942C1");
    check_base_class_offset(lv, (S19942C3*)(S19942C17*), ABISELECT(11888,8576), "S19942C1");
    check_base_class_offset(lv, (S19942C17*), ABISELECT(3312,2424), "S19942C1");
    check_field_offset(lv, s19942c1f0, ABISELECT(13840,9984), "S19942C1.s19942c1f0");
    check_field_offset(lv, s19942c1f1, ABISELECT(25040,18008), "S19942C1.s19942c1f1");
    check_field_offset(lv, s19942c1f2, ABISELECT(25048,18016), "S19942C1.s19942c1f2");
    check_field_offset(lv, s19942c1f3, ABISELECT(25192,18124), "S19942C1.s19942c1f3");
    check_field_offset(lv, s19942c1f4, ABISELECT(25200,18132), "S19942C1.s19942c1f4");
    check_field_offset(lv, s19942c1f5, ABISELECT(26768,19256), "S19942C1.s19942c1f5");
    check_field_offset(lv, s19942c1f6, ABISELECT(26770,19258), "S19942C1.s19942c1f6");
    check_field_offset(lv, s19942c1f7, ABISELECT(26784,19264), "S19942C1.s19942c1f7");
    check_field_offset(lv, s19942c1f8, ABISELECT(26880,19336), "S19942C1.s19942c1f8");
    check_field_offset(lv, s19942c1f9, ABISELECT(26884,19340), "S19942C1.s19942c1f9");
    check_field_offset(lv, s19942c1f10, ABISELECT(26888,19344), "S19942C1.s19942c1f10");
    test_class_info(&lv, &cd_S19942C1);
    dp->~S19942C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19942C1(Test_S19942C1, "S19942C1", ABISELECT(52384,37404));

#else // __cplusplus

extern void _ZN8S19942C1C1Ev();
extern void _ZN8S19942C1D1Ev();
Name_Map name_map_S19942C1[] = {
  NSPAIR(_ZN8S19942C1C1Ev),
  NSPAIR(_ZN8S19942C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19942C2;
extern VTBL_ENTRY _ZTI8S19942C2[];
extern  VTBL_ENTRY _ZTV8S19942C2[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C9;
extern VTBL_ENTRY _ZTI8S19942C9[];
extern  VTBL_ENTRY _ZTV8S19942C9[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C15;
extern VTBL_ENTRY _ZTI9S19942C15[];
extern  VTBL_ENTRY _ZTV9S19942C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C15[];
extern Class_Descriptor cd_S19942C14;
extern VTBL_ENTRY _ZTI9S19942C14[];
extern  VTBL_ENTRY _ZTV9S19942C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C14[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C6;
extern VTBL_ENTRY _ZTI8S19942C6[];
extern  VTBL_ENTRY _ZTV8S19942C6[];
extern Class_Descriptor cd_S19942C5;
extern VTBL_ENTRY _ZTI8S19942C5[];
extern  VTBL_ENTRY _ZTV8S19942C5[];
extern Class_Descriptor cd_S19942C13;
extern VTBL_ENTRY _ZTI9S19942C13[];
extern  VTBL_ENTRY _ZTV9S19942C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C13[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
extern Class_Descriptor cd_S19942C16;
extern VTBL_ENTRY _ZTI9S19942C16[];
extern  VTBL_ENTRY _ZTV9S19942C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C16[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C18;
extern VTBL_ENTRY _ZTI9S19942C18[];
extern  VTBL_ENTRY _ZTV9S19942C18[];
extern Class_Descriptor cd_S19942C10;
extern VTBL_ENTRY _ZTI9S19942C10[];
extern  VTBL_ENTRY _ZTV9S19942C10[];
extern Class_Descriptor cd_S19942C4;
extern VTBL_ENTRY _ZTI8S19942C4[];
extern  VTBL_ENTRY _ZTV8S19942C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C4[];
extern Class_Descriptor cd_S19942C3;
extern VTBL_ENTRY _ZTI8S19942C3[];
extern  VTBL_ENTRY _ZTV8S19942C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C3[];
extern Class_Descriptor cd_S19942C17;
extern VTBL_ENTRY _ZTI9S19942C17[];
extern  VTBL_ENTRY _ZTV9S19942C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19942C17[];
static Base_Class bases_S19942C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19942C2,    ABISELECT(26896,19348), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C10,    ABISELECT(47776,34160), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(48000,34324), //bcp->offset
    -1, //bcp->virtual_function_table_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
    3, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(48000,34324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(51584,36872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19942C5,    ABISELECT(51584,36872), //bcp->offset
    113, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(51824,37028), //bcp->offset
    121, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(51872,37060), //bcp->offset
    125, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19942C9,    ABISELECT(51872,37060), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19942C10,    ABISELECT(51168,36552), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    ABISELECT(51168,36552), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19942C6,    ABISELECT(48240,34480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19942C6,    ABISELECT(48288,34512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(48288,34512), //bcp->offset
    87, //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(48240,34480), //bcp->offset
    77, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19942C10,    ABISELECT(48592,34712), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C4,    ABISELECT(48592,34712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(52016,37168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19942C10,    ABISELECT(49008,35032), //bcp->offset
    101, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19942C15,    ABISELECT(48592,34712), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19942C14,    ABISELECT(48000,34324), //bcp->offset
    55, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19942C6,    ABISELECT(52032,37172), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19942C6,    ABISELECT(52080,37204), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S19942C5,    ABISELECT(52080,37204), //bcp->offset
    143, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19942C13,    ABISELECT(52032,37172), //bcp->offset
    129, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19942C12_nt,    ABISELECT(1848,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
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19942C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19942C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    28, //immediately_derived
  0, 0},
  {&cd_S19942C3,    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
    27, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19942C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C10,    ABISELECT(3312,2424), //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(3312,2424), //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
    30, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19942C18,    ABISELECT(3728,2744), //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
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19942C10,    ABISELECT(11888,8576), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S19942C4,    ABISELECT(11888,8576), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19942C3,    ABISELECT(11888,8576), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19942C17,    ABISELECT(3312,2424), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19942C1[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C1D1Ev();
extern void _ZN8S19942C1D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn3312_N8S19942C1D1Ev,_ZThn2424_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn3312_N8S19942C1D0Ev,_ZThn2424_N8S19942C1D0Ev)();
extern void _ZN9S19942C183v13Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn11888_N8S19942C1D1Ev,_ZThn8576_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn11888_N8S19942C1D0Ev,_ZThn8576_N8S19942C1D0Ev)();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
extern void _ZN8S19942C22v1Ev();
extern void _ZN8S19942C22v2Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C142v9Ev();
extern void ABISELECT(_ZTv0_n104_N8S19942C1D1Ev,_ZTv0_n52_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn48000_N8S19942C1D1Ev,_ZThn34324_N8S19942C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19942C1D0Ev,_ZTv0_n52_N8S19942C1D0Ev)();
extern void ABISELECT(_ZThn48000_N8S19942C1D0Ev,_ZThn34324_N8S19942C1D0Ev)() __attribute__((weak));
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTvn240_n104_N8S19942C1D1Ev,_ZTvn156_n52_N8S19942C1D1Ev)();
extern void ABISELECT(_ZTvn240_n104_N8S19942C1D0Ev,_ZTvn156_n52_N8S19942C1D0Ev)();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S19942C1D1Ev,_ZTv0_n36_N8S19942C1D1Ev)();
extern void ABISELECT(_ZThn52032_N8S19942C1D1Ev,_ZThn37172_N8S19942C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19942C1D0Ev,_ZTv0_n36_N8S19942C1D0Ev)();
extern void ABISELECT(_ZThn52032_N8S19942C1D0Ev,_ZThn37172_N8S19942C1D0Ev)() __attribute__((weak));
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY vtc_S19942C1[] = {
  ABISELECT(48000,34324),
  ABISELECT(26896,19348),
  ABISELECT(51168,36552),
  ABISELECT(52032,37172),
  ABISELECT(47776,34160),
  ABISELECT(52016,37168),
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  ABISELECT(44464,31736),
  ABISELECT(48704,34744),
  ABISELECT(48560,34636),
  ABISELECT(48512,34604),
  ABISELECT(48272,34448),
  ABISELECT(-3312,-2424),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn3312_N8S19942C1D1Ev,_ZThn2424_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn3312_N8S19942C1D0Ev,_ZThn2424_N8S19942C1D0Ev),
  ABISELECT(-3728,-2744),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C183v13Ev,
  ABISELECT(40128,28592),
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  ABISELECT(-11888,-8576),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn11888_N8S19942C1D1Ev,_ZThn8576_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn11888_N8S19942C1D0Ev,_ZThn8576_N8S19942C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
  0,
  0,
  ABISELECT(-26896,-19348),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19942C22v2Ev,
  0,
  ABISELECT(-47776,-34160),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(-48000,-34324),
  0,
  0,
  0,
  0,
  ABISELECT(4016,2844),
  ABISELECT(3872,2736),
  ABISELECT(3824,2704),
  ABISELECT(3584,2548),
  ABISELECT(3168,2228),
  ABISELECT(-224,-164),
  ABISELECT(-48000,-34324),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19942C142v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19942C1D1Ev,_ZTv0_n52_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19942C1D0Ev,_ZTv0_n52_N8S19942C1D0Ev),
  ABISELECT(-464,-320),
  ABISELECT(3584,2548),
  ABISELECT(3344,2392),
  ABISELECT(2928,2072),
  ABISELECT(3632,2580),
  ABISELECT(-48240,-34480),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N8S19942C1D1Ev,_ZTvn156_n52_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N8S19942C1D0Ev,_ZTvn156_n52_N8S19942C1D0Ev),
  ABISELECT(-48288,-34512),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  ABISELECT(3424,2456),
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  ABISELECT(-48592,-34712),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
  ABISELECT(-49008,-35032),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-51168,-36552),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(-52032,-37172),
  0,
  ABISELECT(-4256,-3012),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(-864,-620),
  ABISELECT(-160,-112),
  ABISELECT(-52032,-37172),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19942C1D1Ev,_ZTv0_n36_N8S19942C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19942C1D0Ev,_ZTv0_n36_N8S19942C1D0Ev),
  ABISELECT(-52080,-37204),
  (VTBL_ENTRY)&(_ZTI8S19942C1[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern VTBL_ENTRY _ZTV8S19942C1[];
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C16D1Ev();
extern void _ZN9S19942C16D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C16__8S19942C1[] = {
  ABISELECT(51168,36552),
  ABISELECT(52032,37172),
  ABISELECT(47776,34160),
  ABISELECT(52016,37168),
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C16D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C39S19942C16__8S19942C1[] = {
  ABISELECT(52016,37168),
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  ABISELECT(51872,37060),
  ABISELECT(51824,37028),
  ABISELECT(51584,36872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C16__A2__8S19942C1[] = {
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C39S19942C16__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C39S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__9S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-47776,-34160),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev)();
extern void ABISELECT(_ZThn52032_N9S19942C16D1Ev,_ZThn37172_N9S19942C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev)();
extern void ABISELECT(_ZThn52032_N9S19942C16D0Ev,_ZThn37172_N9S19942C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C16__8S19942C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(-52032,-37172),
  0,
  ABISELECT(-4256,-3012),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(-864,-620),
  ABISELECT(-160,-112),
  ABISELECT(-52032,-37172),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev),
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51872,-37060),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C16__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-51168,-36552),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C16__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-51584,-36872),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C16__8S19942C1[] = {
  0,
  ABISELECT(-51824,-37028),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C59S19942C13__A1__9S19942C16__8S19942C1[] = {
  ABISELECT(-52080,-37204),
  (VTBL_ENTRY)&(_ZTI9S19942C16[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C17D1Ev();
extern void _ZN9S19942C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C17__8S19942C1[] = {
  ABISELECT(44464,31736),
  ABISELECT(48704,34744),
  ABISELECT(48560,34636),
  ABISELECT(48512,34604),
  ABISELECT(48272,34448),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C17D0Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C49S19942C17__A3__8S19942C1[] = {
  ABISELECT(48560,34636),
  ABISELECT(48512,34604),
  ABISELECT(48272,34448),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C49S19942C17__A3__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-48272,-34448),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C49S19942C17__A3__8S19942C1[] = {
  0,
  ABISELECT(-48512,-34604),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C17__A3__8S19942C1[] = {
  0,
  ABISELECT(-48560,-34636),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN8S19942C3D1Ev();
extern void _ZN8S19942C3D0Ev();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C39S19942C17__A1__8S19942C1[] = {
  ABISELECT(40128,28592),
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19942C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-39696,-28296),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  0,
  ABISELECT(-39936,-28452),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C17__A4__8S19942C1[] = {
  0,
  ABISELECT(-39984,-28484),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C39S19942C17__A1__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-39696,-28296),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C39S19942C17__A1__8S19942C1[] = {
  0,
  ABISELECT(-39936,-28452),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C17__A1__8S19942C1[] = {
  0,
  ABISELECT(-39984,-28484),
  (VTBL_ENTRY)&(_ZTI8S19942C3[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C17__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-48272,-34448),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__9S19942C17__8S19942C1[] = {
  0,
  ABISELECT(-48512,-34604),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__9S19942C17__8S19942C1[] = {
  0,
  ABISELECT(-48560,-34636),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev)();
extern void ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev)();
extern void _ZN8S19942C33v10Ev();
extern void _ZN8S19942C33v11Ev();
extern void _ZN8S19942C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C3__9S19942C17__8S19942C1[] = {
  ABISELECT(40128,28592),
  ABISELECT(39984,28484),
  ABISELECT(39936,28452),
  ABISELECT(39696,28296),
  ABISELECT(-8576,-6152),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D1Ev,_ZThn6152_N9S19942C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8576_N9S19942C17D0Ev,_ZThn6152_N9S19942C17D0Ev),
  (VTBL_ENTRY)&_ZN8S19942C33v10Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19942C33v12Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A2__9S19942C17__8S19942C1[] = {
  0,
  ABISELECT(-44464,-31736),
  (VTBL_ENTRY)&(_ZTI9S19942C17[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
extern void _ZN9S19942C142v9Ev();
extern void _ZN9S19942C14D1Ev();
extern void _ZN9S19942C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C14__8S19942C1[] = {
  ABISELECT(4016,2844),
  ABISELECT(3872,2736),
  ABISELECT(3824,2704),
  ABISELECT(3584,2548),
  ABISELECT(3168,2228),
  ABISELECT(-224,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
  (VTBL_ENTRY)&_ZN9S19942C142v9Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C14D0Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C139S19942C14__8S19942C1[] = {
  ABISELECT(-464,-320),
  ABISELECT(3584,2548),
  ABISELECT(3344,2392),
  ABISELECT(2928,2072),
  ABISELECT(3632,2580),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C139S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3632,-2580),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C139S19942C14__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C139S19942C14__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-3344,-2392),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C139S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3584,-2548),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C139S19942C14__8S19942C1[] = {
  0,
  ABISELECT(464,320),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C159S19942C14__8S19942C1[] = {
  ABISELECT(3424,2456),
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-2992,-2160),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  0,
  ABISELECT(-3232,-2316),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C159S19942C14__A1__8S19942C1[] = {
  0,
  ABISELECT(-3280,-2348),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__9S19942C159S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3232,-2316),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C159S19942C14__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-2992,-2160),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__9S19942C159S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3280,-2348),
  (VTBL_ENTRY)&(_ZTI9S19942C15[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__9S19942C14__8S19942C1[] = {
  0,
  ABISELECT(224,164),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C14__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__A1__9S19942C14__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-3584,-2548),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A2__9S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3824,-2704),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A3__9S19942C14__8S19942C1[] = {
  0,
  ABISELECT(-3872,-2736),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19942C13__9S19942C14__8S19942C1[] = {
  ABISELECT(-464,-320),
  ABISELECT(3584,2548),
  ABISELECT(3344,2392),
  ABISELECT(2928,2072),
  ABISELECT(3632,2580),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D1Ev,_ZThn156_N9S19942C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N9S19942C14D0Ev,_ZThn156_N9S19942C14D0Ev),
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
extern void _ZN9S19942C152v8Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C15__9S19942C14__8S19942C1[] = {
  ABISELECT(3424,2456),
  ABISELECT(3280,2348),
  ABISELECT(3232,2316),
  ABISELECT(2992,2160),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI9S19942C14[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
  (VTBL_ENTRY)&_ZN9S19942C152v8Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__8S19942C1[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__8S19942C4__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A1__8S19942C4__8S19942C1[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C1[] = {
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S19942C4[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN9S19942C13D1Ev();
extern void _ZN9S19942C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C13__A1__8S19942C1[] = {
  ABISELECT(-4256,-3012),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(-864,-620),
  ABISELECT(-160,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19942C13D0Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C68S19942C9__A1__9S19942C13__A1__8S19942C1[] = {
  0,
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
extern void _ZN8S19942C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C4__9S19942C13__A1__8S19942C1[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(864,620),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
  (VTBL_ENTRY)&_ZN8S19942C42v7Ev,
};
extern void _ZN8S19942C62v3Ev();
extern void _ZN8S19942C52v4Ev();
extern void _ZN8S19942C52v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C5__9S19942C13__A1__8S19942C1[] = {
  0,
  0,
  0,
  ABISELECT(448,300),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19942C52v5Ev,
};
extern void _ZN8S19942C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19942C6__A3__9S19942C13__A1__8S19942C1[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN8S19942C62v3Ev,
};
extern void _ZN9S19942C102v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19942C10__A1__9S19942C13__A1__8S19942C1[] = {
  0,
  ABISELECT(4256,3012),
  (VTBL_ENTRY)&(_ZTI9S19942C13[0]),
  (VTBL_ENTRY)&_ZN9S19942C102v6Ev,
};
static  VTT_ENTRY vtt_S19942C1[] = {
  {&(_ZTV8S19942C1[11]),  11,148},
  {&(_tg__ZTV9S19942C16__8S19942C1[9]),  9,16},
  {&(_tg__ZTV8S19942C39S19942C16__8S19942C1[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C39S19942C16__A2__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C39S19942C16__A2__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C16__A2__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C16__A2__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C39S19942C16__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C39S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__9S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C13__9S19942C16__8S19942C1[11]),  11,14},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C16__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C16__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C16__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C59S19942C13__A1__9S19942C16__8S19942C1[2]),  2,5},
  {&(_tg__ZTV9S19942C17__8S19942C1[7]),  7,11},
  {&(_tg__ZTV8S19942C49S19942C17__A3__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C49S19942C17__A3__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C49S19942C17__A3__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C17__A3__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C39S19942C17__A1__8S19942C1[6]),  6,13},
  {&(_tg__ZTV8S19942C48S19942C39S19942C17__A4__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C48S19942C39S19942C17__A4__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C48S19942C39S19942C17__A4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C48S19942C39S19942C17__A4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__8S19942C39S19942C17__A1__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C39S19942C17__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C39S19942C17__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__9S19942C17__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__9S19942C17__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__9S19942C17__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C3__9S19942C17__8S19942C1[6]),  6,13},
  {&(_tg__ZTV9S19942C10__A2__9S19942C17__8S19942C1[3]),  3,4},
  {&(_ZTV8S19942C1[49]),  49,148},
  {&(_ZTV8S19942C1[54]),  54,148},
  {&(_ZTV8S19942C1[71]),  71,148},
  {&(_ZTV8S19942C1[111]),  111,148},
  {&(_ZTV8S19942C1[118]),  118,148},
  {&(_ZTV8S19942C1[124]),  124,148},
  {&(_ZTV8S19942C1[128]),  128,148},
  {&(_ZTV8S19942C1[84]),  84,148},
  {&(_ZTV8S19942C1[89]),  89,148},
  {&(_ZTV8S19942C1[98]),  98,148},
  {&(_ZTV8S19942C1[103]),  103,148},
  {&(_ZTV8S19942C1[140]),  140,148},
  {&(_ZTV8S19942C1[145]),  145,148},
  {&(_ZTV8S19942C1[25]),  25,148},
  {&(_ZTV8S19942C1[38]),  38,148},
  {&(_tg__ZTV9S19942C14__8S19942C1[8]),  8,14},
  {&(_tg__ZTV9S19942C139S19942C14__8S19942C1[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C139S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C139S19942C14__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C139S19942C14__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C139S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C139S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C159S19942C14__8S19942C1[6]),  6,9},
  {&(_tg__ZTV8S19942C49S19942C159S19942C14__A1__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C49S19942C159S19942C14__A1__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C49S19942C159S19942C14__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C49S19942C159S19942C14__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C6__9S19942C159S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C5__9S19942C159S19942C14__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C68S19942C9__A2__9S19942C159S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__9S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C14__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__A1__9S19942C14__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A2__9S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A3__9S19942C14__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C13__9S19942C14__8S19942C1[7]),  7,10},
  {&(_tg__ZTV9S19942C15__9S19942C14__8S19942C1[6]),  6,9},
  {&(_tg__ZTV8S19942C4__8S19942C1[5]),  5,7},
  {&(_tg__ZTV8S19942C5__8S19942C4__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A1__8S19942C4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C68S19942C9__A2__8S19942C4__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C13__A1__8S19942C1[7]),  7,10},
  {&(_tg__ZTV8S19942C68S19942C9__A1__9S19942C13__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV8S19942C4__9S19942C13__A1__8S19942C1[7]),  7,9},
  {&(_tg__ZTV8S19942C5__9S19942C13__A1__8S19942C1[5]),  5,8},
  {&(_tg__ZTV8S19942C6__A3__9S19942C13__A1__8S19942C1[3]),  3,4},
  {&(_tg__ZTV9S19942C10__A1__9S19942C13__A1__8S19942C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19942C1[];
extern  VTBL_ENTRY _ZTV8S19942C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19942C1[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D0Ev,_ZTv0_n36_N9S19942C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N9S19942C16D0Ev,_ZThn37172_N9S19942C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19942C16D1Ev,_ZTv0_n36_N9S19942C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N9S19942C16D1Ev,_ZThn37172_N9S19942C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19942C1D0Ev,_ZTv0_n36_N8S19942C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N8S19942C1D0Ev,_ZThn37172_N8S19942C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19942C1D1Ev,_ZTv0_n36_N8S19942C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn52032_N8S19942C1D1Ev,_ZThn37172_N8S19942C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19942C1D0Ev,_ZTv0_n52_N8S19942C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48000_N8S19942C1D0Ev,_ZThn34324_N8S19942C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19942C1D1Ev,_ZTv0_n52_N8S19942C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48000_N8S19942C1D1Ev,_ZThn34324_N8S19942C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19942C1 = {  "S19942C1", // class name
  bases_S19942C1, 37,
  &(vtc_S19942C1[0]), // expected_vtbl_contents
  &(vtt_S19942C1[0]), // expected_vtt_contents
  ABISELECT(52384,37404), // object size
  NSPAIRA(_ZTI8S19942C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19942C1),148, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19942C1),82, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C4  {
  short s18575c4f0:6;
  long s18575c4f1;
  short s18575c4f2:4;
  __tsi64 s18575c4f3[6];
  long s18575c4f4[7];
  void *s18575c4f5;
  virtual void  v3(); // _ZN8S18575C42v3Ev
  ~S18575C4(); // tgen
  S18575C4(); // tgen
};
//SIG(-1 S18575C4) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S18575C4 ::v3(){vfunc_called(this, "_ZN8S18575C42v3Ev");}
S18575C4 ::~S18575C4(){ note_dtor("S18575C4", this);} // tgen
S18575C4 ::S18575C4(){ note_ctor("S18575C4", this);} // tgen

static void Test_S18575C4()
{
  extern Class_Descriptor cd_S18575C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S18575C4, buf);
    S18575C4 *dp, &lv = *(dp=new (buf) S18575C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S18575C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18575C4)");
    set_bf_and_test(lv, s18575c4f0, ABISELECT(8,4), 0, 6, 1, "S18575C4");
    set_bf_and_test(lv, s18575c4f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S18575C4");
    check_field_offset(lv, s18575c4f1, ABISELECT(16,8), "S18575C4.s18575c4f1");
    set_bf_and_test(lv, s18575c4f2, ABISELECT(24,12), 0, 4, 1, "S18575C4");
    set_bf_and_test(lv, s18575c4f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S18575C4");
    check_field_offset(lv, s18575c4f3, ABISELECT(32,16), "S18575C4.s18575c4f3");
    check_field_offset(lv, s18575c4f4, ABISELECT(80,64), "S18575C4.s18575c4f4");
    check_field_offset(lv, s18575c4f5, ABISELECT(136,92), "S18575C4.s18575c4f5");
    test_class_info(&lv, &cd_S18575C4);
    dp->~S18575C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C4(Test_S18575C4, "S18575C4", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S18575C4C1Ev();
extern void _ZN8S18575C4D1Ev();
Name_Map name_map_S18575C4[] = {
  NSPAIR(_ZN8S18575C4C1Ev),
  NSPAIR(_ZN8S18575C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C4[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C4[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
Class_Descriptor cd_S18575C4 = {  "S18575C4", // class name
  0,0,//no base classes
  &(vtc_S18575C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S18575C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C4),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  S18575C5  {
  int s18575c5f0[2];
  long s18575c5f1[2];
  ::S18575C4 s18575c5f2[3];
  virtual void  v4(); // _ZN8S18575C52v4Ev
  virtual void  v5(); // _ZN8S18575C52v5Ev
  virtual void  v6(); // _ZN8S18575C52v6Ev
  ~S18575C5(); // tgen
  S18575C5(); // tgen
};
//SIG(-1 S18575C5) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S18575C5 ::v4(){vfunc_called(this, "_ZN8S18575C52v4Ev");}
void  S18575C5 ::v5(){vfunc_called(this, "_ZN8S18575C52v5Ev");}
void  S18575C5 ::v6(){vfunc_called(this, "_ZN8S18575C52v6Ev");}
S18575C5 ::~S18575C5(){ note_dtor("S18575C5", this);} // tgen
S18575C5 ::S18575C5(){ note_ctor("S18575C5", this);} // tgen

static void Test_S18575C5()
{
  extern Class_Descriptor cd_S18575C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S18575C5, buf);
    S18575C5 *dp, &lv = *(dp=new (buf) S18575C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S18575C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18575C5)");
    check_field_offset(lv, s18575c5f0, ABISELECT(8,4), "S18575C5.s18575c5f0");
    check_field_offset(lv, s18575c5f1, ABISELECT(16,12), "S18575C5.s18575c5f1");
    check_field_offset(lv, s18575c5f2, ABISELECT(32,20), "S18575C5.s18575c5f2");
    test_class_info(&lv, &cd_S18575C5);
    dp->~S18575C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C5(Test_S18575C5, "S18575C5", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S18575C5C1Ev();
extern void _ZN8S18575C5D1Ev();
Name_Map name_map_S18575C5[] = {
  NSPAIR(_ZN8S18575C5C1Ev),
  NSPAIR(_ZN8S18575C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C5[];
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY vtc_S18575C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C5[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
Class_Descriptor cd_S18575C5 = {  "S18575C5", // class name
  0,0,//no base classes
  &(vtc_S18575C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S18575C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C5),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  S18575C6  : virtual S18575C4 {
  void *s18575c6f0;
  ::S18575C4 s18575c6f1;
  __tsi64 s18575c6f2:3;
  ~S18575C6(); // tgen
  S18575C6(); // tgen
};
//SIG(-1 S18575C6) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S18575C6 ::~S18575C6(){ note_dtor("S18575C6", this);} // tgen
S18575C6 ::S18575C6(){ note_ctor("S18575C6", this);} // tgen

static void Test_S18575C6()
{
  extern Class_Descriptor cd_S18575C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S18575C6, buf);
    S18575C6 *dp, &lv = *(dp=new (buf) S18575C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S18575C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18575C6)");
    check_base_class_offset(lv, (S18575C4*), ABISELECT(168,108), "S18575C6");
    check_field_offset(lv, s18575c6f0, ABISELECT(8,4), "S18575C6.s18575c6f0");
    check_field_offset(lv, s18575c6f1, ABISELECT(16,8), "S18575C6.s18575c6f1");
    set_bf_and_test(lv, s18575c6f2, ABISELECT(160,104), 0, 3, 1, "S18575C6");
    set_bf_and_test(lv, s18575c6f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S18575C6");
    test_class_info(&lv, &cd_S18575C6);
    dp->~S18575C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C6(Test_S18575C6, "S18575C6", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S18575C6C1Ev();
extern void _ZN8S18575C6D1Ev();
Name_Map name_map_S18575C6[] = {
  NSPAIR(_ZN8S18575C6C1Ev),
  NSPAIR(_ZN8S18575C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
static Base_Class bases_S18575C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(168,108), //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 _ZTI8S18575C6[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C6[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S18575C6[];
static  VTT_ENTRY vtt_S18575C6[] = {
  {&(_ZTV8S18575C6[3]),  3,7},
  {&(_ZTV8S18575C6[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
Class_Descriptor cd_S18575C6 = {  "S18575C6", // class name
  bases_S18575C6, 1,
  &(vtc_S18575C6[0]), // expected_vtbl_contents
  &(vtt_S18575C6[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S18575C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18575C6),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C6),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  S18575C7  {
  __tsi64 s18575c7f0;
  long double s18575c7f1;
  void *s18575c7f2;
  char s18575c7f3;
  ::S18575C4 s18575c7f4;
  void *s18575c7f5[2];
  long s18575c7f6[8];
  short s18575c7f7;
  void *s18575c7f8;
  __tsi64 s18575c7f9:64;
  virtual void  v7(); // _ZN8S18575C72v7Ev
  ~S18575C7(); // tgen
  S18575C7(); // tgen
};
//SIG(-1 S18575C7) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S18575C7 ::v7(){vfunc_called(this, "_ZN8S18575C72v7Ev");}
S18575C7 ::~S18575C7(){ note_dtor("S18575C7", this);} // tgen
S18575C7 ::S18575C7(){ note_ctor("S18575C7", this);} // tgen

static void Test_S18575C7()
{
  extern Class_Descriptor cd_S18575C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S18575C7, buf);
    S18575C7 *dp, &lv = *(dp=new (buf) S18575C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S18575C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C7)");
    check_field_offset(lv, s18575c7f0, ABISELECT(8,4), "S18575C7.s18575c7f0");
    check_field_offset(lv, s18575c7f1, ABISELECT(16,12), "S18575C7.s18575c7f1");
    check_field_offset(lv, s18575c7f2, ABISELECT(32,24), "S18575C7.s18575c7f2");
    check_field_offset(lv, s18575c7f3, ABISELECT(40,28), "S18575C7.s18575c7f3");
    check_field_offset(lv, s18575c7f4, ABISELECT(48,32), "S18575C7.s18575c7f4");
    check_field_offset(lv, s18575c7f5, ABISELECT(192,128), "S18575C7.s18575c7f5");
    check_field_offset(lv, s18575c7f6, ABISELECT(208,136), "S18575C7.s18575c7f6");
    check_field_offset(lv, s18575c7f7, ABISELECT(272,168), "S18575C7.s18575c7f7");
    check_field_offset(lv, s18575c7f8, ABISELECT(280,172), "S18575C7.s18575c7f8");
    set_bf_and_test(lv, s18575c7f9, ABISELECT(288,176), 0, 64, 1, "S18575C7");
    set_bf_and_test(lv, s18575c7f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S18575C7");
    test_class_info(&lv, &cd_S18575C7);
    dp->~S18575C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C7(Test_S18575C7, "S18575C7", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S18575C7C1Ev();
extern void _ZN8S18575C7D1Ev();
Name_Map name_map_S18575C7[] = {
  NSPAIR(_ZN8S18575C7C1Ev),
  NSPAIR(_ZN8S18575C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C7[];
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY vtc_S18575C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C7[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
Class_Descriptor cd_S18575C7 = {  "S18575C7", // class name
  0,0,//no base classes
  &(vtc_S18575C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S18575C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C7),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  S18575C3  : S18575C4 , virtual S18575C5 , virtual S18575C6 , virtual S18575C7 {
  ::S18575C7 s18575c3f0;
  short s18575c3f1;
  int s18575c3f2[2];
  ~S18575C3(); // tgen
  S18575C3(); // tgen
};
//SIG(-1 S18575C3) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S18575C3 ::~S18575C3(){ note_dtor("S18575C3", this);} // tgen
S18575C3 ::S18575C3(){ note_ctor("S18575C3", this);} // tgen

static void Test_S18575C3()
{
  extern Class_Descriptor cd_S18575C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S18575C3, buf);
    S18575C3 *dp, &lv = *(dp=new (buf) S18575C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S18575C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C3)");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), 0, "S18575C3");
    check_base_class_offset(lv, (S18575C5*), ABISELECT(464,292), "S18575C3");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(1096,708), "S18575C3");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(928,600), "S18575C3");
    check_base_class_offset(lv, (S18575C7*), ABISELECT(1248,804), "S18575C3");
    check_field_offset(lv, s18575c3f0, ABISELECT(144,96), "S18575C3.s18575c3f0");
    check_field_offset(lv, s18575c3f1, ABISELECT(448,280), "S18575C3.s18575c3f1");
    check_field_offset(lv, s18575c3f2, ABISELECT(452,284), "S18575C3.s18575c3f2");
    test_class_info(&lv, &cd_S18575C3);
    dp->~S18575C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C3(Test_S18575C3, "S18575C3", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN8S18575C3C1Ev();
extern void _ZN8S18575C3D1Ev();
Name_Map name_map_S18575C3[] = {
  NSPAIR(_ZN8S18575C3C1Ev),
  NSPAIR(_ZN8S18575C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
static Base_Class bases_S18575C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(464,292), //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_S18575C4,    ABISELECT(1096,708), //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_S18575C6,    ABISELECT(928,600), //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_S18575C7,    ABISELECT(1248,804), //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 _ZTI8S18575C3[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY vtc_S18575C3[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S18575C3[];
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__8S18575C3[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C3[] = {
  {&(_ZTV8S18575C3[6]),  6,26},
  {&(_ZTV8S18575C3[12]),  12,26},
  {&(_ZTV8S18575C3[18]),  18,26},
  {&(_ZTV8S18575C3[21]),  21,26},
  {&(_ZTV8S18575C3[25]),  25,26},
  {&(_tg__ZTV8S18575C6__8S18575C3[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__8S18575C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
Class_Descriptor cd_S18575C3 = {  "S18575C3", // class name
  bases_S18575C3, 5,
  &(vtc_S18575C3[0]), // expected_vtbl_contents
  &(vtt_S18575C3[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI8S18575C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18575C3),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C3),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  S18575C9  : S18575C7 , S18575C5 , S18575C4 {
  long s18575c9f0;
  __tsi64 s18575c9f1;
  void *s18575c9f2[8];
  ::S18575C3 s18575c9f3;
  void *s18575c9f4;
  int s18575c9f5;
  ::S18575C3 s18575c9f6;
  int s18575c9f7;
  virtual  ~S18575C9(); // _ZN8S18575C9D1Ev
  virtual void  v8(); // _ZN8S18575C92v8Ev
  S18575C9(); // tgen
};
//SIG(-1 S18575C9) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S18575C9 ::~S18575C9(){ note_dtor("S18575C9", this);}
void  S18575C9 ::v8(){vfunc_called(this, "_ZN8S18575C92v8Ev");}
S18575C9 ::S18575C9(){ note_ctor("S18575C9", this);} // tgen

static void Test_S18575C9()
{
  extern Class_Descriptor cd_S18575C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S18575C9, buf);
    S18575C9 *dp, &lv = *(dp=new (buf) S18575C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S18575C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C9)");
    check_base_class_offset(lv, (S18575C7*), 0, "S18575C9");
    check_base_class_offset(lv, (S18575C5*), ABISELECT(296,184), "S18575C9");
    check_base_class_offset(lv, (S18575C4*), ABISELECT(760,492), "S18575C9");
    check_field_offset(lv, s18575c9f0, ABISELECT(904,588), "S18575C9.s18575c9f0");
    check_field_offset(lv, s18575c9f1, ABISELECT(912,592), "S18575C9.s18575c9f1");
    check_field_offset(lv, s18575c9f2, ABISELECT(920,600), "S18575C9.s18575c9f2");
    check_field_offset(lv, s18575c9f3, ABISELECT(992,632), "S18575C9.s18575c9f3");
    check_field_offset(lv, s18575c9f4, ABISELECT(2544,1620), "S18575C9.s18575c9f4");
    check_field_offset(lv, s18575c9f5, ABISELECT(2552,1624), "S18575C9.s18575c9f5");
    check_field_offset(lv, s18575c9f6, ABISELECT(2560,1628), "S18575C9.s18575c9f6");
    check_field_offset(lv, s18575c9f7, ABISELECT(4112,2616), "S18575C9.s18575c9f7");
    test_class_info(&lv, &cd_S18575C9);
    dp->~S18575C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C9(Test_S18575C9, "S18575C9", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S18575C9C1Ev();
extern void _ZN8S18575C9D1Ev();
Name_Map name_map_S18575C9[] = {
  NSPAIR(_ZN8S18575C9C1Ev),
  NSPAIR(_ZN8S18575C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
static Base_Class bases_S18575C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //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_S18575C4,    ABISELECT(760,492), //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 _ZTI8S18575C9[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C9D1Ev();
extern void _ZN8S18575C9D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C9[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C9D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S18575C9[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S18575C9[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
Class_Descriptor cd_S18575C9 = {  "S18575C9", // class name
  bases_S18575C9, 3,
  &(vtc_S18575C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S18575C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S18575C9),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  S18575C12  : S18575C7 {
  ::S18575C6 s18575c12f0;
  int s18575c12f1;
  void *s18575c12f2;
  int s18575c12f3;
  virtual  ~S18575C12(); // _ZN9S18575C12D1Ev
  virtual void  v12(); // _ZN9S18575C123v12Ev
  S18575C12(); // tgen
};
//SIG(-1 S18575C12) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S18575C12 ::~S18575C12(){ note_dtor("S18575C12", this);}
void  S18575C12 ::v12(){vfunc_called(this, "_ZN9S18575C123v12Ev");}
S18575C12 ::S18575C12(){ note_ctor("S18575C12", this);} // tgen

static void Test_S18575C12()
{
  extern Class_Descriptor cd_S18575C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S18575C12, buf);
    S18575C12 *dp, &lv = *(dp=new (buf) S18575C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S18575C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C12)");
    check_base_class_offset(lv, (S18575C7*), 0, "S18575C12");
    check_field_offset(lv, s18575c12f0, ABISELECT(296,184), "S18575C12.s18575c12f0");
    check_field_offset(lv, s18575c12f1, ABISELECT(608,388), "S18575C12.s18575c12f1");
    check_field_offset(lv, s18575c12f2, ABISELECT(616,392), "S18575C12.s18575c12f2");
    check_field_offset(lv, s18575c12f3, ABISELECT(624,396), "S18575C12.s18575c12f3");
    test_class_info(&lv, &cd_S18575C12);
    dp->~S18575C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C12(Test_S18575C12, "S18575C12", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN9S18575C12C1Ev();
extern void _ZN9S18575C12D1Ev();
Name_Map name_map_S18575C12[] = {
  NSPAIR(_ZN9S18575C12C1Ev),
  NSPAIR(_ZN9S18575C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
static Base_Class bases_S18575C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C12[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN9S18575C12D1Ev();
extern void _ZN9S18575C12D0Ev();
extern void _ZN9S18575C123v12Ev();
static  VTBL_ENTRY vtc_S18575C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C12[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18575C12D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C12D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
};
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
Class_Descriptor cd_S18575C12 = {  "S18575C12", // class name
  bases_S18575C12, 1,
  &(vtc_S18575C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI9S18575C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S18575C12),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  S18575C11  : virtual S18575C7 , virtual S18575C9 , virtual S18575C4 , virtual S18575C6 {
  __tsi64 s18575c11f0:44;
  void *s18575c11f1;
  int s18575c11f2;
  ::S18575C3 s18575c11f3;
  long s18575c11f4[2];
  int s18575c11f5[3];
  ::S18575C9 s18575c11f6;
  char s18575c11f7:7;
  ::S18575C12 s18575c11f8;
  ~S18575C11(); // tgen
  S18575C11(); // tgen
};
//SIG(-1 S18575C11) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL: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}}


S18575C11 ::~S18575C11(){ note_dtor("S18575C11", this);} // tgen
S18575C11 ::S18575C11(){ note_ctor("S18575C11", this);} // tgen

static void Test_S18575C11()
{
  extern Class_Descriptor cd_S18575C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S18575C11, buf);
    S18575C11 *dp, &lv = *(dp=new (buf) S18575C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S18575C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C11)");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*), ABISELECT(6400,4052), "S18575C11");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(6704,4236), "S18575C11");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(7000,4420), "S18575C11");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(7464,4728), "S18575C11");
    check_base_class_offset(lv, (S18575C9*), ABISELECT(6704,4236), "S18575C11");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(10824,6856), "S18575C11");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(10824,6856), "S18575C11");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(10968,6952), "S18575C11");
    set_bf_and_test(lv, s18575c11f0, ABISELECT(8,4), 0, 44, 1, "S18575C11");
    set_bf_and_test(lv, s18575c11f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S18575C11");
    check_field_offset(lv, s18575c11f1, ABISELECT(16,12), "S18575C11.s18575c11f1");
    check_field_offset(lv, s18575c11f2, ABISELECT(24,16), "S18575C11.s18575c11f2");
    check_field_offset(lv, s18575c11f3, ABISELECT(32,20), "S18575C11.s18575c11f3");
    check_field_offset(lv, s18575c11f4, ABISELECT(1584,1008), "S18575C11.s18575c11f4");
    check_field_offset(lv, s18575c11f5, ABISELECT(1600,1016), "S18575C11.s18575c11f5");
    check_field_offset(lv, s18575c11f6, ABISELECT(1616,1028), "S18575C11.s18575c11f6");
    set_bf_and_test(lv, s18575c11f7, ABISELECT(5744,3648), 0, 7, 1, "S18575C11");
    set_bf_and_test(lv, s18575c11f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S18575C11");
    check_field_offset(lv, s18575c11f8, ABISELECT(5760,3652), "S18575C11.s18575c11f8");
    test_class_info(&lv, &cd_S18575C11);
    dp->~S18575C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C11(Test_S18575C11, "S18575C11", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S18575C11C1Ev();
extern void _ZN9S18575C11D1Ev();
Name_Map name_map_S18575C11[] = {
  NSPAIR(_ZN9S18575C11C1Ev),
  NSPAIR(_ZN9S18575C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
static Base_Class bases_S18575C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    ABISELECT(6400,4052), //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_S18575C7,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S18575C5,    ABISELECT(7000,4420), //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_S18575C4,    ABISELECT(7464,4728), //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_S18575C9,    ABISELECT(6704,4236), //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_S18575C4,    ABISELECT(10824,6856), //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_S18575C6,    ABISELECT(10968,6952), //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 _ZTI9S18575C11[];
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S18575C11D1Ev,_ZThn4236_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S18575C11D0Ev,_ZThn4236_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C11[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern VTBL_ENTRY _ZTV9S18575C11[];
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C11[] = {
  {&(_ZTV9S18575C11[6]),  6,40},
  {&(_ZTV9S18575C11[11]),  11,40},
  {&(_ZTV9S18575C11[21]),  21,40},
  {&(_ZTV9S18575C11[27]),  27,40},
  {&(_ZTV9S18575C11[32]),  32,40},
  {&(_ZTV9S18575C11[36]),  36,40},
  {&(_ZTV9S18575C11[40]),  40,40},
  {&(_tg__ZTV8S18575C6__9S18575C11[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S18575C11D0Ev,_ZThn4236_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S18575C11D1Ev,_ZThn4236_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C11 = {  "S18575C11", // class name
  bases_S18575C11, 7,
  &(vtc_S18575C11[0]), // expected_vtbl_contents
  &(vtt_S18575C11[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S18575C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S18575C11),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C11),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C10  : virtual S18575C9 , virtual S18575C4 , virtual S18575C6 , S18575C3 , S18575C11 {
  ::S18575C9 s18575c10f0;
  __tsi64 s18575c10f1;
  char s18575c10f2:7;
  virtual void  v9(); // _ZN9S18575C102v9Ev
  ~S18575C10(); // tgen
  S18575C10(); // tgen
};
//SIG(-1 S18575C10) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL: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  S18575C10 ::v9(){vfunc_called(this, "_ZN9S18575C102v9Ev");}
S18575C10 ::~S18575C10(){ note_dtor("S18575C10", this);} // tgen
S18575C10 ::S18575C10(){ note_ctor("S18575C10", this);} // tgen

static void Test_S18575C10()
{
  extern Class_Descriptor cd_S18575C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S18575C10, buf);
    S18575C10 *dp, &lv = *(dp=new (buf) S18575C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S18575C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C10)");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(11008,6976), "S18575C10");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(11304,7160), "S18575C10");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(11768,7468), "S18575C10");
    check_base_class_offset(lv, (S18575C9*), ABISELECT(11008,6976), "S18575C10");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*), ABISELECT(11008,6976), "S18575C10");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(15128,9596), "S18575C10");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(15128,9596), "S18575C10");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*), ABISELECT(15128,9596), "S18575C10");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(15272,9692), "S18575C10");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(15272,9692), "S18575C10");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*), ABISELECT(15272,9692), "S18575C10");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), 0, "S18575C10");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(15440,9800), "S18575C10");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(15904,10108), "S18575C10");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*), ABISELECT(15904,10108), "S18575C10");
    check_base_class_offset(lv, (S18575C3*), 0, "S18575C10");
    check_base_class_offset(lv, (S18575C11*), ABISELECT(464,292), "S18575C10");
    check_field_offset(lv, s18575c10f0, ABISELECT(6864,4344), "S18575C10.s18575c10f0");
    check_field_offset(lv, s18575c10f1, ABISELECT(10992,6964), "S18575C10.s18575c10f1");
    set_bf_and_test(lv, s18575c10f2, ABISELECT(11000,6972), 0, 7, 1, "S18575C10");
    set_bf_and_test(lv, s18575c10f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S18575C10");
    test_class_info(&lv, &cd_S18575C10);
    dp->~S18575C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C10(Test_S18575C10, "S18575C10", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN9S18575C10C1Ev();
extern void _ZN9S18575C10D1Ev();
Name_Map name_map_S18575C10[] = {
  NSPAIR(_ZN9S18575C10C1Ev),
  NSPAIR(_ZN9S18575C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
static Base_Class bases_S18575C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S18575C5,    ABISELECT(11304,7160), //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_S18575C4,    ABISELECT(11768,7468), //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_S18575C9,    ABISELECT(11008,6976), //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_S18575C4,    ABISELECT(15128,9596), //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_S18575C6,    ABISELECT(15272,9692), //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_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(15440,9800), //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_S18575C7,    ABISELECT(15904,10108), //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_S18575C3,    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_S18575C11,    ABISELECT(464,292), //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 _ZTI9S18575C10[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY vtc_S18575C10[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern VTBL_ENTRY _ZTV9S18575C10[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C10[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C10[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C10[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C10[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C11__9S18575C10[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C11__9S18575C10[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C10[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C10[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C11__9S18575C10[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C11__9S18575C10[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C10[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C10[] = {
  {&(_ZTV9S18575C10[7]),  7,59},
  {&(_tg__ZTV8S18575C3__9S18575C10[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C10[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C10[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C10[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C10[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C11__9S18575C10[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C11__9S18575C10[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C10[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C10[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C11__9S18575C10[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C11__9S18575C10[3]),  3,3},
  {&(_ZTV9S18575C10[28]),  28,59},
  {&(_ZTV9S18575C10[34]),  34,59},
  {&(_ZTV9S18575C10[39]),  39,59},
  {&(_ZTV9S18575C10[43]),  43,59},
  {&(_ZTV9S18575C10[47]),  47,59},
  {&(_ZTV9S18575C10[52]),  52,59},
  {&(_ZTV9S18575C10[58]),  58,59},
  {&(_ZTV9S18575C10[17]),  17,59},
  {&(_tg__ZTV8S18575C6__9S18575C10[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C10 = {  "S18575C10", // class name
  bases_S18575C10, 11,
  &(vtc_S18575C10[0]), // expected_vtbl_contents
  &(vtt_S18575C10[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI9S18575C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18575C10),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C10),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C8  : virtual S18575C4 , virtual S18575C3 , S18575C9 , S18575C10 {
  ::S18575C11 s18575c8f0;
  short s18575c8f1;
  __tsi64 s18575c8f2:8;
  virtual void  v10(); // _ZN8S18575C83v10Ev
  virtual void  v11(); // _ZN8S18575C83v11Ev
  ~S18575C8(); // tgen
  S18575C8(); // tgen
};
//SIG(-1 S18575C8) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL: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 FL 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 FL:8}


void  S18575C8 ::v10(){vfunc_called(this, "_ZN8S18575C83v10Ev");}
void  S18575C8 ::v11(){vfunc_called(this, "_ZN8S18575C83v11Ev");}
S18575C8 ::~S18575C8(){ note_dtor("S18575C8", this);} // tgen
S18575C8 ::S18575C8(){ note_ctor("S18575C8", this);} // tgen

static void Test_S18575C8()
{
  extern Class_Descriptor cd_S18575C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S18575C8, buf);
    S18575C8 *dp, &lv = *(dp=new (buf) S18575C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S18575C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C8)");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(26280,16660), "S18575C8");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(26280,16660), "S18575C8");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(26280,16660), "S18575C8");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(26280,16660), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(26432,16756), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(26896,17048), "S18575C8");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(26896,17048), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(27360,17356), "S18575C8");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(27360,17356), "S18575C8");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(27360,17356), "S18575C8");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(27360,17356), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(27536,17464), "S18575C8");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(27536,17464), "S18575C8");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(27536,17464), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*), ABISELECT(26432,16756), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), 0, "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(296,184), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(760,492), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*), 0, "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(27840,17648), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(28136,17832), "S18575C8");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(28600,18140), "S18575C8");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(27840,17648), "S18575C8");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(27840,17648), "S18575C8");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(4128,2620), "S18575C8");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(4128,2620), "S18575C8");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(4592,2912), "S18575C8");
    check_base_class_offset(lv, (S18575C10*), ABISELECT(4128,2620), "S18575C8");
    check_field_offset(lv, s18575c8f0, ABISELECT(15136,9596), "S18575C8.s18575c8f0");
    check_field_offset(lv, s18575c8f1, ABISELECT(26272,16656), "S18575C8.s18575c8f1");
    set_bf_and_test(lv, s18575c8f2, ABISELECT(26274,16658), 0, 8, 1, "S18575C8");
    set_bf_and_test(lv, s18575c8f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S18575C8");
    test_class_info(&lv, &cd_S18575C8);
    dp->~S18575C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C8(Test_S18575C8, "S18575C8", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN8S18575C8C1Ev();
extern void _ZN8S18575C8D1Ev();
Name_Map name_map_S18575C8[] = {
  NSPAIR(_ZN8S18575C8C1Ev),
  NSPAIR(_ZN8S18575C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
static Base_Class bases_S18575C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(26280,16660), //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_S18575C4,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(26896,17048), //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_S18575C6,    ABISELECT(27360,17356), //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_S18575C7,    ABISELECT(27536,17464), //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_S18575C3,    ABISELECT(26432,16756), //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_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(296,184), //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_S18575C4,    ABISELECT(760,492), //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_S18575C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C7,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(28136,17832), //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_S18575C4,    ABISELECT(28600,18140), //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_S18575C9,    ABISELECT(27840,17648), //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_S18575C4,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C3,    ABISELECT(4128,2620), //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_S18575C11,    ABISELECT(4592,2912), //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_S18575C10,    ABISELECT(4128,2620), //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 _ZTI8S18575C8[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C8[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV8S18575C8[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__A1__8S18575C8[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__A1__8S18575C8[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__A1__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A1__8S18575C8[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__A1__8S18575C8[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__8S18575C8[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__8S18575C8[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__8S18575C8[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__8S18575C8[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__8S18575C8[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__8S18575C8[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__8S18575C8[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__8S18575C8[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__8S18575C8[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__8S18575C8[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__8S18575C8[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C8[] = {
  {&(_ZTV8S18575C8[8]),  8,89},
  {&(_tg__ZTV9S18575C10__8S18575C8[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__A1__8S18575C8[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__A1__8S18575C8[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__A1__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A1__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__A1__8S18575C8[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__8S18575C8[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__8S18575C8[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__8S18575C8[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__8S18575C8[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__8S18575C8[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__8S18575C8[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__8S18575C8[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__8S18575C8[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__8S18575C8[6]),  6,8},
  {&(_ZTV8S18575C8[44]),  44,89},
  {&(_ZTV8S18575C8[52]),  52,89},
  {&(_ZTV8S18575C8[58]),  58,89},
  {&(_ZTV8S18575C8[64]),  64,89},
  {&(_ZTV8S18575C8[67]),  67,89},
  {&(_ZTV8S18575C8[29]),  29,89},
  {&(_ZTV8S18575C8[77]),  77,89},
  {&(_ZTV8S18575C8[83]),  83,89},
  {&(_ZTV8S18575C8[88]),  88,89},
  {&(_ZTV8S18575C8[39]),  39,89},
  {&(_tg__ZTV8S18575C3__8S18575C8[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__8S18575C8[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__8S18575C8[3]),  3,4},
  {&(_tg__ZTV8S18575C6__8S18575C8[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__8S18575C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C8 = {  "S18575C8", // class name
  bases_S18575C8, 18,
  &(vtc_S18575C8[0]), // expected_vtbl_contents
  &(vtt_S18575C8[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI8S18575C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18575C8),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C8),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C14  : virtual S18575C6 {
  ::S18575C11 s18575c14f0;
  __tsi64 s18575c14f1:6;
  int s18575c14f2;
  long s18575c14f3;
  ~S18575C14(); // tgen
  S18575C14(); // tgen
};
//SIG(-1 S18575C14) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} FL:6 Fi Fl}


S18575C14 ::~S18575C14(){ note_dtor("S18575C14", this);} // tgen
S18575C14 ::S18575C14(){ note_ctor("S18575C14", this);} // tgen

static void Test_S18575C14()
{
  extern Class_Descriptor cd_S18575C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,1821)];
    init_test(&cd_S18575C14, buf);
    S18575C14 *dp, &lv = *(dp=new (buf) S18575C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,7280), "sizeof(S18575C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C14)");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(11336,7184), "S18575C14");
    check_base_class_offset(lv, (S18575C6*), ABISELECT(11168,7076), "S18575C14");
    check_field_offset(lv, s18575c14f0, ABISELECT(16,4), "S18575C14.s18575c14f0");
    set_bf_and_test(lv, s18575c14f1, ABISELECT(11152,7064), 0, 6, 1, "S18575C14");
    set_bf_and_test(lv, s18575c14f1, ABISELECT(11152,7064), 0, 6, hide_sll(1LL<<5), "S18575C14");
    check_field_offset(lv, s18575c14f2, ABISELECT(11156,7068), "S18575C14.s18575c14f2");
    check_field_offset(lv, s18575c14f3, ABISELECT(11160,7072), "S18575C14.s18575c14f3");
    test_class_info(&lv, &cd_S18575C14);
    dp->~S18575C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C14(Test_S18575C14, "S18575C14", ABISELECT(11488,7280));

#else // __cplusplus

extern void _ZN9S18575C14C1Ev();
extern void _ZN9S18575C14D1Ev();
Name_Map name_map_S18575C14[] = {
  NSPAIR(_ZN9S18575C14C1Ev),
  NSPAIR(_ZN9S18575C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
static Base_Class bases_S18575C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(11336,7184), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(11168,7076), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C14[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C14[] = {
  ABISELECT(11336,7184),
  ABISELECT(11168,7076),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  ABISELECT(168,108),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  0,
  ABISELECT(-11336,-7184),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18575C14[];
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C14[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C14[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C14[] = {
  {&(_ZTV9S18575C14[4]),  4,11},
  {&(_ZTV9S18575C14[7]),  7,11},
  {&(_ZTV9S18575C14[10]),  10,11},
  {&(_tg__ZTV8S18575C6__9S18575C14[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C14[];
extern  VTBL_ENTRY _ZTV9S18575C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C14[];
Class_Descriptor cd_S18575C14 = {  "S18575C14", // class name
  bases_S18575C14, 2,
  &(vtc_S18575C14[0]), // expected_vtbl_contents
  &(vtt_S18575C14[0]), // expected_vtt_contents
  ABISELECT(11488,7280), // object size
  NSPAIRA(_ZTI9S18575C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S18575C14),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C14),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C15  : virtual S18575C7 , S18575C5 , virtual S18575C10 {
  char s18575c15f0:8;
  int s18575c15f1;
  ~S18575C15(); // tgen
  S18575C15(); // tgen
};
//SIG(-1 S18575C15) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL: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}


S18575C15 ::~S18575C15(){ note_dtor("S18575C15", this);} // tgen
S18575C15 ::S18575C15(){ note_ctor("S18575C15", this);} // tgen

static void Test_S18575C15()
{
  extern Class_Descriptor cd_S18575C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S18575C15, buf);
    S18575C15 *dp, &lv = *(dp=new (buf) S18575C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S18575C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C15)");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*), ABISELECT(480,316), "S18575C15");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(480,316), "S18575C15");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(480,316), "S18575C15");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*), 0, "S18575C15");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(11792,7476), "S18575C15");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(12088,7660), "S18575C15");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(12552,7968), "S18575C15");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(11792,7476), "S18575C15");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(11792,7476), "S18575C15");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(15912,10096), "S18575C15");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(15912,10096), "S18575C15");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(15912,10096), "S18575C15");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(16056,10192), "S18575C15");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(16056,10192), "S18575C15");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(16056,10192), "S18575C15");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(784,500), "S18575C15");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(16224,10300), "S18575C15");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(784,500), "S18575C15");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(1248,792), "S18575C15");
    check_base_class_offset(lv, (S18575C10*), ABISELECT(784,500), "S18575C15");
    set_bf_and_test(lv, s18575c15f0, ABISELECT(464,308), 0, 8, 1, "S18575C15");
    set_bf_and_test(lv, s18575c15f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S18575C15");
    check_field_offset(lv, s18575c15f1, ABISELECT(468,312), "S18575C15.s18575c15f1");
    test_class_info(&lv, &cd_S18575C15);
    dp->~S18575C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C15(Test_S18575C15, "S18575C15", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN9S18575C15C1Ev();
extern void _ZN9S18575C15D1Ev();
Name_Map name_map_S18575C15[] = {
  NSPAIR(_ZN9S18575C15C1Ev),
  NSPAIR(_ZN9S18575C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
static Base_Class bases_S18575C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C7,    ABISELECT(480,316), //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_S18575C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C7,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S18575C5,    ABISELECT(12088,7660), //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_S18575C4,    ABISELECT(12552,7968), //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_S18575C9,    ABISELECT(11792,7476), //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_S18575C4,    ABISELECT(15912,10096), //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_S18575C6,    ABISELECT(16056,10192), //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_S18575C4,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(16224,10300), //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_S18575C3,    ABISELECT(784,500), //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_S18575C11,    ABISELECT(1248,792), //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_S18575C10,    ABISELECT(784,500), //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 _ZTI9S18575C15[];
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn784_N9S18575C15D1Ev,_ZThn500_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn784_N9S18575C15D0Ev,_ZThn500_N9S18575C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn11792_N9S18575C15D1Ev,_ZThn7476_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn11792_N9S18575C15D0Ev,_ZThn7476_N9S18575C15D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY vtc_S18575C15[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S18575C15[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__9S18575C15[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C15[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C15[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__9S18575C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C15[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C15[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__9S18575C15[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__9S18575C15[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__9S18575C15[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__9S18575C15[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__9S18575C15[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C15[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C15[] = {
  {&(_ZTV9S18575C15[8]),  8,75},
  {&(_ZTV9S18575C15[16]),  16,75},
  {&(_ZTV9S18575C15[27]),  27,75},
  {&(_ZTV9S18575C15[48]),  48,75},
  {&(_ZTV9S18575C15[54]),  54,75},
  {&(_ZTV9S18575C15[59]),  59,75},
  {&(_ZTV9S18575C15[63]),  63,75},
  {&(_ZTV9S18575C15[67]),  67,75},
  {&(_ZTV9S18575C15[72]),  72,75},
  {&(_ZTV9S18575C15[37]),  37,75},
  {&(_tg__ZTV9S18575C10__9S18575C15[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__9S18575C15[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C15[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C15[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C15[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C15[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__9S18575C15[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C15[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C15[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__9S18575C15[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__9S18575C15[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__9S18575C15[6]),  6,8},
  {&(_tg__ZTV8S18575C6__9S18575C15[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S18575C15D0Ev,_ZThn7476_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S18575C15D1Ev,_ZThn7476_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S18575C15D0Ev,_ZThn500_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S18575C15D1Ev,_ZThn500_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C15 = {  "S18575C15", // class name
  bases_S18575C15, 13,
  &(vtc_S18575C15[0]), // expected_vtbl_contents
  &(vtt_S18575C15[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI9S18575C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S18575C15),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C15),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C16  : S18575C4 , virtual S18575C7 , virtual S18575C15 , S18575C3 , S18575C12 {
  int s18575c16f0;
  ::S18575C3 s18575c16f1;
  int s18575c16f2;
  short s18575c16f3;
  __tsi64 s18575c16f4:8;
  int s18575c16f5;
  virtual  ~S18575C16(); // _ZN9S18575C16D2Ev
  virtual void  v13(); // _ZN9S18575C163v13Ev
  S18575C16(); // tgen
};
//SIG(-1 S18575C16) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL: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}


 S18575C16 ::~S18575C16(){ note_dtor("S18575C16", this);}
void  S18575C16 ::v13(){vfunc_called(this, "_ZN9S18575C163v13Ev");}
S18575C16 ::S18575C16(){ note_ctor("S18575C16", this);} // tgen

static void Test_S18575C16()
{
  extern Class_Descriptor cd_S18575C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S18575C16, buf);
    S18575C16 *dp, &lv = *(dp=new (buf) S18575C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S18575C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C16)");
    /*is_ambiguous_... S18575C16::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), 0, "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C15*), ABISELECT(2816,1792), "S18575C16");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(2816,1792), "S18575C16");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C15*), ABISELECT(3112,1976), "S18575C16");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(14592,9268), "S18575C16");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(14888,9452), "S18575C16");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(15352,9760), "S18575C16");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(14592,9268), "S18575C16");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(14592,9268), "S18575C16");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(18712,11888), "S18575C16");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(18712,11888), "S18575C16");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(18712,11888), "S18575C16");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(18856,11984), "S18575C16");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(18856,11984), "S18575C16");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(18856,11984), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(18856,11984), "S18575C16");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(3584,2292), "S18575C16");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(19024,12092), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(19024,12092), "S18575C16");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(3584,2292), "S18575C16");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(4048,2584), "S18575C16");
    check_base_class_offset(lv, (S18575C10*)(S18575C15*), ABISELECT(3584,2292), "S18575C16");
    check_base_class_offset(lv, (S18575C15*), ABISELECT(3112,1976), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(144,96), "S18575C16");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*), ABISELECT(144,96), "S18575C16");
    check_base_class_offset(lv, (S18575C7*)(S18575C12*), ABISELECT(608,388), "S18575C16");
    check_base_class_offset(lv, (S18575C12*), ABISELECT(608,388), "S18575C16");
    check_field_offset(lv, s18575c16f0, ABISELECT(1236,788), "S18575C16.s18575c16f0");
    check_field_offset(lv, s18575c16f1, ABISELECT(1248,792), "S18575C16.s18575c16f1");
    check_field_offset(lv, s18575c16f2, ABISELECT(2800,1780), "S18575C16.s18575c16f2");
    check_field_offset(lv, s18575c16f3, ABISELECT(2804,1784), "S18575C16.s18575c16f3");
    set_bf_and_test(lv, s18575c16f4, ABISELECT(2806,1786), 0, 8, 1, "S18575C16");
    set_bf_and_test(lv, s18575c16f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S18575C16");
    check_field_offset(lv, s18575c16f5, ABISELECT(2808,1788), "S18575C16.s18575c16f5");
    test_class_info(&lv, &cd_S18575C16);
    dp->~S18575C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C16(Test_S18575C16, "S18575C16", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN9S18575C16C1Ev();
extern void _ZN9S18575C16D2Ev();
Name_Map name_map_S18575C16[] = {
  NSPAIR(_ZN9S18575C16C1Ev),
  NSPAIR(_ZN9S18575C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C15;
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C12;
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
static Base_Class bases_S18575C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C7,    ABISELECT(2816,1792), //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_S18575C5,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C7,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S18575C5,    ABISELECT(14888,9452), //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_S18575C4,    ABISELECT(15352,9760), //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_S18575C9,    ABISELECT(14592,9268), //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_S18575C4,    ABISELECT(18712,11888), //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_S18575C6,    ABISELECT(18856,11984), //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_S18575C4,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(19024,12092), //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_S18575C3,    ABISELECT(3584,2292), //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_S18575C11,    ABISELECT(4048,2584), //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_S18575C10,    ABISELECT(3584,2292), //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_S18575C15,    ABISELECT(3112,1976), //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_S18575C4,    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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(144,96), //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_S18575C7,    ABISELECT(608,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C12,    ABISELECT(608,388), //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 _ZTI9S18575C16[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C16D1Ev();
extern void _ZN9S18575C16D0Ev();
extern void _ZN9S18575C163v13Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZThn608_N9S18575C16D1Ev,_ZThn388_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn608_N9S18575C16D0Ev,_ZThn388_N9S18575C16D0Ev)();
extern void _ZN9S18575C123v12Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn3112_N9S18575C16D1Ev,_ZThn1976_N9S18575C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev)();
extern void ABISELECT(_ZThn3112_N9S18575C16D0Ev,_ZThn1976_N9S18575C16D0Ev)() __attribute__((weak));
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn3584_N9S18575C16D1Ev,_ZThn2292_N9S18575C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev)();
extern void ABISELECT(_ZThn3584_N9S18575C16D0Ev,_ZThn2292_N9S18575C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev)();
extern void ABISELECT(_ZThn14592_N9S18575C16D1Ev,_ZThn9268_N9S18575C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev)();
extern void ABISELECT(_ZThn14592_N9S18575C16D0Ev,_ZThn9268_N9S18575C16D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY vtc_S18575C16[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S18575C16D1Ev,_ZThn388_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S18575C16D0Ev,_ZThn388_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern VTBL_ENTRY _ZTV9S18575C16[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__A1__9S18575C16[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__A1__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__A1__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__A1__9S18575C16[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__A1__9S18575C16[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C16[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C15__9S18575C16[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15__9S18575C16[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn11480_N9S18575C15D1Ev,_ZThn7292_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn11480_N9S18575C15D0Ev,_ZThn7292_N9S18575C15D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C15__9S18575C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C16[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C16[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C15__9S18575C16[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C15__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C16[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__9S18575C16[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C16[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C16[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__9S18575C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C16[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C16[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__9S18575C16[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__9S18575C16[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__9S18575C16[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__9S18575C16[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__9S18575C16[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C16[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C16[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C16[] = {
  {&(_ZTV9S18575C16[9]),  9,105},
  {&(_tg__ZTV8S18575C3__A1__9S18575C16[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__A1__9S18575C16[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__A1__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__A1__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__A1__9S18575C16[3]),  3,4},
  {&(_ZTV9S18575C16[29]),  29,105},
  {&(_ZTV9S18575C16[42]),  42,105},
  {&(_ZTV9S18575C16[57]),  57,105},
  {&(_ZTV9S18575C16[78]),  78,105},
  {&(_ZTV9S18575C16[84]),  84,105},
  {&(_ZTV9S18575C16[89]),  89,105},
  {&(_ZTV9S18575C16[93]),  93,105},
  {&(_ZTV9S18575C16[97]),  97,105},
  {&(_ZTV9S18575C16[102]),  102,105},
  {&(_ZTV9S18575C16[67]),  67,105},
  {&(_ZTV9S18575C16[19]),  19,105},
  {&(_tg__ZTV9S18575C15__9S18575C16[8]),  8,13},
  {&(_tg__ZTV8S18575C7__9S18575C15__9S18575C16[3]),  3,4},
  {&(_tg__ZTV9S18575C10__9S18575C15__9S18575C16[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C15__9S18575C16[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C16[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C16[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C15__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C15__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C15__9S18575C16[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C16[6]),  6,8},
  {&(_tg__ZTV9S18575C10__9S18575C16[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__9S18575C16[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__9S18575C16[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C16[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__9S18575C16[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__9S18575C16[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__9S18575C16[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__9S18575C16[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__9S18575C16[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__9S18575C16[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__9S18575C16[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__9S18575C16[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__9S18575C16[6]),  6,8},
  {&(_tg__ZTV8S18575C6__9S18575C16[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C16[];
extern  VTBL_ENTRY _ZTV9S18575C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C16[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D0Ev,_ZThn6976_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N9S18575C10D1Ev,_ZThn6976_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D0Ev,_ZThn6684_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S18575C11D1Ev,_ZThn6684_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S18575C15D0Ev,_ZThn7292_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S18575C15D1Ev,_ZThn7292_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S18575C16D0Ev,_ZThn9268_N9S18575C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S18575C16D1Ev,_ZThn9268_N9S18575C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S18575C16D0Ev,_ZThn2292_N9S18575C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S18575C16D1Ev,_ZThn2292_N9S18575C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S18575C16D0Ev,_ZThn1976_N9S18575C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S18575C16D1Ev,_ZThn1976_N9S18575C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C16 = {  "S18575C16", // class name
  bases_S18575C16, 19,
  &(vtc_S18575C16[0]), // expected_vtbl_contents
  &(vtt_S18575C16[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI9S18575C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18575C16),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C16),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C13  : virtual S18575C5 , S18575C8 , S18575C14 , virtual S18575C15 , virtual S18575C16 {
  ::S18575C15 s18575c13f0;
  ::S18575C8 s18575c13f1;
  virtual void  v14(); // _ZN9S18575C133v14Ev
  ~S18575C13(); // tgen
  S18575C13(); // tgen
};
//SIG(-1 S18575C13) C1{ VBC2{ v2 v3 v4 Fi[2] Fl[2] FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} BC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v6 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v7 Fl FL Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v11 FC6 Fi Fp Fi}} v8 FC8 FL Fc:7} v9 v10 FC10 Fs FL:8} BC12{ VBC6 FC10 FL:6 Fi Fl} VBC13{ VBC7 BC2 VBC9 Fc:8 Fi} VBC14{ BC3 VBC7 VBC13 BC5 BC11 vd v12 Fi FC5 Fi Fs FL:8 Fi} v1 FC13 FC4}


void  S18575C13 ::v14(){vfunc_called(this, "_ZN9S18575C133v14Ev");}
S18575C13 ::~S18575C13(){ note_dtor("S18575C13", this);} // tgen
S18575C13 ::S18575C13(){ note_ctor("S18575C13", this);} // tgen

static void Test_S18575C13()
{
  extern Class_Descriptor cd_S18575C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6631,16827)];
    init_test(&cd_S18575C13, buf);
    S18575C13 *dp, &lv = *(dp=new (buf) S18575C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(106080,67304), "sizeof(S18575C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C13)");
    /*is_ambiguous_... S18575C13::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(86112,54612), "S18575C13");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C16*), ABISELECT(86112,54612), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*), ABISELECT(86576,54920), "S18575C13");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(86576,54920), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(86720,55016), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(87184,55308), "S18575C13");
    check_base_class_offset(lv, (S18575C6*)(S18575C14*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C16*), ABISELECT(87184,55308), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(87360,55416), "S18575C13");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C15*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C16*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C16*), ABISELECT(87360,55416), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*), ABISELECT(86720,55016), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*), 0, "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*), ABISELECT(296,184), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*), ABISELECT(760,492), "S18575C13");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*), 0, "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(87960,55784), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(88424,56092), "S18575C13");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*), ABISELECT(87664,55600), "S18575C13");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(87664,55600), "S18575C13");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C13");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C13");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(4592,2912), "S18575C13");
    check_base_class_offset(lv, (S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C13");
    check_base_class_offset(lv, (S18575C8*), 0, "S18575C13");
    check_base_class_offset(lv, (S18575C14*), ABISELECT(26288,16660), "S18575C13");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C15*), ABISELECT(91784,58220), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(92256,58536), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(92256,58536), "S18575C13");
    /*is_ambiguous_... S18575C13::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(92720,58828), "S18575C13");
    check_base_class_offset(lv, (S18575C10*)(S18575C15*), ABISELECT(92256,58536), "S18575C13");
    check_base_class_offset(lv, (S18575C15*), ABISELECT(91784,58220), "S18575C13");
    check_base_class_offset(lv, (S18575C15*)(S18575C16*), ABISELECT(91784,58220), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C16*), ABISELECT(103264,65512), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C16*), ABISELECT(103408,65608), "S18575C13");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C16*), ABISELECT(103408,65608), "S18575C13");
    check_base_class_offset(lv, (S18575C7*)(S18575C12*)(S18575C16*), ABISELECT(103872,65900), "S18575C13");
    check_base_class_offset(lv, (S18575C12*)(S18575C16*), ABISELECT(103872,65900), "S18575C13");
    check_base_class_offset(lv, (S18575C16*), ABISELECT(103264,65512), "S18575C13");
    check_field_offset(lv, s18575c13f0, ABISELECT(37456,23736), "S18575C13.s18575c13f0");
    check_field_offset(lv, s18575c13f1, ABISELECT(54144,34344), "S18575C13.s18575c13f1");
    test_class_info(&lv, &cd_S18575C13);
    dp->~S18575C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C13(Test_S18575C13, "S18575C13", ABISELECT(106080,67304));

#else // __cplusplus

extern void _ZN9S18575C13C1Ev();
extern void _ZN9S18575C13D1Ev();
Name_Map name_map_S18575C13[] = {
  NSPAIR(_ZN9S18575C13C1Ev),
  NSPAIR(_ZN9S18575C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C14;
extern VTBL_ENTRY _ZTI9S18575C14[];
extern  VTBL_ENTRY _ZTV9S18575C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C14[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C15;
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C12;
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
extern Class_Descriptor cd_S18575C16;
extern VTBL_ENTRY _ZTI9S18575C16[];
extern  VTBL_ENTRY _ZTV9S18575C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C16[];
static Base_Class bases_S18575C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C5,    ABISELECT(86112,54612), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(86576,54920), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(86720,55016), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C6,    ABISELECT(87184,55308), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(87360,55416), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(86720,55016), //bcp->offset
    61, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(760,492), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(87664,55600), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(87960,55784), //bcp->offset
    89, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(88424,56092), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(87664,55600), //bcp->offset
    76, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(4592,2912), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(4128,2620), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C14,    ABISELECT(26288,16660), //bcp->offset
    45, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C5,    ABISELECT(91784,58220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(92256,58536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(92720,58828), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(92256,58536), //bcp->offset
    114, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S18575C15,    ABISELECT(91784,58220), //bcp->offset
    97, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(103264,65512), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(103408,65608), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(103408,65608), //bcp->offset
    154, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(103872,65900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S18575C12,    ABISELECT(103872,65900), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C16,    ABISELECT(103264,65512), //bcp->offset
    136, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C13[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN9S18575C13D1Ev();
extern void _ZN9S18575C13D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN9S18575C133v14Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev)();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn87664_N9S18575C13D1Ev,_ZThn55600_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn87664_N9S18575C13D0Ev,_ZThn55600_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn91784_N9S18575C13D1Ev,_ZThn58220_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn91784_N9S18575C13D0Ev,_ZThn58220_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn92256_N9S18575C13D1Ev,_ZThn58536_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn92256_N9S18575C13D0Ev,_ZThn58536_N9S18575C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn103264_N9S18575C13D1Ev,_ZThn65512_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn103264_N9S18575C13D0Ev,_ZThn65512_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN9S18575C163v13Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev)();
extern void _ZN9S18575C123v12Ev();
static  VTBL_ENTRY vtc_S18575C13[] = {
  ABISELECT(103264,65512),
  ABISELECT(92256,58536),
  ABISELECT(91784,58220),
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18575C133v14Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev),
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev),
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-91784,-58220),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-91784,-58220),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev),
  ABISELECT(-92256,-58536),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-92256,-58536),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev),
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-92720,-58828),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev),
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-103264,-65512),
  0,
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-103264,-65512),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-103408,-65608),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-103872,-65900),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
};
extern VTBL_ENTRY _ZTV9S18575C13[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C8__9S18575C13[] = {
  ABISELECT(87664,55600),
  ABISELECT(87360,55416),
  ABISELECT(87184,55308),
  ABISELECT(86112,54612),
  ABISELECT(86720,55016),
  ABISELECT(86576,54920),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C13[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-82768,-52504),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn83072_N9S18575C11D1Ev,_ZThn52688_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn83072_N9S18575C11D0Ev,_ZThn52688_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83072,-52688),
  0,
  ABISELECT(-83072,-52688),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-83368,-52872),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-83832,-53180),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-81984,-52008),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-82592,-52396),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn83536_N9S18575C10D1Ev,_ZThn52980_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn83536_N9S18575C10D0Ev,_ZThn52980_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-83536,-52980),
  0,
  ABISELECT(-83536,-52980),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-83832,-53164),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-84296,-53472),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-82448,-52300),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-83056,-52688),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(-81984,-51992),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-83232,-52796),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C13[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-86576,-54920),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8__9S18575C13[] = {
  0,
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  ABISELECT(-86720,-55016),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C8__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(-86112,-54612),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-87184,-55308),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C8__9S18575C13[] = {
  0,
  ABISELECT(-87360,-55416),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8__9S18575C13[] = {
  ABISELECT(83536,52980),
  ABISELECT(83232,52796),
  ABISELECT(82448,52300),
  ABISELECT(83056,52688),
  ABISELECT(81984,51992),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn87664_N8S18575C8D1Ev,_ZThn55600_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn87664_N8S18575C8D0Ev,_ZThn55600_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C8__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-87664,-55600),
  0,
  ABISELECT(-87664,-55600),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C13[] = {
  ABISELECT(-87960,-55784),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C13[] = {
  ABISELECT(-88424,-56092),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C13[] = {
  ABISELECT(82592,52396),
  ABISELECT(81984,52008),
  ABISELECT(83072,52688),
  ABISELECT(82768,52504),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18575C14__9S18575C13[] = {
  ABISELECT(60288,38260),
  ABISELECT(60896,38648),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C14__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-60896,-38648),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__9S18575C14__9S18575C13[] = {
  0,
  ABISELECT(-60288,-38260),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C13[] = {
  ABISELECT(640,400),
  ABISELECT(-144,-96),
  ABISELECT(464,292),
  ABISELECT(-608,-404),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(608,404),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C13[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C13[] = {
  0,
  ABISELECT(-640,-400),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C13[] = {
  ABISELECT(-608,-388),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C13[] = {
  0,
  ABISELECT(608,388),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C13[] = {
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C15__9S18575C13[] = {
  0,
  ABISELECT(4424,2804),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15__9S18575C13[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C15__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4120,2620),
  0,
  ABISELECT(4120,2620),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C13[] = {
  ABISELECT(3824,2436),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C13[] = {
  ABISELECT(3360,2128),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C15__9S18575C13[] = {
  0,
  ABISELECT(5208,3300),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(4600,2912),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C15__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(5672,3608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__A1__9S18575C13[] = {
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__A2__9S18575C13[] = {
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__A2__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__A2__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A2__9S18575C13[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__A2__9S18575C13[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(5360,3412),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5056,3228),
  0,
  ABISELECT(5056,3228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(4760,3044),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(4296,2736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(6144,3908),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__A1__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(5536,3520),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4592,2936),
  0,
  ABISELECT(4592,2936),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(4296,2752),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(3832,2444),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(5072,3228),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__A1__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(6144,3924),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__A1__9S18575C13[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__A1__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C16D1Ev();
extern void _ZN9S18575C16D0Ev();
extern void _ZN9S18575C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C16__9S18575C13[] = {
  ABISELECT(-17152,-10900),
  ABISELECT(-16080,-10204),
  ABISELECT(-16688,-10592),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C16__A3__9S18575C13[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C16__A3__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(17296,10996),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C16__A3__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(16224,10300),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A3__9S18575C13[] = {
  0,
  ABISELECT(16832,10688),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C16__A3__9S18575C13[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C16__9S18575C13[] = {
  0,
  ABISELECT(15904,10096),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C16__9S18575C13[] = {
  ABISELECT(11480,7292),
  0,
  0,
  0,
  ABISELECT(-5672,-3608),
  ABISELECT(-4600,-2912),
  ABISELECT(-5208,-3300),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(11480,7292),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C16__9S18575C13[] = {
  ABISELECT(11008,6976),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5680,-3616),
  ABISELECT(-5072,-3228),
  ABISELECT(-6144,-3924),
  ABISELECT(11008,6976),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C16__9S18575C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(15600,9912),
  0,
  ABISELECT(15600,9912),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C16__9S18575C13[] = {
  ABISELECT(15304,9728),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A1__9S18575C16__9S18575C13[] = {
  ABISELECT(14840,9420),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A2__9S18575C16__9S18575C13[] = {
  0,
  ABISELECT(16688,10592),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C16__9S18575C13[] = {
  ABISELECT(-608,-388),
  ABISELECT(16080,10204),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C16__9S18575C13[] = {
  0,
  0,
  0,
  ABISELECT(17152,10900),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C16__9S18575C13[] = {
  ABISELECT(-5536,-3520),
  ABISELECT(-6144,-3908),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(10544,6684),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__A1__9S18575C16__9S18575C13[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16832,-10688),
  ABISELECT(-16224,-10300),
  ABISELECT(-17296,-10996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C13[] = {
  {&(_ZTV9S18575C13[11]),  11,167},
  {&(_tg__ZTV8S18575C8__9S18575C13[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C8__9S18575C13[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C8__9S18575C13[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C8__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C8__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C8__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C8__9S18575C13[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C8__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C13[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C13[6]),  6,8},
  {&(_tg__ZTV9S18575C14__9S18575C13[4]),  4,4},
  {&(_tg__ZTV8S18575C6__9S18575C14__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__9S18575C14__9S18575C13[3]),  3,4},
  {&(_ZTV9S18575C13[54]),  54,167},
  {&(_ZTV9S18575C13[60]),  60,167},
  {&(_ZTV9S18575C13[68]),  68,167},
  {&(_ZTV9S18575C13[72]),  72,167},
  {&(_ZTV9S18575C13[75]),  75,167},
  {&(_ZTV9S18575C13[33]),  33,167},
  {&(_ZTV9S18575C13[85]),  85,167},
  {&(_ZTV9S18575C13[91]),  91,167},
  {&(_ZTV9S18575C13[96]),  96,167},
  {&(_ZTV9S18575C13[43]),  43,167},
  {&(_ZTV9S18575C13[49]),  49,167},
  {&(_ZTV9S18575C13[109]),  109,167},
  {&(_ZTV9S18575C13[124]),  124,167},
  {&(_ZTV9S18575C13[134]),  134,167},
  {&(_ZTV9S18575C13[150]),  150,167},
  {&(_ZTV9S18575C13[160]),  160,167},
  {&(_ZTV9S18575C13[163]),  163,167},
  {&(_tg__ZTV8S18575C3__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C15__9S18575C13[8]),  8,13},
  {&(_tg__ZTV8S18575C7__9S18575C15__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C10__9S18575C15__9S18575C13[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C15__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C15__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C15__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C15__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C15__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C15__9S18575C13[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15__9S18575C13[6]),  6,8},
  {&(_tg__ZTV9S18575C10__A1__9S18575C13[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__A2__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__A2__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__A2__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A2__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__A2__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__A1__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__A1__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A1__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A1__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__A1__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__A1__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__A1__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__A1__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__A1__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__A1__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__A1__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__A1__9S18575C13[6]),  6,8},
  {&(_tg__ZTV9S18575C16__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C39S18575C16__A3__9S18575C13[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C16__A3__9S18575C13[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C16__A3__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C16__A3__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C7__9S18575C16__9S18575C13[3]),  3,4},
  {&(_tg__ZTV9S18575C15__9S18575C16__9S18575C13[12]),  12,17},
  {&(_tg__ZTV9S18575C10__9S18575C16__9S18575C13[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C16__9S18575C13[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C16__9S18575C13[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A1__9S18575C16__9S18575C13[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A2__9S18575C16__9S18575C13[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C16__9S18575C13[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C16__9S18575C13[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C16__9S18575C13[6]),  6,8},
  {&(_tg__ZTV8S18575C3__A1__9S18575C16__9S18575C13[6]),  6,7},
};
extern VTBL_ENTRY _ZTI9S18575C13[];
extern  VTBL_ENTRY _ZTV9S18575C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C13[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S18575C8D0Ev,_ZThn55600_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N8S18575C8D1Ev,_ZThn55600_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S18575C10D0Ev,_ZThn52980_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83536_N9S18575C10D1Ev,_ZThn52980_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S18575C11D0Ev,_ZThn52688_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83072_N9S18575C11D1Ev,_ZThn52688_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N9S18575C13D0Ev,_ZThn65512_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn103264_N9S18575C13D1Ev,_ZThn65512_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N9S18575C13D0Ev,_ZThn58536_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn92256_N9S18575C13D1Ev,_ZThn58536_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N9S18575C13D0Ev,_ZThn58220_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn91784_N9S18575C13D1Ev,_ZThn58220_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N9S18575C13D0Ev,_ZThn55600_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn87664_N9S18575C13D1Ev,_ZThn55600_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C13 = {  "S18575C13", // class name
  bases_S18575C13, 32,
  &(vtc_S18575C13[0]), // expected_vtbl_contents
  &(vtt_S18575C13[0]), // expected_vtt_contents
  ABISELECT(106080,67304), // object size
  NSPAIRA(_ZTI9S18575C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S18575C13),167, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C13),108, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C17  : S18575C3 , S18575C11 {
  int s18575c17f0:13;
  long s18575c17f1;
  int s18575c17f2;
  void *s18575c17f3[2];
  __tsi64 s18575c17f4;
  ::S18575C5 s18575c17f5;
  virtual  ~S18575C17(); // _ZN9S18575C17D2Ev
  virtual void  v15(); // _ZN9S18575C173v15Ev
  virtual void  v16(); // _ZN9S18575C173v16Ev
  S18575C17(); // tgen
};
//SIG(-1 S18575C17) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL: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 FL 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}


 S18575C17 ::~S18575C17(){ note_dtor("S18575C17", this);}
void  S18575C17 ::v15(){vfunc_called(this, "_ZN9S18575C173v15Ev");}
void  S18575C17 ::v16(){vfunc_called(this, "_ZN9S18575C173v16Ev");}
S18575C17 ::S18575C17(){ note_ctor("S18575C17", this);} // tgen

static void Test_S18575C17()
{
  extern Class_Descriptor cd_S18575C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2000)];
    init_test(&cd_S18575C17, buf);
    S18575C17 *dp, &lv = *(dp=new (buf) S18575C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,7996), "sizeof(S18575C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C17)");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), 0, "S18575C17");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(7376,4680), "S18575C17");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(8008,5096), "S18575C17");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*), ABISELECT(8008,5096), "S18575C17");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(7840,4988), "S18575C17");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*), ABISELECT(7840,4988), "S18575C17");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(8160,5192), "S18575C17");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*), ABISELECT(8160,5192), "S18575C17");
    check_base_class_offset(lv, (S18575C3*), 0, "S18575C17");
    check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(8464,5376), "S18575C17");
    check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(8760,5560), "S18575C17");
    check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(9224,5868), "S18575C17");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*), ABISELECT(8464,5376), "S18575C17");
    check_base_class_offset(lv, (S18575C11*), ABISELECT(464,292), "S18575C17");
    set_bf_and_test(lv, s18575c17f0, ABISELECT(6864,4344), 0, 13, 1, "S18575C17");
    set_bf_and_test(lv, s18575c17f0, ABISELECT(6864,4344), 0, 13, hide_sll(1LL<<12), "S18575C17");
    check_field_offset(lv, s18575c17f1, ABISELECT(6872,4348), "S18575C17.s18575c17f1");
    check_field_offset(lv, s18575c17f2, ABISELECT(6880,4352), "S18575C17.s18575c17f2");
    check_field_offset(lv, s18575c17f3, ABISELECT(6888,4356), "S18575C17.s18575c17f3");
    check_field_offset(lv, s18575c17f4, ABISELECT(6904,4364), "S18575C17.s18575c17f4");
    check_field_offset(lv, s18575c17f5, ABISELECT(6912,4372), "S18575C17.s18575c17f5");
    test_class_info(&lv, &cd_S18575C17);
    dp->~S18575C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C17(Test_S18575C17, "S18575C17", ABISELECT(12592,7996));

#else // __cplusplus

extern void _ZN9S18575C17C1Ev();
extern void _ZN9S18575C17D2Ev();
Name_Map name_map_S18575C17[] = {
  NSPAIR(_ZN9S18575C17C1Ev),
  NSPAIR(_ZN9S18575C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
static Base_Class bases_S18575C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(7376,4680), //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_S18575C4,    ABISELECT(8008,5096), //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_S18575C6,    ABISELECT(7840,4988), //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_S18575C7,    ABISELECT(8160,5192), //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_S18575C3,    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_S18575C7,    ABISELECT(8464,5376), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(8760,5560), //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_S18575C4,    ABISELECT(9224,5868), //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_S18575C9,    ABISELECT(8464,5376), //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_S18575C11,    ABISELECT(464,292), //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 _ZTI9S18575C17[];
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C17D1Ev();
extern void _ZN9S18575C17D0Ev();
extern void _ZN9S18575C173v15Ev();
extern void _ZN9S18575C173v16Ev();
extern void ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev)();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev)();
extern void ABISELECT(_ZThn8464_N9S18575C17D1Ev,_ZThn5376_N9S18575C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev)();
extern void ABISELECT(_ZThn8464_N9S18575C17D0Ev,_ZThn5376_N9S18575C17D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C17[] = {
  ABISELECT(8464,5376),
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v16Ev,
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8464,-5376),
  0,
  ABISELECT(-8464,-5376),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-8760,-5560),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-9224,-5868),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18575C17[];
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C17[] = {
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C17[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C17[] = {
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C17[] = {
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C17[] = {
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C17[] = {
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C11__9S18575C17[] = {
  0,
  ABISELECT(-7696,-4900),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn8000_N9S18575C11D1Ev,_ZThn5084_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn8000_N9S18575C11D0Ev,_ZThn5084_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C11__9S18575C17[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8000,-5084),
  0,
  ABISELECT(-8000,-5084),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C17[] = {
  ABISELECT(-8296,-5268),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C17[] = {
  ABISELECT(-8760,-5576),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C11__9S18575C17[] = {
  0,
  ABISELECT(-7544,-4804),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C11__9S18575C17[] = {
  ABISELECT(168,108),
  ABISELECT(-7376,-4696),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C17[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C17[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C17[] = {
  {&(_ZTV9S18575C17[7]),  7,60},
  {&(_tg__ZTV8S18575C3__9S18575C17[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C17[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C17[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C17[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C17[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C17[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C11__9S18575C17[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C11__9S18575C17[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C11__9S18575C17[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C11__9S18575C17[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C11__9S18575C17[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C11__9S18575C17[3]),  3,3},
  {&(_ZTV9S18575C17[25]),  25,60},
  {&(_ZTV9S18575C17[31]),  31,60},
  {&(_ZTV9S18575C17[34]),  34,60},
  {&(_ZTV9S18575C17[38]),  38,60},
  {&(_ZTV9S18575C17[18]),  18,60},
  {&(_ZTV9S18575C17[48]),  48,60},
  {&(_ZTV9S18575C17[54]),  54,60},
  {&(_ZTV9S18575C17[59]),  59,60},
  {&(_tg__ZTV8S18575C6__9S18575C17[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C17[];
extern  VTBL_ENTRY _ZTV9S18575C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C17[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S18575C11D0Ev,_ZThn5084_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S18575C11D1Ev,_ZThn5084_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S18575C17D0Ev,_ZThn5376_N9S18575C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S18575C17D1Ev,_ZThn5376_N9S18575C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C17 = {  "S18575C17", // class name
  bases_S18575C17, 11,
  &(vtc_S18575C17[0]), // expected_vtbl_contents
  &(vtt_S18575C17[0]), // expected_vtt_contents
  ABISELECT(12592,7996), // object size
  NSPAIRA(_ZTI9S18575C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S18575C17),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C17),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S18575C19  {
  char s18575c19f0:8;
  void *s18575c19f1;
  short s18575c19f2;
  long double s18575c19f3;
  void *s18575c19f4;
  void *s18575c19f5;
  long s18575c19f6[5];
  void  mf18575c19(); // _ZN9S18575C1910mf18575c19Ev
};
//SIG(1 S18575C19) U1{ m Fc:8 Fp Fs FD Fp Fp Fl[5]}

#endif // __cplusplus
#ifdef __cplusplus

struct  S18575C18  : S18575C5 , virtual S18575C8 , S18575C4 {
  int s18575c18f0;
  ::S18575C19 s18575c18f1;
  int s18575c18f2;
  ::S18575C8 s18575c18f3;
  char s18575c18f4[6];
  long s18575c18f5;
  int s18575c18f6;
  int  :0;
  virtual  ~S18575C18(); // _ZN9S18575C18D2Ev
  S18575C18(); // tgen
};
//SIG(-1 S18575C18) C1{ BC2{ v1 v2 v3 Fi[2] Fl[2] FC3{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]} VBC4{ VBC3 VBC5{ BC3 VBC2 VBC6{ VBC3 Fp FC3 FL:3} VBC7{ v5 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ BC7 BC2 BC3 vd v6 Fl FL Fp[8] FC5 Fp Fi FC5 Fi} BC9{ VBC8 VBC3 VBC6 BC5 BC10{ VBC7 VBC8 VBC3 VBC6 FL:44 Fp Fi FC5 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC7 vd v10 FC6 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs FL:8} BC3 vd Fi FU12{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC4 Fc[6] Fl Fi Fi:0}


 S18575C18 ::~S18575C18(){ note_dtor("S18575C18", this);}
S18575C18 ::S18575C18(){ note_ctor("S18575C18", this);} // tgen

static void Test_S18575C18()
{
  extern Class_Descriptor cd_S18575C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4042,10247)];
    init_test(&cd_S18575C18, buf);
    S18575C18 *dp, &lv = *(dp=new (buf) S18575C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64656,40984), "sizeof(S18575C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C18)");
    /*is_ambiguous_... S18575C18::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*), 0, "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*), ABISELECT(58968,37376), "S18575C18");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(58968,37376), "S18575C18");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*), ABISELECT(58968,37376), "S18575C18");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(58968,37376), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(59120,37472), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(59584,37764), "S18575C18");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(59584,37764), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(60048,38072), "S18575C18");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*), ABISELECT(60048,38072), "S18575C18");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(60048,38072), "S18575C18");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(60048,38072), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(60224,38180), "S18575C18");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(60224,38180), "S18575C18");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(60224,38180), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*), ABISELECT(59120,37472), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*), ABISELECT(32688,20716), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*), ABISELECT(32984,20900), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*), ABISELECT(33448,21208), "S18575C18");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*), ABISELECT(32688,20716), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(60528,38364), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(60824,38548), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(61288,38856), "S18575C18");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*), ABISELECT(60528,38364), "S18575C18");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(60528,38364), "S18575C18");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(36816,23336), "S18575C18");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(36816,23336), "S18575C18");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(37280,23628), "S18575C18");
    check_base_class_offset(lv, (S18575C10*)(S18575C8*), ABISELECT(36816,23336), "S18575C18");
    check_base_class_offset(lv, (S18575C8*), ABISELECT(32688,20716), "S18575C18");
    /*is_ambiguous_... S18575C18::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*), ABISELECT(464,308), "S18575C18");
    check_field_offset(lv, s18575c18f0, ABISELECT(608,404), "S18575C18.s18575c18f0");
    check_field_offset(lv, s18575c18f1, ABISELECT(624,408), "S18575C18.s18575c18f1");
    check_field_offset(lv, s18575c18f2, ABISELECT(672,428), "S18575C18.s18575c18f2");
    check_field_offset(lv, s18575c18f3, ABISELECT(688,432), "S18575C18.s18575c18f3");
    check_field_offset(lv, s18575c18f4, ABISELECT(32656,20700), "S18575C18.s18575c18f4");
    check_field_offset(lv, s18575c18f5, ABISELECT(32664,20708), "S18575C18.s18575c18f5");
    check_field_offset(lv, s18575c18f6, ABISELECT(32672,20712), "S18575C18.s18575c18f6");
    test_class_info(&lv, &cd_S18575C18);
    dp->~S18575C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C18(Test_S18575C18, "S18575C18", ABISELECT(64656,40984));

#else // __cplusplus

extern void _ZN9S18575C18C1Ev();
extern void _ZN9S18575C18D2Ev();
Name_Map name_map_S18575C18[] = {
  NSPAIR(_ZN9S18575C18C1Ev),
  NSPAIR(_ZN9S18575C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
static Base_Class bases_S18575C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C4,    ABISELECT(58968,37376), //bcp->offset
    68, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(59120,37472), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(59584,37764), //bcp->offset
    80, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(60048,38072), //bcp->offset
    88, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(60224,38180), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(59120,37472), //bcp->offset
    72, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(32688,20716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(32984,20900), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(33448,21208), //bcp->offset
    46, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(32688,20716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(60528,38364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(60824,38548), //bcp->offset
    108, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(61288,38856), //bcp->offset
    113, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(60528,38364), //bcp->offset
    95, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(36816,23336), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C3,    ABISELECT(36816,23336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(37280,23628), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(36816,23336), //bcp->offset
    49, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S18575C8,    ABISELECT(32688,20716), //bcp->offset
    17, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C4,    ABISELECT(464,308), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S18575C18[];
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C18D1Ev();
extern void _ZN9S18575C18D0Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C18D1Ev,_ZTv0_n40_N9S18575C18D1Ev)();
extern void ABISELECT(_ZThn32688_N9S18575C18D1Ev,_ZThn20716_N9S18575C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C18D0Ev,_ZTv0_n40_N9S18575C18D0Ev)();
extern void ABISELECT(_ZThn32688_N9S18575C18D0Ev,_ZThn20716_N9S18575C18D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTvn4128_n80_N9S18575C18D1Ev,_ZTvn2620_n40_N9S18575C18D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N9S18575C18D0Ev,_ZTvn2620_n40_N9S18575C18D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N9S18575C18D1Ev,_ZTvn2912_n40_N9S18575C18D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N9S18575C18D0Ev,_ZTvn2912_n40_N9S18575C18D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C18D1Ev,_ZTv0_n16_N9S18575C18D1Ev)();
extern void ABISELECT(_ZThn60528_N9S18575C18D1Ev,_ZThn38364_N9S18575C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C18D0Ev,_ZTv0_n16_N9S18575C18D0Ev)();
extern void ABISELECT(_ZThn60528_N9S18575C18D0Ev,_ZThn38364_N9S18575C18D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY vtc_S18575C18[] = {
  ABISELECT(60528,38364),
  ABISELECT(60224,38180),
  ABISELECT(60048,38072),
  ABISELECT(59584,37764),
  ABISELECT(59120,37472),
  ABISELECT(58968,37376),
  ABISELECT(32688,20716),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C18D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C18D0Ev,
  ABISELECT(-464,-308),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-32688,-20716),
  0,
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  ABISELECT(-32688,-20716),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C18D1Ev,_ZTv0_n40_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C18D0Ev,_ZTv0_n40_N9S18575C18D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  ABISELECT(-32984,-20900),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-33448,-21208),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-36816,-23336),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N9S18575C18D1Ev,_ZTvn2620_n40_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N9S18575C18D0Ev,_ZTvn2620_n40_N9S18575C18D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-37280,-23628),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N9S18575C18D1Ev,_ZTvn2912_n40_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N9S18575C18D0Ev,_ZTvn2912_n40_N9S18575C18D0Ev),
  0,
  ABISELECT(-58968,-37376),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-59120,-37472),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-59584,-37764),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-60048,-38072),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  0,
  ABISELECT(-60224,-38180),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-60528,-38364),
  0,
  ABISELECT(-60528,-38364),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C18D1Ev,_ZTv0_n16_N9S18575C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C18D0Ev,_ZTv0_n16_N9S18575C18D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-60824,-38548),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-61288,-38856),
  (VTBL_ENTRY)&(_ZTI9S18575C18[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern VTBL_ENTRY _ZTV9S18575C18[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C8__9S18575C18[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C18[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C18[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8__9S18575C18[] = {
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C8__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C8__9S18575C18[] = {
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8__9S18575C18[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C8__9S18575C18[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C18[] = {
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C18[] = {
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C18[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C18[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__9S18575C18[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__9S18575C18[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__9S18575C18[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__9S18575C18[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C18[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__9S18575C18[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C18[] = {
  {&(_ZTV9S18575C18[9]),  9,116},
  {&(_ZTV9S18575C18[35]),  35,116},
  {&(_ZTV9S18575C18[71]),  71,116},
  {&(_ZTV9S18575C18[79]),  79,116},
  {&(_ZTV9S18575C18[85]),  85,116},
  {&(_ZTV9S18575C18[91]),  91,116},
  {&(_ZTV9S18575C18[94]),  94,116},
  {&(_ZTV9S18575C18[43]),  43,116},
  {&(_ZTV9S18575C18[48]),  48,116},
  {&(_ZTV9S18575C18[56]),  56,116},
  {&(_ZTV9S18575C18[104]),  104,116},
  {&(_ZTV9S18575C18[110]),  110,116},
  {&(_ZTV9S18575C18[115]),  115,116},
  {&(_ZTV9S18575C18[66]),  66,116},
  {&(_tg__ZTV8S18575C8__9S18575C18[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C8__9S18575C18[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C8__A1__9S18575C18[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__9S18575C18[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__9S18575C18[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__9S18575C18[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C8__9S18575C18[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__9S18575C18[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__9S18575C18[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C8__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C8__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C8__9S18575C18[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C8__9S18575C18[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C8__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C8__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C8__9S18575C18[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C8__9S18575C18[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C8__9S18575C18[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C8__9S18575C18[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C8__9S18575C18[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8__9S18575C18[6]),  6,8},
  {&(_tg__ZTV8S18575C3__9S18575C18[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__9S18575C18[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__9S18575C18[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C18[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__9S18575C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S18575C18[];
extern  VTBL_ENTRY _ZTV9S18575C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C18[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D0Ev,_ZThn17648_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N8S18575C8D1Ev,_ZThn17648_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D0Ev,_ZThn15028_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N9S18575C10D1Ev,_ZThn15028_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D0Ev,_ZThn14736_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S18575C11D1Ev,_ZThn14736_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C18D0Ev,_ZTv0_n16_N9S18575C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60528_N9S18575C18D0Ev,_ZThn38364_N9S18575C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C18D1Ev,_ZTv0_n16_N9S18575C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60528_N9S18575C18D1Ev,_ZThn38364_N9S18575C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C18D0Ev,_ZTv0_n40_N9S18575C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32688_N9S18575C18D0Ev,_ZThn20716_N9S18575C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C18D1Ev,_ZTv0_n40_N9S18575C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32688_N9S18575C18D1Ev,_ZThn20716_N9S18575C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C18 = {  "S18575C18", // class name
  bases_S18575C18, 21,
  &(vtc_S18575C18[0]), // expected_vtbl_contents
  &(vtt_S18575C18[0]), // expected_vtt_contents
  ABISELECT(64656,40984), // object size
  NSPAIRA(_ZTI9S18575C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S18575C18),116, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18575C18),53, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C2  : virtual S18575C3 , S18575C8 , S18575C13 , virtual S18575C17 {
  ::S18575C18 s18575c2f0;
  int s18575c2f1;
  int s18575c2f2;
  int s18575c2f3;
  int s18575c2f4;
  int s18575c2f5;
  char s18575c2f6;
  int s18575c2f7;
  void *s18575c2f8;
  void *s18575c2f9;
  int s18575c2f10;
  ::S18575C6 s18575c2f11;
  ~S18575C2(); // tgen
  S18575C2(); // tgen
};
//SIG(-1 S18575C2) C1{ VBC2{ BC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v2 v3 v4 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL:3} VBC6{ v5 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} FC6 Fs Fi[2]} BC7{ VBC3 VBC2 BC8{ BC6 BC4 BC3 vd v6 Fl FL Fp[8] FC2 Fp Fi FC2 Fi} BC9{ VBC8 VBC3 VBC5 BC2 BC10{ VBC6 VBC8 VBC3 VBC5 FL:44 Fp Fi FC2 Fl[2] Fi[3] FC8 Fc:7 FC11{ BC6 vd v10 FC5 Fi Fp Fi}} v7 FC8 FL Fc:7} v8 v9 FC10 Fs FL:8} BC12{ VBC4 BC7 BC13{ VBC5 FC10 FL:6 Fi Fl} VBC14{ VBC6 BC4 VBC9 Fc:8 Fi} VBC15{ BC3 VBC6 VBC14 BC2 BC11 vd v11 Fi FC2 Fi Fs FL:8 Fi} v12 FC14 FC7} VBC16{ BC2 BC10 vd v13 v14 Fi:13 Fl Fi Fp[2] FL FC4} FC17{ BC4 VBC7 BC3 vd Fi FU18{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC7 Fc[6] Fl Fi Fi:0} Fi Fi Fi Fi Fi Fc Fi Fp Fp Fi FC5}


S18575C2 ::~S18575C2(){ note_dtor("S18575C2", this);} // tgen
S18575C2 ::S18575C2(){ note_ctor("S18575C2", this);} // tgen

static void Test_S18575C2()
{
  extern Class_Descriptor cd_S18575C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12799,32469)];
    init_test(&cd_S18575C2, buf);
    S18575C2 *dp, &lv = *(dp=new (buf) S18575C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(204768,129872), "sizeof(S18575C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C2)");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C13::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C13*), ABISELECT(177888,112792), "S18575C2");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C10*), ABISELECT(177888,112792), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C16*), ABISELECT(177888,112792), "S18575C2");
    check_base_class_offset(lv, (S18575C5*)(S18575C3*)(S18575C17*), ABISELECT(177888,112792), "S18575C2");
    check_base_class_offset(lv, (S18575C4*)(S18575C6*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C8*)(S18575C13*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C10::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C10*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C10*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C11*)(S18575C17*), ABISELECT(178520,113208), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C14*)(S18575C13*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C10*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C10*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C10*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C16*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C3*)(S18575C17*), ABISELECT(178352,113100), "S18575C2");
    check_base_class_offset(lv, (S18575C6*)(S18575C11*)(S18575C17*), ABISELECT(178352,113100), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178672,113304), "S18575C2");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C15::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C15*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C10*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C10*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C16*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C16*), ABISELECT(178672,113304), "S18575C2");
    check_base_class_offset(lv, (S18575C7*)(S18575C3*)(S18575C17*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C11::S18575C7 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C11*)(S18575C17*), ABISELECT(178672,113304), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C8*)(S18575C13*), ABISELECT(177424,112500), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*), 0, "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*), ABISELECT(296,184), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*), ABISELECT(760,492), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*), 0, "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*), ABISELECT(179272,113672), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*), ABISELECT(179736,113980), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(178976,113488), "S18575C2");
    check_base_class_offset(lv, (S18575C9*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178976,113488), "S18575C2");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C10*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C10*), ABISELECT(178976,113488), "S18575C2");
    check_base_class_offset(lv, (S18575C9*)(S18575C11*)(S18575C17*), ABISELECT(178976,113488), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*), ABISELECT(4592,2912), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C10*)(S18575C8*), ABISELECT(4128,2620), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C8 */ AMB_check_base_class_offset(lv, (S18575C8*), 0, "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C7*)(S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(26288,16660), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(26584,16844), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(27048,17152), "S18575C2");
    /*is_ambiguous_... S18575C8::S18575C9 */ AMB_check_base_class_offset(lv, (S18575C9*)(S18575C8*)(S18575C13*), ABISELECT(26288,16660), "S18575C2");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30416,19280), "S18575C2");
    check_base_class_offset(lv, (S18575C3*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30416,19280), "S18575C2");
    check_base_class_offset(lv, (S18575C11*)(S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30880,19572), "S18575C2");
    check_base_class_offset(lv, (S18575C10*)(S18575C8*)(S18575C13*), ABISELECT(30416,19280), "S18575C2");
    check_base_class_offset(lv, (S18575C8*)(S18575C13*), ABISELECT(26288,16660), "S18575C2");
    check_base_class_offset(lv, (S18575C14*)(S18575C13*), ABISELECT(52576,33320), "S18575C2");
    /*is_ambiguous_... S18575C15::S18575C5 */ AMB_check_base_class_offset(lv, (S18575C5*)(S18575C15*), ABISELECT(183096,116108), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C10*), ABISELECT(183568,116424), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C10*), ABISELECT(183568,116424), "S18575C2");
    /*is_ambiguous_... S18575C2::S18575C10 */ AMB_check_base_class_offset(lv, (S18575C11*)(S18575C10*), ABISELECT(184032,116716), "S18575C2");
    check_base_class_offset(lv, (S18575C10*)(S18575C15*), ABISELECT(183568,116424), "S18575C2");
    check_base_class_offset(lv, (S18575C15*)(S18575C13*), ABISELECT(183096,116108), "S18575C2");
    check_base_class_offset(lv, (S18575C15*)(S18575C16*), ABISELECT(183096,116108), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C16*), ABISELECT(194576,123400), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C16*), ABISELECT(194720,123496), "S18575C2");
    /*is_ambiguous_... S18575C16::S18575C3 */ AMB_check_base_class_offset(lv, (S18575C3*)(S18575C16*), ABISELECT(194720,123496), "S18575C2");
    check_base_class_offset(lv, (S18575C7*)(S18575C12*)(S18575C16*), ABISELECT(195184,123788), "S18575C2");
    check_base_class_offset(lv, (S18575C12*)(S18575C16*), ABISELECT(195184,123788), "S18575C2");
    check_base_class_offset(lv, (S18575C16*)(S18575C13*), ABISELECT(194576,123400), "S18575C2");
    check_base_class_offset(lv, (S18575C13*), ABISELECT(26288,16660), "S18575C2");
    /*is_ambiguous_... S18575C3::S18575C4 */ AMB_check_base_class_offset(lv, (S18575C4*)(S18575C3*)(S18575C17*), ABISELECT(197392,125192), "S18575C2");
    check_base_class_offset(lv, (S18575C3*)(S18575C17*), ABISELECT(197392,125192), "S18575C2");
    check_base_class_offset(lv, (S18575C11*)(S18575C17*), ABISELECT(197856,125484), "S18575C2");
    check_base_class_offset(lv, (S18575C17*), ABISELECT(197392,125192), "S18575C2");
    check_field_offset(lv, s18575c2f0, ABISELECT(112400,71272), "S18575C2.s18575c2f0");
    check_field_offset(lv, s18575c2f1, ABISELECT(177056,112256), "S18575C2.s18575c2f1");
    check_field_offset(lv, s18575c2f2, ABISELECT(177060,112260), "S18575C2.s18575c2f2");
    check_field_offset(lv, s18575c2f3, ABISELECT(177064,112264), "S18575C2.s18575c2f3");
    check_field_offset(lv, s18575c2f4, ABISELECT(177068,112268), "S18575C2.s18575c2f4");
    check_field_offset(lv, s18575c2f5, ABISELECT(177072,112272), "S18575C2.s18575c2f5");
    check_field_offset(lv, s18575c2f6, ABISELECT(177076,112276), "S18575C2.s18575c2f6");
    check_field_offset(lv, s18575c2f7, ABISELECT(177080,112280), "S18575C2.s18575c2f7");
    check_field_offset(lv, s18575c2f8, ABISELECT(177088,112284), "S18575C2.s18575c2f8");
    check_field_offset(lv, s18575c2f9, ABISELECT(177096,112288), "S18575C2.s18575c2f9");
    check_field_offset(lv, s18575c2f10, ABISELECT(177104,112292), "S18575C2.s18575c2f10");
    check_field_offset(lv, s18575c2f11, ABISELECT(177112,112296), "S18575C2.s18575c2f11");
    test_class_info(&lv, &cd_S18575C2);
    dp->~S18575C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C2(Test_S18575C2, "S18575C2", ABISELECT(204768,129872));

#else // __cplusplus

extern void _ZN8S18575C2C1Ev();
extern void _ZN8S18575C2D1Ev();
Name_Map name_map_S18575C2[] = {
  NSPAIR(_ZN8S18575C2C1Ev),
  NSPAIR(_ZN8S18575C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C6;
extern VTBL_ENTRY _ZTI8S18575C6[];
extern  VTBL_ENTRY _ZTV8S18575C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C6[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C9;
extern VTBL_ENTRY _ZTI8S18575C9[];
extern  VTBL_ENTRY _ZTV8S18575C9[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C8;
extern VTBL_ENTRY _ZTI8S18575C8[];
extern  VTBL_ENTRY _ZTV8S18575C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C8[];
extern Class_Descriptor cd_S18575C14;
extern VTBL_ENTRY _ZTI9S18575C14[];
extern  VTBL_ENTRY _ZTV9S18575C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C14[];
extern Class_Descriptor cd_S18575C5;
extern VTBL_ENTRY _ZTI8S18575C5[];
extern  VTBL_ENTRY _ZTV8S18575C5[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C10;
extern VTBL_ENTRY _ZTI9S18575C10[];
extern  VTBL_ENTRY _ZTV9S18575C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C10[];
extern Class_Descriptor cd_S18575C15;
extern VTBL_ENTRY _ZTI9S18575C15[];
extern  VTBL_ENTRY _ZTV9S18575C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C15[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C7;
extern VTBL_ENTRY _ZTI8S18575C7[];
extern  VTBL_ENTRY _ZTV8S18575C7[];
extern Class_Descriptor cd_S18575C12;
extern VTBL_ENTRY _ZTI9S18575C12[];
extern  VTBL_ENTRY _ZTV9S18575C12[];
extern Class_Descriptor cd_S18575C16;
extern VTBL_ENTRY _ZTI9S18575C16[];
extern  VTBL_ENTRY _ZTV9S18575C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C16[];
extern Class_Descriptor cd_S18575C13;
extern VTBL_ENTRY _ZTI9S18575C13[];
extern  VTBL_ENTRY _ZTV9S18575C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C13[];
extern Class_Descriptor cd_S18575C4;
extern VTBL_ENTRY _ZTI8S18575C4[];
extern  VTBL_ENTRY _ZTV8S18575C4[];
extern Class_Descriptor cd_S18575C3;
extern VTBL_ENTRY _ZTI8S18575C3[];
extern  VTBL_ENTRY _ZTV8S18575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C3[];
extern Class_Descriptor cd_S18575C11;
extern VTBL_ENTRY _ZTI9S18575C11[];
extern  VTBL_ENTRY _ZTV9S18575C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C11[];
extern Class_Descriptor cd_S18575C17;
extern VTBL_ENTRY _ZTI9S18575C17[];
extern  VTBL_ENTRY _ZTV9S18575C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18575C17[];
static Base_Class bases_S18575C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18575C4,    ABISELECT(177424,112500), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(177888,112792), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(178520,113208), //bcp->offset
    113, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18575C6,    ABISELECT(178352,113100), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C7,    ABISELECT(178672,113304), //bcp->offset
    117, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S18575C3,    ABISELECT(177424,112500), //bcp->offset
    94, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18575C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(296,184), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(760,492), //bcp->offset
    23, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18575C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(178976,113488), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C5,    ABISELECT(179272,113672), //bcp->offset
    134, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(179736,113980), //bcp->offset
    139, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(178976,113488), //bcp->offset
    121, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C3,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(4592,2912), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(4128,2620), //bcp->offset
    26, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S18575C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C7,    ABISELECT(26288,16660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(26584,16844), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(27048,17152), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S18575C9,    ABISELECT(26288,16660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(30416,19280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(30416,19280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(30880,19572), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(30416,19280), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S18575C8,    ABISELECT(26288,16660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S18575C14,    ABISELECT(52576,33320), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S18575C5,    ABISELECT(183096,116108), //bcp->offset
    -1, //bcp->virtual_function_table_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_S18575C4,    ABISELECT(183568,116424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(183568,116424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(184032,116716), //bcp->offset
    173, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S18575C10,    ABISELECT(183568,116424), //bcp->offset
    159, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S18575C15,    ABISELECT(183096,116108), //bcp->offset
    142, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S18575C4,    ABISELECT(194576,123400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18575C4,    ABISELECT(194720,123496), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(194720,123496), //bcp->offset
    199, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    105, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18575C7,    ABISELECT(195184,123788), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S18575C12,    ABISELECT(195184,123788), //bcp->offset
    206, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    106, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S18575C16,    ABISELECT(194576,123400), //bcp->offset
    181, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    104, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S18575C13,    ABISELECT(26288,16660), //bcp->offset
    45, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18575C4,    ABISELECT(197392,125192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S18575C3,    ABISELECT(197392,125192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S18575C11,    ABISELECT(197856,125484), //bcp->offset
    228, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    108, //bcp->index_in_construction_vtbl_array
    170, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S18575C17,    ABISELECT(197392,125192), //bcp->offset
    212, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    107, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18575C2[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C2D1Ev();
extern void _ZN8S18575C2D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C2D1Ev,_ZThn2620_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C2D0Ev,_ZThn2620_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C2D1Ev,_ZThn2912_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C2D0Ev,_ZThn2912_N8S18575C2D0Ev)();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZThn26288_N8S18575C2D1Ev,_ZThn16660_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn26288_N8S18575C2D0Ev,_ZThn16660_N8S18575C2D0Ev)();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN9S18575C133v14Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn30416_N8S18575C2D1Ev,_ZThn19280_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn30416_N8S18575C2D0Ev,_ZThn19280_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn30880_N8S18575C2D1Ev,_ZThn19572_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn30880_N8S18575C2D0Ev,_ZThn19572_N8S18575C2D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C2D1Ev,_ZTv0_n16_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C2D1Ev,_ZThn113488_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C2D0Ev,_ZTv0_n16_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C2D0Ev,_ZThn113488_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N8S18575C2D1Ev,_ZTv0_n48_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn183096_N8S18575C2D1Ev,_ZThn116108_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S18575C2D0Ev,_ZTv0_n48_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn183096_N8S18575C2D0Ev,_ZThn116108_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N8S18575C2D1Ev,_ZTv0_n40_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn183568_N8S18575C2D1Ev,_ZThn116424_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S18575C2D0Ev,_ZTv0_n40_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn183568_N8S18575C2D0Ev,_ZThn116424_N8S18575C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S18575C2D1Ev,_ZTvn292_n40_N8S18575C2D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S18575C2D0Ev,_ZTvn292_n40_N8S18575C2D0Ev)();
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N8S18575C2D1Ev,_ZTv0_n44_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn194576_N8S18575C2D1Ev,_ZThn123400_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S18575C2D0Ev,_ZTv0_n44_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn194576_N8S18575C2D0Ev,_ZThn123400_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN9S18575C163v13Ev();
extern void _ZN8S18575C42v3Ev();
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S18575C2D1Ev,_ZTvn388_n44_N8S18575C2D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S18575C2D0Ev,_ZTvn388_n44_N8S18575C2D0Ev)();
extern void _ZN9S18575C123v12Ev();
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S18575C2D1Ev,_ZTv0_n36_N8S18575C2D1Ev)();
extern void ABISELECT(_ZThn197392_N8S18575C2D1Ev,_ZThn125192_N8S18575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S18575C2D0Ev,_ZTv0_n36_N8S18575C2D0Ev)();
extern void ABISELECT(_ZThn197392_N8S18575C2D0Ev,_ZThn125192_N8S18575C2D0Ev)() __attribute__((weak));
extern void _ZN9S18575C173v15Ev();
extern void _ZN9S18575C173v16Ev();
extern void ABISELECT(_ZTvn464_n72_N8S18575C2D1Ev,_ZTvn292_n36_N8S18575C2D1Ev)();
extern void ABISELECT(_ZTvn464_n72_N8S18575C2D0Ev,_ZTvn292_n36_N8S18575C2D0Ev)();
static  VTBL_ENTRY vtc_S18575C2[] = {
  ABISELECT(197392,125192),
  ABISELECT(194576,123400),
  ABISELECT(183568,116424),
  ABISELECT(183096,116108),
  ABISELECT(178976,113488),
  ABISELECT(178672,113304),
  ABISELECT(178352,113100),
  ABISELECT(177888,112792),
  ABISELECT(177424,112500),
  ABISELECT(178520,113208),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C2D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(174848,110868),
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C2D1Ev,_ZThn2620_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C2D0Ev,_ZThn2620_N8S18575C2D0Ev),
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C2D1Ev,_ZThn2912_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C2D0Ev,_ZThn2912_N8S18575C2D0Ev),
  ABISELECT(168288,106740),
  ABISELECT(157280,99764),
  ABISELECT(156808,99448),
  ABISELECT(152688,96828),
  ABISELECT(152384,96644),
  ABISELECT(152064,96440),
  ABISELECT(151600,96132),
  ABISELECT(151136,95840),
  ABISELECT(152232,96548),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn26288_N8S18575C2D1Ev,_ZThn16660_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn26288_N8S18575C2D0Ev,_ZThn16660_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18575C133v14Ev,
  ABISELECT(-26584,-16844),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-27048,-17152),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  ABISELECT(-30416,-19280),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn30416_N8S18575C2D1Ev,_ZThn19280_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn30416_N8S18575C2D0Ev,_ZThn19280_N8S18575C2D0Ev),
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-30880,-19572),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn30880_N8S18575C2D1Ev,_ZThn19572_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn30880_N8S18575C2D0Ev,_ZThn19572_N8S18575C2D0Ev),
  ABISELECT(125944,79888),
  ABISELECT(125776,79780),
  ABISELECT(-52576,-33320),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-177424,-112500),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  0,
  0,
  ABISELECT(-177888,-112792),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(168,108),
  ABISELECT(-178352,-113100),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  0,
  ABISELECT(-178520,-113208),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  0,
  ABISELECT(-178672,-113304),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-178976,-113488),
  0,
  ABISELECT(-178976,-113488),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C2D1Ev,_ZTv0_n16_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C2D0Ev,_ZTv0_n16_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  ABISELECT(-179272,-113672),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  ABISELECT(-179736,-113980),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-183096,-116108),
  0,
  0,
  0,
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-183096,-116108),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S18575C2D1Ev,_ZTv0_n48_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S18575C2D0Ev,_ZTv0_n48_N8S18575C2D0Ev),
  ABISELECT(-183568,-116424),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(-183568,-116424),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18575C2D1Ev,_ZTv0_n40_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S18575C2D0Ev,_ZTv0_n40_N8S18575C2D0Ev),
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-184032,-116716),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S18575C2D1Ev,_ZTvn292_n40_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S18575C2D0Ev,_ZTvn292_n40_N8S18575C2D0Ev),
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-194576,-123400),
  0,
  ABISELECT(-16688,-10608),
  ABISELECT(-16224,-10300),
  ABISELECT(-16056,-10192),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-194576,-123400),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S18575C2D1Ev,_ZTv0_n44_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S18575C2D0Ev,_ZTv0_n44_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  ABISELECT(-194720,-123496),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  ABISELECT(-195184,-123788),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S18575C2D1Ev,_ZTvn388_n44_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S18575C2D0Ev,_ZTvn388_n44_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
  0,
  0,
  ABISELECT(-197392,-125192),
  0,
  ABISELECT(-18416,-11704),
  ABISELECT(-18720,-11888),
  ABISELECT(-18872,-11984),
  ABISELECT(-19040,-12092),
  ABISELECT(-19504,-12400),
  ABISELECT(-197392,-125192),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S18575C2D1Ev,_ZTv0_n36_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S18575C2D0Ev,_ZTv0_n36_N8S18575C2D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v16Ev,
  ABISELECT(-19504,-12384),
  ABISELECT(-19336,-12276),
  ABISELECT(-18880,-11996),
  ABISELECT(-19184,-12180),
  ABISELECT(-197856,-125484),
  (VTBL_ENTRY)&(_ZTI8S18575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N8S18575C2D1Ev,_ZTvn292_n36_N8S18575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n72_N8S18575C2D0Ev,_ZTvn292_n36_N8S18575C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S18575C2[];
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C8__8S18575C2[] = {
  ABISELECT(178976,113488),
  ABISELECT(178672,113304),
  ABISELECT(178352,113100),
  ABISELECT(177888,112792),
  ABISELECT(177424,112500),
  ABISELECT(178520,113208),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(174848,110868),
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-173760,-110172),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-174224,-110480),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  0,
  ABISELECT(-174392,-110588),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__8S18575C2[] = {
  0,
  ABISELECT(-174544,-110684),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-174080,-110392),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn174384_N9S18575C11D1Ev,_ZThn110576_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn174384_N9S18575C11D0Ev,_ZThn110576_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-174384,-110576),
  0,
  ABISELECT(-174384,-110576),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-174680,-110760),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-175144,-111068),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-173928,-110296),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-173760,-110188),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn174848_N9S18575C10D1Ev,_ZThn110868_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn174848_N9S18575C10D0Ev,_ZThn110868_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-174848,-110868),
  0,
  ABISELECT(-174848,-110868),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-175144,-111052),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(-175608,-111360),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-174392,-110588),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-174224,-110480),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C8__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-173760,-110172),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-174544,-110684),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C8__8S18575C2[] = {
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-178520,-113208),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C8__8S18575C2[] = {
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-177424,-112500),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C8__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-177888,-112792),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C8__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-178352,-113100),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C8__8S18575C2[] = {
  0,
  ABISELECT(-178672,-113304),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C8__8S18575C2[] = {
  ABISELECT(174848,110868),
  ABISELECT(174544,110684),
  ABISELECT(174392,110588),
  ABISELECT(174224,110480),
  ABISELECT(173760,110172),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C8D1Ev,_ZThn113488_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn178976_N8S18575C8D0Ev,_ZThn113488_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C8__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-178976,-113488),
  0,
  ABISELECT(-178976,-113488),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C8__8S18575C2[] = {
  ABISELECT(-179272,-113672),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C8__8S18575C2[] = {
  ABISELECT(-179736,-113980),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C8__8S18575C2[] = {
  ABISELECT(173760,110188),
  ABISELECT(173928,110296),
  ABISELECT(174384,110576),
  ABISELECT(174080,110392),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void _ZN9S18575C13D1Ev();
extern void _ZN9S18575C13D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
extern void _ZN9S18575C133v14Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C13__8S18575C2[] = {
  ABISELECT(168288,106740),
  ABISELECT(157280,99764),
  ABISELECT(156808,99448),
  ABISELECT(152688,96828),
  ABISELECT(152384,96644),
  ABISELECT(152064,96440),
  ABISELECT(151600,96132),
  ABISELECT(151136,95840),
  ABISELECT(152232,96548),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C13D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
  (VTBL_ENTRY)&_ZN9S18575C133v14Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void _ZN8S18575C8D1Ev();
extern void _ZN8S18575C8D0Ev();
extern void _ZN8S18575C92v8Ev();
extern void _ZN8S18575C83v10Ev();
extern void _ZN8S18575C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(152688,96828),
  ABISELECT(152384,96644),
  ABISELECT(152064,96440),
  ABISELECT(151600,96132),
  ABISELECT(151136,95840),
  ABISELECT(152232,96548),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D1Ev,
  (VTBL_ENTRY)&_ZN8S18575C8D0Ev,
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v10Ev,
  (VTBL_ENTRY)&_ZN8S18575C83v11Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-147472,-93512),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-147936,-93820),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  0,
  ABISELECT(-148104,-93928),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[] = {
  0,
  ABISELECT(-148256,-94024),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-147792,-93732),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZThn148096_N9S18575C11D1Ev,_ZThn93916_N9S18575C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void ABISELECT(_ZThn148096_N9S18575C11D0Ev,_ZThn93916_N9S18575C11D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-148096,-93916),
  0,
  ABISELECT(-148096,-93916),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-148392,-94100),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-148856,-94408),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-147640,-93636),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-147472,-93528),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn148560_N9S18575C10D1Ev,_ZThn94208_N9S18575C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void ABISELECT(_ZThn148560_N9S18575C10D0Ev,_ZThn94208_N9S18575C10D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-148560,-94208),
  0,
  ABISELECT(-148560,-94208),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-148856,-94392),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-149320,-94700),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-148104,-93928),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-147936,-93820),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-147472,-93512),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-148256,-94024),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C108S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-152232,-96548),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-151136,-95840),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-151600,-96132),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-152064,-96440),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C89S18575C13__A1__8S18575C2[] = {
  0,
  ABISELECT(-152384,-96644),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D1Ev,_ZThn2620_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N8S18575C8D0Ev,_ZThn2620_N8S18575C8D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn152688_N8S18575C8D1Ev,_ZThn96828_N8S18575C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev)();
extern void ABISELECT(_ZThn152688_N8S18575C8D0Ev,_ZThn96828_N8S18575C8D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-152688,-96828),
  0,
  ABISELECT(-152688,-96828),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-152984,-97012),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(-153448,-97320),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev)();
extern void ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__8S18575C89S18575C13__A1__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI8S18575C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D1Ev,_ZThn2912_N8S18575C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N8S18575C8D0Ev,_ZThn2912_N8S18575C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18575C149S18575C13__8S18575C2[] = {
  ABISELECT(125944,79888),
  ABISELECT(125776,79780),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C149S18575C13__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-125776,-79780),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__9S18575C149S18575C13__8S18575C2[] = {
  0,
  ABISELECT(-125944,-79888),
  (VTBL_ENTRY)&(_ZTI9S18575C14[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__9S18575C13__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-151600,-96132),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__9S18575C13__8S18575C2[] = {
  0,
  ABISELECT(-152232,-96548),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__9S18575C13__8S18575C2[] = {
  0,
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-151136,-95840),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C13__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-152064,-96440),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C13__8S18575C2[] = {
  0,
  ABISELECT(-152384,-96644),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C108S18575C8__9S18575C13__8S18575C2[] = {
  ABISELECT(148560,94208),
  ABISELECT(148256,94024),
  ABISELECT(148104,93928),
  ABISELECT(147936,93820),
  ABISELECT(147472,93512),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D1Ev,_ZThn2620_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S18575C13D0Ev,_ZThn2620_N9S18575C13D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn152688_N9S18575C13D1Ev,_ZThn96828_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn152688_N9S18575C13D0Ev,_ZThn96828_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__A1__9S18575C13__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-152688,-96828),
  0,
  ABISELECT(-152688,-96828),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A2__9S18575C13__8S18575C2[] = {
  ABISELECT(-152984,-97012),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A3__9S18575C13__8S18575C2[] = {
  ABISELECT(-153448,-97320),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13__8S18575C2[] = {
  ABISELECT(147472,93528),
  ABISELECT(147640,93636),
  ABISELECT(148096,93916),
  ABISELECT(147792,93732),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D1Ev,_ZThn2912_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S18575C13D0Ev,_ZThn2912_N9S18575C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S18575C14__9S18575C13__8S18575C2[] = {
  ABISELECT(125944,79888),
  ABISELECT(125776,79780),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn156808_N9S18575C13D1Ev,_ZThn99448_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn156808_N9S18575C13D0Ev,_ZThn99448_N9S18575C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C13__8S18575C2[] = {
  ABISELECT(-156808,-99448),
  0,
  0,
  0,
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(-156808,-99448),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn157280_N9S18575C13D1Ev,_ZThn99764_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn157280_N9S18575C13D0Ev,_ZThn99764_N9S18575C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__A1__9S18575C13__8S18575C2[] = {
  ABISELECT(-157280,-99764),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(-157280,-99764),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev),
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__A1__9S18575C13__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-157744,-100056),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D1Ev,_ZTvn292_n40_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C13D0Ev,_ZTvn292_n40_N9S18575C13D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZThn168288_N9S18575C13D1Ev,_ZThn106740_N9S18575C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev)();
extern void ABISELECT(_ZThn168288_N9S18575C13D0Ev,_ZThn106740_N9S18575C13D0Ev)() __attribute__((weak));
extern void _ZN9S18575C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C16__9S18575C13__8S18575C2[] = {
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-168288,-106740),
  0,
  ABISELECT(-16688,-10608),
  ABISELECT(-16224,-10300),
  ABISELECT(-16056,-10192),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  ABISELECT(-168288,-106740),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C16__A3__9S18575C13__8S18575C2[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  ABISELECT(-168432,-106836),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev)();
extern void _ZN9S18575C123v12Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C129S18575C16__9S18575C13__8S18575C2[] = {
  ABISELECT(-168896,-107128),
  (VTBL_ENTRY)&(_ZTI9S18575C13[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D1Ev,_ZTvn388_n44_N9S18575C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N9S18575C13D0Ev,_ZTvn388_n44_N9S18575C13D0Ev),
  (VTBL_ENTRY)&_ZN9S18575C123v12Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__8S18575C2[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C3__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C3__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C3__8S18575C2[] = {
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C3__8S18575C2[] = {
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C2[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__8S18575C6__8S18575C2[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S18575C6[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void _ZN9S18575C15D1Ev();
extern void _ZN9S18575C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C15__8S18575C2[] = {
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C15D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C15__8S18575C2[] = {
  0,
  ABISELECT(4424,2804),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev)();
extern void ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C15__8S18575C2[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C15__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4120,2620),
  0,
  ABISELECT(4120,2620),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D1Ev,_ZTv0_n16_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C15D0Ev,_ZTv0_n16_N9S18575C15D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C15__8S18575C2[] = {
  ABISELECT(3824,2436),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C15__8S18575C2[] = {
  ABISELECT(3360,2128),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C15__8S18575C2[] = {
  0,
  ABISELECT(4576,2900),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C15__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(4744,3008),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C15__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(5208,3316),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C15__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S18575C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D1Ev,_ZTvn292_n40_N9S18575C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C15D0Ev,_ZTvn292_n40_N9S18575C15D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void _ZN9S18575C10D1Ev();
extern void _ZN9S18575C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C10__A2__8S18575C2[] = {
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C10D0Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C10__A3__8S18575C2[] = {
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C10__A3__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(5680,3632),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C10__A3__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(5216,3324),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A3__8S18575C2[] = {
  0,
  ABISELECT(5048,3216),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C10__A3__8S18575C2[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(5360,3412),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5056,3228),
  0,
  ABISELECT(5056,3228),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(4760,3044),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(4296,2736),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(5512,3508),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C10__A2__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(5680,3616),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4592,2936),
  0,
  ABISELECT(4592,2936),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(4296,2752),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(3832,2444),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(5048,3216),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(5216,3324),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A1__9S18575C10__A2__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(5680,3632),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__A1__9S18575C10__A2__8S18575C2[] = {
  0,
  ABISELECT(4896,3120),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C10__A2__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D1Ev,_ZThn292_N9S18575C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C10D0Ev,_ZThn292_N9S18575C10D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C16D1Ev();
extern void _ZN9S18575C16D0Ev();
extern void _ZN9S18575C163v13Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C16__8S18575C2[] = {
  ABISELECT(-16688,-10608),
  ABISELECT(-16224,-10300),
  ABISELECT(-16056,-10192),
  ABISELECT(-15600,-9912),
  ABISELECT(-11008,-6976),
  ABISELECT(-11480,-7292),
  ABISELECT(-15904,-10096),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C16D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C163v13Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C16__A4__8S18575C2[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C16__A4__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(16832,10704),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C16__A4__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(16368,10396),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A4__8S18575C2[] = {
  0,
  ABISELECT(16200,10288),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C16__A4__8S18575C2[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C16__8S18575C2[] = {
  0,
  ABISELECT(15904,10096),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C15__9S18575C16__8S18575C2[] = {
  ABISELECT(11480,7292),
  0,
  0,
  0,
  ABISELECT(-5208,-3316),
  ABISELECT(-4744,-3008),
  ABISELECT(-4576,-2900),
  ABISELECT(-4120,-2620),
  ABISELECT(472,316),
  ABISELECT(-4424,-2804),
  ABISELECT(11480,7292),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D1Ev,_ZTv0_n48_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S18575C16D0Ev,_ZTv0_n48_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C102v9Ev();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C10__9S18575C16__8S18575C2[] = {
  ABISELECT(11008,6976),
  0,
  0,
  ABISELECT(-4592,-2936),
  ABISELECT(-4896,-3120),
  ABISELECT(-5048,-3216),
  ABISELECT(-5216,-3324),
  ABISELECT(-5680,-3632),
  ABISELECT(11008,6976),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C102v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D1Ev,_ZTv0_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S18575C16D0Ev,_ZTv0_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C16__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(15600,9912),
  0,
  ABISELECT(15600,9912),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D1Ev,_ZTv0_n16_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C16D0Ev,_ZTv0_n16_N9S18575C16D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C16__8S18575C2[] = {
  ABISELECT(15304,9728),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A1__9S18575C16__8S18575C2[] = {
  ABISELECT(14840,9420),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A2__9S18575C16__8S18575C2[] = {
  0,
  ABISELECT(16056,10192),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C16__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(16224,10300),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__A2__9S18575C16__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(16688,10608),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C10__9S18575C16__8S18575C2[] = {
  ABISELECT(-5680,-3616),
  ABISELECT(-5512,-3508),
  ABISELECT(-5056,-3228),
  ABISELECT(-5360,-3412),
  ABISELECT(10544,6684),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D1Ev,_ZTvn292_n40_N9S18575C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S18575C16D0Ev,_ZTvn292_n40_N9S18575C16D0Ev),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C3__A1__9S18575C16__8S18575C2[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16200,-10288),
  ABISELECT(-16368,-10396),
  ABISELECT(-16832,-10704),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S18575C16[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
extern void _ZN9S18575C17D1Ev();
extern void _ZN9S18575C17D0Ev();
extern void _ZN9S18575C173v15Ev();
extern void _ZN9S18575C173v16Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C17__8S18575C2[] = {
  ABISELECT(-18416,-11704),
  ABISELECT(-18720,-11888),
  ABISELECT(-18872,-11984),
  ABISELECT(-19040,-12092),
  ABISELECT(-19504,-12400),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C17D0Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v15Ev,
  (VTBL_ENTRY)&_ZN9S18575C173v16Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C39S18575C17__A5__8S18575C2[] = {
  ABISELECT(-18720,-11888),
  ABISELECT(-18872,-11984),
  ABISELECT(-19040,-12092),
  ABISELECT(-19504,-12400),
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__8S18575C39S18575C17__A5__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(19504,12400),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__8S18575C39S18575C17__A5__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(19040,12092),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__8S18575C39S18575C17__A5__8S18575C2[] = {
  0,
  ABISELECT(18872,11984),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__8S18575C39S18575C17__A5__8S18575C2[] = {
  0,
  ABISELECT(18720,11888),
  (VTBL_ENTRY)&(_ZTI8S18575C3[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN9S18575C11D1Ev();
extern void _ZN9S18575C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(-19504,-12384),
  ABISELECT(-19336,-12276),
  ABISELECT(-18880,-11996),
  ABISELECT(-19184,-12180),
  0,
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN9S18575C11D1Ev,
  (VTBL_ENTRY)&_ZN9S18575C11D0Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C119S18575C17__A3__8S18575C2[] = {
  0,
  ABISELECT(19184,12180),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(18880,11996),
  0,
  ABISELECT(18880,11996),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(18584,11812),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(18120,11504),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C119S18575C17__A3__8S18575C2[] = {
  0,
  ABISELECT(19336,12276),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C119S18575C17__A3__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(19504,12384),
  (VTBL_ENTRY)&(_ZTI9S18575C11[0]),
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C5__9S18575C17__8S18575C2[] = {
  0,
  0,
  0,
  ABISELECT(19504,12400),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S18575C6__9S18575C17__8S18575C2[] = {
  ABISELECT(168,108),
  ABISELECT(19040,12092),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C4__A1__9S18575C17__8S18575C2[] = {
  0,
  ABISELECT(18872,11984),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
extern void _ZN8S18575C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C7__9S18575C17__8S18575C2[] = {
  0,
  ABISELECT(18720,11888),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev)();
extern void ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S18575C11__9S18575C17__8S18575C2[] = {
  ABISELECT(-19504,-12384),
  ABISELECT(-19336,-12276),
  ABISELECT(-18880,-11996),
  ABISELECT(-19184,-12180),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D1Ev,_ZThn292_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S18575C17D0Ev,_ZThn292_N9S18575C17D0Ev),
};
extern void _ZN8S18575C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev)();
extern void _ZN8S18575C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C9__9S18575C17__8S18575C2[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(18416,11704),
  0,
  ABISELECT(18416,11704),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D1Ev,_ZTv0_n16_N9S18575C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S18575C17D0Ev,_ZTv0_n16_N9S18575C17D0Ev),
  (VTBL_ENTRY)&_ZN8S18575C92v8Ev,
};
extern void _ZN8S18575C52v4Ev();
extern void _ZN8S18575C52v5Ev();
extern void _ZN8S18575C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C58S18575C9__A1__9S18575C17__8S18575C2[] = {
  ABISELECT(18120,11520),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C52v4Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v5Ev,
  (VTBL_ENTRY)&_ZN8S18575C52v6Ev,
};
extern void _ZN8S18575C42v3Ev();
static  VTBL_ENTRY _tg__ZTV8S18575C48S18575C9__A2__9S18575C17__8S18575C2[] = {
  ABISELECT(17656,11212),
  (VTBL_ENTRY)&(_ZTI9S18575C17[0]),
  (VTBL_ENTRY)&_ZN8S18575C42v3Ev,
};
static  VTT_ENTRY vtt_S18575C2[] = {
  {&(_ZTV8S18575C2[12]),  12,236},
  {&(_tg__ZTV8S18575C8__8S18575C2[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C8__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C8__A1__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C8__A1__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C8__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C8__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C8__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C8__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C8__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C8__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C8__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C8__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C8__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C8__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C8__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C8__8S18575C2[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C8__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C8__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C8__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C8__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C8__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C8__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C8__8S18575C2[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C8__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C13__8S18575C2[11]),  11,18},
  {&(_tg__ZTV8S18575C89S18575C13__A1__8S18575C2[8]),  8,14},
  {&(_tg__ZTV9S18575C108S18575C89S18575C13__A1__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C108S18575C89S18575C13__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C108S18575C89S18575C13__A1__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C108S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C108S18575C89S18575C13__A1__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C4__8S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C3__8S18575C89S18575C13__A1__8S18575C2[7]),  7,8},
  {&(_tg__ZTV8S18575C5__8S18575C89S18575C13__A1__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C89S18575C13__A1__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C7__8S18575C89S18575C13__A1__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C10__8S18575C89S18575C13__A1__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__8S18575C89S18575C13__A1__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__8S18575C89S18575C13__A1__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__8S18575C89S18575C13__A1__8S18575C2[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C10__8S18575C89S18575C13__A1__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C149S18575C13__8S18575C2[4]),  4,4},
  {&(_tg__ZTV8S18575C6__9S18575C149S18575C13__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__9S18575C149S18575C13__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C5__9S18575C13__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C4__9S18575C13__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C3__9S18575C13__8S18575C2[7]),  7,8},
  {&(_tg__ZTV8S18575C6__9S18575C13__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C7__9S18575C13__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C108S18575C8__9S18575C13__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C9__A1__9S18575C13__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A2__9S18575C13__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A3__9S18575C13__8S18575C2[2]),  2,3},
  {&(_tg__ZTV9S18575C119S18575C108S18575C8__9S18575C13__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C14__9S18575C13__8S18575C2[4]),  4,4},
  {&(_tg__ZTV9S18575C15__9S18575C13__8S18575C2[12]),  12,17},
  {&(_tg__ZTV9S18575C10__A1__9S18575C13__8S18575C2[10]),  10,14},
  {&(_tg__ZTV9S18575C119S18575C10__A1__9S18575C13__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C16__9S18575C13__8S18575C2[14]),  14,18},
  {&(_tg__ZTV8S18575C39S18575C16__A3__9S18575C13__8S18575C2[6]),  6,7},
  {&(_tg__ZTV9S18575C129S18575C16__9S18575C13__8S18575C2[2]),  2,6},
  {&(_ZTV8S18575C2[101]),  101,236},
  {&(_ZTV8S18575C2[107]),  107,236},
  {&(_ZTV8S18575C2[113]),  113,236},
  {&(_ZTV8S18575C2[116]),  116,236},
  {&(_ZTV8S18575C2[120]),  120,236},
  {&(_ZTV8S18575C2[33]),  33,236},
  {&(_ZTV8S18575C2[130]),  130,236},
  {&(_ZTV8S18575C2[136]),  136,236},
  {&(_ZTV8S18575C2[141]),  141,236},
  {&(_ZTV8S18575C2[43]),  43,236},
  {&(_ZTV8S18575C2[56]),  56,236},
  {&(_ZTV8S18575C2[78]),  78,236},
  {&(_ZTV8S18575C2[88]),  88,236},
  {&(_ZTV8S18575C2[94]),  94,236},
  {&(_ZTV8S18575C2[154]),  154,236},
  {&(_ZTV8S18575C2[169]),  169,236},
  {&(_ZTV8S18575C2[179]),  179,236},
  {&(_ZTV8S18575C2[195]),  195,236},
  {&(_ZTV8S18575C2[205]),  205,236},
  {&(_ZTV8S18575C2[208]),  208,236},
  {&(_ZTV8S18575C2[223]),  223,236},
  {&(_ZTV8S18575C2[234]),  234,236},
  {&(_tg__ZTV8S18575C3__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C3__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C3__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__8S18575C6__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C15__8S18575C2[8]),  8,13},
  {&(_tg__ZTV8S18575C7__9S18575C15__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C10__9S18575C15__8S18575C2[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C15__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C15__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C15__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C15__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C15__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C15__8S18575C2[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C15__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C10__A2__8S18575C2[7]),  7,11},
  {&(_tg__ZTV8S18575C39S18575C10__A3__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C10__A3__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C10__A3__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C10__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C10__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C10__A2__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C10__A2__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C10__A2__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C10__A2__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C10__A2__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C9__9S18575C10__A2__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C10__A2__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C10__A2__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C10__A2__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A1__9S18575C10__A2__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C7__A1__9S18575C10__A2__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C10__A2__8S18575C2[6]),  6,8},
  {&(_tg__ZTV9S18575C16__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C39S18575C16__A4__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C16__A4__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C16__A4__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C16__A4__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C16__A4__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__9S18575C16__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C15__9S18575C16__8S18575C2[12]),  12,17},
  {&(_tg__ZTV9S18575C10__9S18575C16__8S18575C2[10]),  10,14},
  {&(_tg__ZTV8S18575C9__9S18575C16__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C16__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A1__9S18575C16__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A2__9S18575C16__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C16__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__A2__9S18575C16__8S18575C2[5]),  5,8},
  {&(_tg__ZTV9S18575C119S18575C10__9S18575C16__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C3__A1__9S18575C16__8S18575C2[6]),  6,7},
  {&(_tg__ZTV9S18575C17__8S18575C2[7]),  7,12},
  {&(_tg__ZTV8S18575C39S18575C17__A5__8S18575C2[6]),  6,7},
  {&(_tg__ZTV8S18575C5__8S18575C39S18575C17__A5__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__8S18575C39S18575C17__A5__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__8S18575C39S18575C17__A5__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__8S18575C39S18575C17__A5__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C119S18575C17__A3__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C7__9S18575C119S18575C17__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C9__9S18575C119S18575C17__A3__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__9S18575C119S18575C17__A3__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__9S18575C119S18575C17__A3__8S18575C2[2]),  2,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C119S18575C17__A3__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C6__9S18575C119S18575C17__A3__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C5__9S18575C17__8S18575C2[5]),  5,8},
  {&(_tg__ZTV8S18575C6__9S18575C17__8S18575C2[3]),  3,3},
  {&(_tg__ZTV8S18575C4__A1__9S18575C17__8S18575C2[3]),  3,4},
  {&(_tg__ZTV8S18575C7__9S18575C17__8S18575C2[3]),  3,4},
  {&(_tg__ZTV9S18575C11__9S18575C17__8S18575C2[6]),  6,8},
  {&(_tg__ZTV8S18575C9__9S18575C17__8S18575C2[9]),  9,13},
  {&(_tg__ZTV8S18575C58S18575C9__A1__9S18575C17__8S18575C2[2]),  2,5},
  {&(_tg__ZTV8S18575C48S18575C9__A2__9S18575C17__8S18575C2[2]),  2,3},
};
extern VTBL_ENTRY _ZTI8S18575C2[];
extern  VTBL_ENTRY _ZTV8S18575C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18575C2[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D0Ev,_ZTv0_n40_N9S18575C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D0Ev,_ZThn316_N9S18575C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C15D1Ev,_ZTv0_n40_N9S18575C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S18575C15D1Ev,_ZThn316_N9S18575C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D0Ev,_ZTv0_n44_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168288_N9S18575C13D0Ev,_ZThn106740_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S18575C13D1Ev,_ZTv0_n44_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168288_N9S18575C13D1Ev,_ZThn106740_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D0Ev,_ZTv0_n40_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157280_N9S18575C13D0Ev,_ZThn99764_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S18575C13D1Ev,_ZTv0_n40_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn157280_N9S18575C13D1Ev,_ZThn99764_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D0Ev,_ZTv0_n48_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn156808_N9S18575C13D0Ev,_ZThn99448_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S18575C13D1Ev,_ZTv0_n48_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn156808_N9S18575C13D1Ev,_ZThn99448_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D0Ev,_ZTv0_n16_N9S18575C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N9S18575C13D0Ev,_ZThn96828_N9S18575C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C13D1Ev,_ZTv0_n16_N9S18575C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N9S18575C13D1Ev,_ZThn96828_N9S18575C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D0Ev,_ZTv0_n16_N8S18575C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N8S18575C8D0Ev,_ZThn96828_N8S18575C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C8D0Ev,_ZThn113488_N8S18575C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C8D1Ev,_ZTv0_n16_N8S18575C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152688_N8S18575C8D1Ev,_ZThn96828_N8S18575C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C8D1Ev,_ZThn113488_N8S18575C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D0Ev,_ZTv0_n16_N9S18575C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148560_N9S18575C10D0Ev,_ZThn94208_N9S18575C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174848_N9S18575C10D0Ev,_ZThn110868_N9S18575C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C10D1Ev,_ZTv0_n16_N9S18575C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148560_N9S18575C10D1Ev,_ZThn94208_N9S18575C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174848_N9S18575C10D1Ev,_ZThn110868_N9S18575C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D0Ev,_ZTv0_n16_N9S18575C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148096_N9S18575C11D0Ev,_ZThn93916_N9S18575C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174384_N9S18575C11D0Ev,_ZThn110576_N9S18575C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S18575C11D1Ev,_ZTv0_n16_N9S18575C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn148096_N9S18575C11D1Ev,_ZThn93916_N9S18575C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn174384_N9S18575C11D1Ev,_ZThn110576_N9S18575C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S18575C2D0Ev,_ZTv0_n36_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn197392_N8S18575C2D0Ev,_ZThn125192_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S18575C2D1Ev,_ZTv0_n36_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn197392_N8S18575C2D1Ev,_ZThn125192_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S18575C2D0Ev,_ZTv0_n44_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn194576_N8S18575C2D0Ev,_ZThn123400_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S18575C2D1Ev,_ZTv0_n44_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn194576_N8S18575C2D1Ev,_ZThn123400_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18575C2D0Ev,_ZTv0_n40_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183568_N8S18575C2D0Ev,_ZThn116424_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S18575C2D1Ev,_ZTv0_n40_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183568_N8S18575C2D1Ev,_ZThn116424_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S18575C2D0Ev,_ZTv0_n48_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183096_N8S18575C2D0Ev,_ZThn116108_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S18575C2D1Ev,_ZTv0_n48_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn183096_N8S18575C2D1Ev,_ZThn116108_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C2D0Ev,_ZTv0_n16_N8S18575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C2D0Ev,_ZThn113488_N8S18575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S18575C2D1Ev,_ZTv0_n16_N8S18575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn178976_N8S18575C2D1Ev,_ZThn113488_N8S18575C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18575C2 = {  "S18575C2", // class name
  bases_S18575C2, 46,
  &(vtc_S18575C2[0]), // expected_vtbl_contents
  &(vtt_S18575C2[0]), // expected_vtt_contents
  ABISELECT(204768,129872), // object size
  NSPAIRA(_ZTI8S18575C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18575C2),236, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18575C2),184, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18575C1  {
  int s18575c1f0;
  ::S18575C2 s18575c1f1;
  short s18575c1f2;
  ::S19763C23 s18575c1f3;
  ::S18575C7 s18575c1f4;
  int s18575c1f5;
  virtual void  v1(); // _ZN8S18575C12v1Ev
  virtual void  v2(); // _ZN8S18575C12v2Ev
  ~S18575C1(); // tgen
  S18575C1(); // tgen
};
//SIG(1 S18575C1) C1{ v1 v2 Fi FC2{ VBC3{ BC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC5{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} VBC6{ VBC4 Fp FC4 FL:3} VBC7{ v7 FL FD Fp Fc FC4 Fp[2] Fl[8] Fs Fp FL:64} FC7 Fs Fi[2]} BC8{ VBC4 VBC3 BC9{ BC7 BC5 BC4 vd v8 Fl FL Fp[8] FC3 Fp Fi FC3 Fi} BC10{ VBC9 VBC4 VBC6 BC3 BC11{ VBC7 VBC9 VBC4 VBC6 FL:44 Fp Fi FC3 Fl[2] Fi[3] FC9 Fc:7 FC12{ BC7 vd v12 FC6 Fi Fp Fi}} v9 FC9 FL Fc:7} v10 v11 FC11 Fs FL:8} BC13{ VBC5 BC8 BC14{ VBC6 FC11 FL:6 Fi Fl} VBC15{ VBC7 BC5 VBC10 Fc:8 Fi} VBC16{ BC4 VBC7 VBC15 BC3 BC12 vd v13 Fi FC3 Fi Fs FL:8 Fi} v14 FC15 FC8} VBC17{ BC3 BC11 vd v15 v16 Fi:13 Fl Fi Fp[2] FL FC5} FC18{ BC5 VBC8 BC4 vd Fi FU19{ m Fc:8 Fp Fs FD Fp Fp Fl[5]} Fi FC8 Fc[6] Fl Fi Fi:0} Fi Fi Fi Fi Fi Fc Fi Fp Fp Fi FC6} Fs FU20{ m Fi:8 Fi Fp FL Fp Fp Fi} FC7 Fi}


void  S18575C1 ::v1(){vfunc_called(this, "_ZN8S18575C12v1Ev");}
void  S18575C1 ::v2(){vfunc_called(this, "_ZN8S18575C12v2Ev");}
S18575C1 ::~S18575C1(){ note_dtor("S18575C1", this);} // tgen
S18575C1 ::S18575C1(){ note_ctor("S18575C1", this);} // tgen

static void Test_S18575C1()
{
  extern Class_Descriptor cd_S18575C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12821,32521)];
    init_test(&cd_S18575C1, buf);
    S18575C1 *dp, &lv = *(dp=new (buf) S18575C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(205120,130080), "sizeof(S18575C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18575C1)");
    check_field_offset(lv, s18575c1f0, ABISELECT(8,4), "S18575C1.s18575c1f0");
    check_field_offset(lv, s18575c1f1, ABISELECT(16,8), "S18575C1.s18575c1f1");
    check_field_offset(lv, s18575c1f2, ABISELECT(204784,129880), "S18575C1.s18575c1f2");
    check_field_offset(lv, s18575c1f3, ABISELECT(204792,129884), "S18575C1.s18575c1f3");
    check_field_offset(lv, s18575c1f4, ABISELECT(204800,129892), "S18575C1.s18575c1f4");
    check_field_offset(lv, s18575c1f5, ABISELECT(205104,130076), "S18575C1.s18575c1f5");
    test_class_info(&lv, &cd_S18575C1);
    dp->~S18575C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18575C1(Test_S18575C1, "S18575C1", ABISELECT(205120,130080));

#else // __cplusplus

extern void _ZN8S18575C1C1Ev();
extern void _ZN8S18575C1D1Ev();
Name_Map name_map_S18575C1[] = {
  NSPAIR(_ZN8S18575C1C1Ev),
  NSPAIR(_ZN8S18575C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18575C1[];
extern void _ZN8S18575C12v1Ev();
extern void _ZN8S18575C12v2Ev();
static  VTBL_ENTRY vtc_S18575C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18575C1[0]),
  (VTBL_ENTRY)&_ZN8S18575C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18575C12v2Ev,
};
extern VTBL_ENTRY _ZTI8S18575C1[];
extern  VTBL_ENTRY _ZTV8S18575C1[];
Class_Descriptor cd_S18575C1 = {  "S18575C1", // class name
  0,0,//no base classes
  &(vtc_S18575C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(205120,130080), // object size
  NSPAIRA(_ZTI8S18575C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18575C1),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  S10007C3  {
  void *s10007c3f0;
  int s10007c3f1[10];
};
//SIG(-1 S10007C3) C1{ Fp Fi[10]}



static void Test_S10007C3()
{
  {
    init_simple_test("S10007C3");
    S10007C3 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S10007C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C3)");
    check_field_offset(lv, s10007c3f0, 0, "S10007C3.s10007c3f0");
    check_field_offset(lv, s10007c3f1, ABISELECT(8,4), "S10007C3.s10007c3f1");
  }
}
static Arrange_To_Call_Me vS10007C3(Test_S10007C3, "S10007C3", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C6_nt  {
  int s10007c6f0[4];
};
//SIG(-1 S10007C6_nt) C1{ Fi[4]}



//skip512 S10007C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C5  {
  int s10007c5f0[8];
  ::S10007C6_nt s10007c5f1;
};
//SIG(1 S10007C5) C1{ Fi[8] FC2{ Fi[4]}}



static void Test_S10007C5()
{
  {
    init_simple_test("S10007C5");
    S10007C5 lv;
    check2(sizeof(lv), 48, "sizeof(S10007C5)");
    check2(__alignof__(lv), 4, "__alignof__(S10007C5)");
    check_field_offset(lv, s10007c5f0, 0, "S10007C5.s10007c5f0");
    check_field_offset(lv, s10007c5f1, 32, "S10007C5.s10007c5f1");
  }
}
static Arrange_To_Call_Me vS10007C5(Test_S10007C5, "S10007C5", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C7  {
  int s10007c7f0;
  void *s10007c7f1[2];
  int s10007c7f2[2];
};
//SIG(-1 S10007C7) C1{ Fi Fp[2] Fi[2]}



static void Test_S10007C7()
{
  {
    init_simple_test("S10007C7");
    S10007C7 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S10007C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C7)");
    check_field_offset(lv, s10007c7f0, 0, "S10007C7.s10007c7f0");
    check_field_offset(lv, s10007c7f1, ABISELECT(8,4), "S10007C7.s10007c7f1");
    check_field_offset(lv, s10007c7f2, ABISELECT(24,12), "S10007C7.s10007c7f2");
  }
}
static Arrange_To_Call_Me vS10007C7(Test_S10007C7, "S10007C7", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C9  {
  void *s10007c9f0;
  int s10007c9f1;
  void *s10007c9f2;
  int s10007c9f3;
  void *s10007c9f4;
  int s10007c9f5;
  void *s10007c9f6;
  int s10007c9f7;
  void *s10007c9f8;
  int s10007c9f9[2];
};
//SIG(-1 S10007C9) C1{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]}



static void Test_S10007C9()
{
  {
    init_simple_test("S10007C9");
    S10007C9 lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S10007C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C9)");
    check_field_offset(lv, s10007c9f0, 0, "S10007C9.s10007c9f0");
    check_field_offset(lv, s10007c9f1, ABISELECT(8,4), "S10007C9.s10007c9f1");
    check_field_offset(lv, s10007c9f2, ABISELECT(16,8), "S10007C9.s10007c9f2");
    check_field_offset(lv, s10007c9f3, ABISELECT(24,12), "S10007C9.s10007c9f3");
    check_field_offset(lv, s10007c9f4, ABISELECT(32,16), "S10007C9.s10007c9f4");
    check_field_offset(lv, s10007c9f5, ABISELECT(40,20), "S10007C9.s10007c9f5");
    check_field_offset(lv, s10007c9f6, ABISELECT(48,24), "S10007C9.s10007c9f6");
    check_field_offset(lv, s10007c9f7, ABISELECT(56,28), "S10007C9.s10007c9f7");
    check_field_offset(lv, s10007c9f8, ABISELECT(64,32), "S10007C9.s10007c9f8");
    check_field_offset(lv, s10007c9f9, ABISELECT(72,36), "S10007C9.s10007c9f9");
  }
}
static Arrange_To_Call_Me vS10007C9(Test_S10007C9, "S10007C9", ABISELECT(80,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C10  {
  void *s10007c10f0[6];
  int s10007c10f1;
  void *s10007c10f2[3];
  int s10007c10f3[2];
  void *s10007c10f4[3];
  int s10007c10f5[2];
};
//SIG(-1 S10007C10) C1{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]}



static void Test_S10007C10()
{
  {
    init_simple_test("S10007C10");
    S10007C10 lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S10007C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C10)");
    check_field_offset(lv, s10007c10f0, 0, "S10007C10.s10007c10f0");
    check_field_offset(lv, s10007c10f1, ABISELECT(48,24), "S10007C10.s10007c10f1");
    check_field_offset(lv, s10007c10f2, ABISELECT(56,28), "S10007C10.s10007c10f2");
    check_field_offset(lv, s10007c10f3, ABISELECT(80,40), "S10007C10.s10007c10f3");
    check_field_offset(lv, s10007c10f4, ABISELECT(88,48), "S10007C10.s10007c10f4");
    check_field_offset(lv, s10007c10f5, ABISELECT(112,60), "S10007C10.s10007c10f5");
  }
}
static Arrange_To_Call_Me vS10007C10(Test_S10007C10, "S10007C10", ABISELECT(120,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C11  {
  int s10007c11f0[2];
  void *s10007c11f1;
  int s10007c11f2[2];
};
//SIG(-1 S10007C11) C1{ Fi[2] Fp Fi[2]}



static void Test_S10007C11()
{
  {
    init_simple_test("S10007C11");
    S10007C11 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S10007C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C11)");
    check_field_offset(lv, s10007c11f0, 0, "S10007C11.s10007c11f0");
    check_field_offset(lv, s10007c11f1, 8, "S10007C11.s10007c11f1");
    check_field_offset(lv, s10007c11f2, ABISELECT(16,12), "S10007C11.s10007c11f2");
  }
}
static Arrange_To_Call_Me vS10007C11(Test_S10007C11, "S10007C11", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C8  {
  ::S10007C9 s10007c8f0;
  ::S10007C10 s10007c8f1;
  ::S10007C11 s10007c8f2;
  int s10007c8f3[10];
};
//SIG(-1 S10007C8) C1{ FC2{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC3{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC4{ Fi[2] Fp Fi[2]} Fi[10]}



static void Test_S10007C8()
{
  {
    init_simple_test("S10007C8");
    S10007C8 lv;
    check2(sizeof(lv), ABISELECT(264,172), "sizeof(S10007C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C8)");
    check_field_offset(lv, s10007c8f0, 0, "S10007C8.s10007c8f0");
    check_field_offset(lv, s10007c8f1, ABISELECT(80,44), "S10007C8.s10007c8f1");
    check_field_offset(lv, s10007c8f2, ABISELECT(200,112), "S10007C8.s10007c8f2");
    check_field_offset(lv, s10007c8f3, ABISELECT(224,132), "S10007C8.s10007c8f3");
  }
}
static Arrange_To_Call_Me vS10007C8(Test_S10007C8, "S10007C8", ABISELECT(264,172));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C4  {
  void *s10007c4f0[2];
  ::S10007C5 s10007c4f1[3];
  int s10007c4f2[3];
  void *s10007c4f3[6];
  int s10007c4f4[2];
  void *s10007c4f5;
  int s10007c4f6;
  ::S10007C7 s10007c4f7;
  void *s10007c4f8[4];
  int s10007c4f9[2];
  void *s10007c4f10[3];
  ::S10007C8 s10007c4f11;
};
//SIG(-1 S10007C4) C1{ Fp[2] FC2{ Fi[8] FC3{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC4{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC5{ FC6{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC7{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC8{ Fi[2] Fp Fi[2]} Fi[10]}}



static void Test_S10007C4()
{
  {
    init_simple_test("S10007C4");
    S10007C4 lv;
    check2(sizeof(lv), ABISELECT(608,432), "sizeof(S10007C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C4)");
    check_field_offset(lv, s10007c4f0, 0, "S10007C4.s10007c4f0");
    check_field_offset(lv, s10007c4f1, ABISELECT(16,8), "S10007C4.s10007c4f1");
    check_field_offset(lv, s10007c4f2, ABISELECT(160,152), "S10007C4.s10007c4f2");
    check_field_offset(lv, s10007c4f3, ABISELECT(176,164), "S10007C4.s10007c4f3");
    check_field_offset(lv, s10007c4f4, ABISELECT(224,188), "S10007C4.s10007c4f4");
    check_field_offset(lv, s10007c4f5, ABISELECT(232,196), "S10007C4.s10007c4f5");
    check_field_offset(lv, s10007c4f6, ABISELECT(240,200), "S10007C4.s10007c4f6");
    check_field_offset(lv, s10007c4f7, ABISELECT(248,204), "S10007C4.s10007c4f7");
    check_field_offset(lv, s10007c4f8, ABISELECT(280,224), "S10007C4.s10007c4f8");
    check_field_offset(lv, s10007c4f9, ABISELECT(312,240), "S10007C4.s10007c4f9");
    check_field_offset(lv, s10007c4f10, ABISELECT(320,248), "S10007C4.s10007c4f10");
    check_field_offset(lv, s10007c4f11, ABISELECT(344,260), "S10007C4.s10007c4f11");
  }
}
static Arrange_To_Call_Me vS10007C4(Test_S10007C4, "S10007C4", ABISELECT(608,432));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C12  {
  __tsi64 s10007c12f0[3];
  char s10007c12f1;
};
//SIG(-1 S10007C12) C1{ FL[3] Fc}



static void Test_S10007C12()
{
  {
    init_simple_test("S10007C12");
    S10007C12 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S10007C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C12)");
    check_field_offset(lv, s10007c12f0, 0, "S10007C12.s10007c12f0");
    check_field_offset(lv, s10007c12f1, 24, "S10007C12.s10007c12f1");
  }
}
static Arrange_To_Call_Me vS10007C12(Test_S10007C12, "S10007C12", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C2  {
  char s10007c2f0[3];
  ::S10007C3 s10007c2f1;
  ::S10007C4 s10007c2f2;
  ::S10007C8 s10007c2f3;
  ::S10007C12 s10007c2f4;
  ::S10007C6_nt s10007c2f5;
  int s10007c2f6;
  void *s10007c2f7;
  int s10007c2f8;
  virtual  ~S10007C2(); // _ZN8S10007C2D1Ev
  virtual void  v6(); // _ZN8S10007C22v6Ev
  virtual void  v7(); // _ZN8S10007C22v7Ev
  virtual void  v8(); // _ZN8S10007C22v8Ev
  virtual void  v9(); // _ZN8S10007C22v9Ev
  virtual void  v10(); // _ZN8S10007C23v10Ev
  virtual void  v11(); // _ZN8S10007C23v11Ev
  virtual void  v12(); // _ZN8S10007C23v12Ev
  S10007C2(); // tgen
};
//SIG(-1 S10007C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fc[3] FC2{ Fp Fi[10]} FC3{ Fp[2] FC4{ Fi[8] FC5{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC6{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC7{ FC8{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC9{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC10{ Fi[2] Fp Fi[2]} Fi[10]}} FC7 FC11{ FL[3] Fc} FC5 Fi Fp Fi}


 S10007C2 ::~S10007C2(){ note_dtor("S10007C2", this);}
void  S10007C2 ::v6(){vfunc_called(this, "_ZN8S10007C22v6Ev");}
void  S10007C2 ::v7(){vfunc_called(this, "_ZN8S10007C22v7Ev");}
void  S10007C2 ::v8(){vfunc_called(this, "_ZN8S10007C22v8Ev");}
void  S10007C2 ::v9(){vfunc_called(this, "_ZN8S10007C22v9Ev");}
void  S10007C2 ::v10(){vfunc_called(this, "_ZN8S10007C23v10Ev");}
void  S10007C2 ::v11(){vfunc_called(this, "_ZN8S10007C23v11Ev");}
void  S10007C2 ::v12(){vfunc_called(this, "_ZN8S10007C23v12Ev");}
S10007C2 ::S10007C2(){ note_ctor("S10007C2", this);} // tgen

static void Test_S10007C2()
{
  extern Class_Descriptor cd_S10007C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,179)];
    init_test(&cd_S10007C2, buf);
    S10007C2 *dp, &lv = *(dp=new (buf) S10007C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,712), "sizeof(S10007C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C2)");
    check_field_offset(lv, s10007c2f0, ABISELECT(8,4), "S10007C2.s10007c2f0");
    check_field_offset(lv, s10007c2f1, ABISELECT(16,8), "S10007C2.s10007c2f1");
    check_field_offset(lv, s10007c2f2, ABISELECT(64,52), "S10007C2.s10007c2f2");
    check_field_offset(lv, s10007c2f3, ABISELECT(672,484), "S10007C2.s10007c2f3");
    check_field_offset(lv, s10007c2f4, ABISELECT(936,656), "S10007C2.s10007c2f4");
    check_field_offset(lv, s10007c2f5, ABISELECT(968,684), "S10007C2.s10007c2f5");
    check_field_offset(lv, s10007c2f6, ABISELECT(984,700), "S10007C2.s10007c2f6");
    check_field_offset(lv, s10007c2f7, ABISELECT(992,704), "S10007C2.s10007c2f7");
    check_field_offset(lv, s10007c2f8, ABISELECT(1000,708), "S10007C2.s10007c2f8");
    test_class_info(&lv, &cd_S10007C2);
    dp->~S10007C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C2(Test_S10007C2, "S10007C2", ABISELECT(1008,712));

#else // __cplusplus

extern void _ZN8S10007C2C1Ev();
extern void _ZN8S10007C2D1Ev();
Name_Map name_map_S10007C2[] = {
  NSPAIR(_ZN8S10007C2C1Ev),
  NSPAIR(_ZN8S10007C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10007C2[];
extern void _ZN8S10007C2D1Ev();
extern void _ZN8S10007C2D0Ev();
extern void _ZN8S10007C22v6Ev();
extern void _ZN8S10007C22v7Ev();
extern void _ZN8S10007C22v8Ev();
extern void _ZN8S10007C22v9Ev();
extern void _ZN8S10007C23v10Ev();
extern void _ZN8S10007C23v11Ev();
extern void _ZN8S10007C23v12Ev();
static  VTBL_ENTRY vtc_S10007C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10007C2[0]),
  (VTBL_ENTRY)&_ZN8S10007C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10007C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v12Ev,
};
extern VTBL_ENTRY _ZTI8S10007C2[];
extern  VTBL_ENTRY _ZTV8S10007C2[];
Class_Descriptor cd_S10007C2 = {  "S10007C2", // class name
  0,0,//no base classes
  &(vtc_S10007C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,712), // object size
  NSPAIRA(_ZTI8S10007C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10007C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C15  {
  int s10007c15f0[15];
  void *s10007c15f1[2];
  char s10007c15f2[256];
  int s10007c15f3;
  void *s10007c15f4;
  ::S10007C6_nt s10007c15f5;
};
//SIG(-1 S10007C15) C1{ Fi[15] Fp[2] Fc[256] Fi Fp FC2{ Fi[4]}}



static void Test_S10007C15()
{
  {
    init_simple_test("S10007C15");
    S10007C15 lv;
    check2(sizeof(lv), ABISELECT(368,348), "sizeof(S10007C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C15)");
    check_field_offset(lv, s10007c15f0, 0, "S10007C15.s10007c15f0");
    check_field_offset(lv, s10007c15f1, ABISELECT(64,60), "S10007C15.s10007c15f1");
    check_field_offset(lv, s10007c15f2, ABISELECT(80,68), "S10007C15.s10007c15f2");
    check_field_offset(lv, s10007c15f3, ABISELECT(336,324), "S10007C15.s10007c15f3");
    check_field_offset(lv, s10007c15f4, ABISELECT(344,328), "S10007C15.s10007c15f4");
    check_field_offset(lv, s10007c15f5, ABISELECT(352,332), "S10007C15.s10007c15f5");
  }
}
static Arrange_To_Call_Me vS10007C15(Test_S10007C15, "S10007C15", ABISELECT(368,348));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C16  {
  void *s10007c16f0[9];
  void  mf10007c16(); // _ZN9S10007C1610mf10007c16Ev
};
//SIG(-1 S10007C16) C1{ m Fp[9]}


void  S10007C16 ::mf10007c16(){}

static void Test_S10007C16()
{
  {
    init_simple_test("S10007C16");
    S10007C16 lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S10007C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C16)");
    check_field_offset(lv, s10007c16f0, 0, "S10007C16.s10007c16f0");
  }
}
static Arrange_To_Call_Me vS10007C16(Test_S10007C16, "S10007C16", ABISELECT(72,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C14  {
  ::S10007C15 s10007c14f0;
  ::S10007C15 s10007c14f1;
  ::S10007C15 s10007c14f2;
  void *s10007c14f3[3];
  ::S10007C16 s10007c14f4;
  void  mf10007c14(); // _ZN9S10007C1410mf10007c14Ev
};
//SIG(-1 S10007C14) C1{ m FC2{ Fi[15] Fp[2] Fc[256] Fi Fp FC3{ Fi[4]}} FC2 FC2 Fp[3] FC4{ m Fp[9]}}


void  S10007C14 ::mf10007c14(){}

static void Test_S10007C14()
{
  {
    init_simple_test("S10007C14");
    S10007C14 lv;
    check2(sizeof(lv), ABISELECT(1200,1092), "sizeof(S10007C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C14)");
    check_field_offset(lv, s10007c14f0, 0, "S10007C14.s10007c14f0");
    check_field_offset(lv, s10007c14f1, ABISELECT(368,348), "S10007C14.s10007c14f1");
    check_field_offset(lv, s10007c14f2, ABISELECT(736,696), "S10007C14.s10007c14f2");
    check_field_offset(lv, s10007c14f3, ABISELECT(1104,1044), "S10007C14.s10007c14f3");
    check_field_offset(lv, s10007c14f4, ABISELECT(1128,1056), "S10007C14.s10007c14f4");
  }
}
static Arrange_To_Call_Me vS10007C14(Test_S10007C14, "S10007C14", ABISELECT(1200,1092));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C19  {
  ::S4228C13_nt s10007c19f0;
  ::S4228C13_nt s10007c19f1;
  ::S4228C13_nt s10007c19f2;
  ::S4228C13_nt s10007c19f3;
  void  mf10007c19(); // _ZN9S10007C1910mf10007c19Ev
};
//SIG(-1 S10007C19) C1{ m FC2{ m FL[2]} FC2 FC2 FC2}


void  S10007C19 ::mf10007c19(){}

static void Test_S10007C19()
{
  {
    init_simple_test("S10007C19");
    S10007C19 lv;
    check2(sizeof(lv), 64, "sizeof(S10007C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C19)");
    check_field_offset(lv, s10007c19f0, 0, "S10007C19.s10007c19f0");
    check_field_offset(lv, s10007c19f1, 16, "S10007C19.s10007c19f1");
    check_field_offset(lv, s10007c19f2, 32, "S10007C19.s10007c19f2");
    check_field_offset(lv, s10007c19f3, 48, "S10007C19.s10007c19f3");
  }
}
static Arrange_To_Call_Me vS10007C19(Test_S10007C19, "S10007C19", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C18  {
  void *s10007c18f0;
  int s10007c18f1[2];
  char s10007c18f2;
  ::S10007C19 s10007c18f3;
  virtual  ~S10007C18(); // _ZN9S10007C18D1Ev
  virtual void  v13(); // _ZN9S10007C183v13Ev
  virtual void  v14(); // _ZN9S10007C183v14Ev
  S10007C18(); // tgen
};
//SIG(-1 S10007C18) C1{ vd v1 v2 Fp Fi[2] Fc FC2{ m FC3{ m FL[2]} FC3 FC3 FC3}}


 S10007C18 ::~S10007C18(){ note_dtor("S10007C18", this);}
void  S10007C18 ::v13(){vfunc_called(this, "_ZN9S10007C183v13Ev");}
void  S10007C18 ::v14(){vfunc_called(this, "_ZN9S10007C183v14Ev");}
S10007C18 ::S10007C18(){ note_ctor("S10007C18", this);} // tgen

static void Test_S10007C18()
{
  extern Class_Descriptor cd_S10007C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,22)];
    init_test(&cd_S10007C18, buf);
    S10007C18 *dp, &lv = *(dp=new (buf) S10007C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S10007C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C18)");
    check_field_offset(lv, s10007c18f0, ABISELECT(8,4), "S10007C18.s10007c18f0");
    check_field_offset(lv, s10007c18f1, ABISELECT(16,8), "S10007C18.s10007c18f1");
    check_field_offset(lv, s10007c18f2, ABISELECT(24,16), "S10007C18.s10007c18f2");
    check_field_offset(lv, s10007c18f3, ABISELECT(32,20), "S10007C18.s10007c18f3");
    test_class_info(&lv, &cd_S10007C18);
    dp->~S10007C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C18(Test_S10007C18, "S10007C18", ABISELECT(96,84));

#else // __cplusplus

extern void _ZN9S10007C18C1Ev();
extern void _ZN9S10007C18D1Ev();
Name_Map name_map_S10007C18[] = {
  NSPAIR(_ZN9S10007C18C1Ev),
  NSPAIR(_ZN9S10007C18D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S10007C18[];
extern void _ZN9S10007C18D1Ev();
extern void _ZN9S10007C18D0Ev();
extern void _ZN9S10007C183v13Ev();
extern void _ZN9S10007C183v14Ev();
static  VTBL_ENTRY vtc_S10007C18[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10007C18[0]),
  (VTBL_ENTRY)&_ZN9S10007C18D1Ev,
  (VTBL_ENTRY)&_ZN9S10007C18D0Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v13Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v14Ev,
};
extern VTBL_ENTRY _ZTI9S10007C18[];
extern  VTBL_ENTRY _ZTV9S10007C18[];
Class_Descriptor cd_S10007C18 = {  "S10007C18", // class name
  0,0,//no base classes
  &(vtc_S10007C18[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,84), // object size
  NSPAIRA(_ZTI9S10007C18),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S10007C18),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  S10007C17  {
  ::S10007C18 s10007c17f0;
  void *s10007c17f1[2];
  char s10007c17f2;
  void  mf10007c17(); // _ZN9S10007C1710mf10007c17Ev
};
//SIG(-1 S10007C17) C1{ m FC2{ vd v1 v2 Fp Fi[2] Fc FC3{ m FC4{ m FL[2]} FC4 FC4 FC4}} Fp[2] Fc}


void  S10007C17 ::mf10007c17(){}

static void Test_S10007C17()
{
  {
    init_simple_test("S10007C17");
    S10007C17 lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S10007C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C17)");
    check_field_offset(lv, s10007c17f0, 0, "S10007C17.s10007c17f0");
    check_field_offset(lv, s10007c17f1, ABISELECT(96,84), "S10007C17.s10007c17f1");
    check_field_offset(lv, s10007c17f2, ABISELECT(112,92), "S10007C17.s10007c17f2");
  }
}
static Arrange_To_Call_Me vS10007C17(Test_S10007C17, "S10007C17", ABISELECT(120,96));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C24  {
  ::S4228C12_nt s10007c24f0[6];
  void  mf10007c24(); // _ZN9S10007C2410mf10007c24Ev
};
//SIG(-1 S10007C24) C1{ m FC2{ m FC3{ m FL[2]}}[6]}


void  S10007C24 ::mf10007c24(){}

static void Test_S10007C24()
{
  {
    init_simple_test("S10007C24");
    S10007C24 lv;
    check2(sizeof(lv), 96, "sizeof(S10007C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C24)");
    check_field_offset(lv, s10007c24f0, 0, "S10007C24.s10007c24f0");
  }
}
static Arrange_To_Call_Me vS10007C24(Test_S10007C24, "S10007C24", 96);

#else // __cplusplus

Class_Descriptor cd_S10007C24 = {  "S10007C24", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  96, // 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  S10007C23  : S10007C24 {
};
//SIG(-1 S10007C23) C1{ BC2{ m FC3{ m FC4{ m FL[2]}}[6]}}



static void Test_S10007C23()
{
  extern Class_Descriptor cd_S10007C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,25)];
    init_test(&cd_S10007C23, buf);
    S10007C23 &lv = *(new (buf) S10007C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), 96, "sizeof(S10007C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C23)");
    check_base_class_offset(lv, (S10007C24*), 0, "S10007C23");
    test_class_info(&lv, &cd_S10007C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C23(Test_S10007C23, "S10007C23", 96);

#else // __cplusplus

extern Class_Descriptor cd_S10007C24;
static Base_Class bases_S10007C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10007C23 = {  "S10007C23", // class name
  bases_S10007C23, 1,
  0, // no vftv
  0, //no vtt
  96, // 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  S10007C22  : S10007C18 {
  ::S4228C13_nt s10007c22f0;
  ::S10007C19 s10007c22f1;
  ::S10007C19 s10007c22f2;
  ::S10007C19 s10007c22f3;
  ::S10007C23 s10007c22f4;
  ~S10007C22(); // tgen
  S10007C22(); // tgen
};
//SIG(-1 S10007C22) C1{ BC2{ vd v1 v2 Fp Fi[2] Fc FC3{ m FC4{ m FL[2]} FC4 FC4 FC4}} FC4 FC3 FC3 FC3 FC5{ BC6{ m FC7{ m FC4}[6]}}}


S10007C22 ::~S10007C22(){ note_dtor("S10007C22", this);} // tgen
S10007C22 ::S10007C22(){ note_ctor("S10007C22", this);} // tgen

static void Test_S10007C22()
{
  extern Class_Descriptor cd_S10007C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,98)];
    init_test(&cd_S10007C22, buf);
    S10007C22 *dp, &lv = *(dp=new (buf) S10007C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,388), "sizeof(S10007C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C22)");
    check_base_class_offset(lv, (S10007C18*), 0, "S10007C22");
    check_field_offset(lv, s10007c22f0, ABISELECT(96,84), "S10007C22.s10007c22f0");
    check_field_offset(lv, s10007c22f1, ABISELECT(112,100), "S10007C22.s10007c22f1");
    check_field_offset(lv, s10007c22f2, ABISELECT(176,164), "S10007C22.s10007c22f2");
    check_field_offset(lv, s10007c22f3, ABISELECT(240,228), "S10007C22.s10007c22f3");
    check_field_offset(lv, s10007c22f4, ABISELECT(304,292), "S10007C22.s10007c22f4");
    test_class_info(&lv, &cd_S10007C22);
    dp->~S10007C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C22(Test_S10007C22, "S10007C22", ABISELECT(400,388));

#else // __cplusplus

extern void _ZN9S10007C22C1Ev();
extern void _ZN9S10007C22D1Ev();
Name_Map name_map_S10007C22[] = {
  NSPAIR(_ZN9S10007C22C1Ev),
  NSPAIR(_ZN9S10007C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10007C18;
extern VTBL_ENTRY _ZTI9S10007C18[];
extern  VTBL_ENTRY _ZTV9S10007C18[];
static Base_Class bases_S10007C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S10007C22[];
extern void _ZN9S10007C22D1Ev();
extern void _ZN9S10007C22D0Ev();
extern void _ZN9S10007C183v13Ev();
extern void _ZN9S10007C183v14Ev();
static  VTBL_ENTRY vtc_S10007C22[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10007C22[0]),
  (VTBL_ENTRY)&_ZN9S10007C22D1Ev,
  (VTBL_ENTRY)&_ZN9S10007C22D0Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v13Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v14Ev,
};
extern VTBL_ENTRY _ZTI9S10007C22[];
extern  VTBL_ENTRY _ZTV9S10007C22[];
Class_Descriptor cd_S10007C22 = {  "S10007C22", // class name
  bases_S10007C22, 1,
  &(vtc_S10007C22[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(400,388), // object size
  NSPAIRA(_ZTI9S10007C22),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S10007C22),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  S10007C26_nt  {
  __tsi64 s10007c26f0[2];
  void  mf10007c26(); // _ZN12S10007C26_nt10mf10007c26Ev
};
//SIG(-1 S10007C26_nt) C1{ m FL[2]}


void  S10007C26_nt ::mf10007c26(){}

//skip512 S10007C26_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C21  : S10007C22 {
  ::S10007C26_nt s10007c21f0;
  ::S10007C26_nt s10007c21f1;
  ~S10007C21(); // tgen
  S10007C21(); // tgen
};
//SIG(-1 S10007C21) C1{ BC2{ BC3{ vd v1 v2 Fp Fi[2] Fc FC4{ m FC5{ m FL[2]} FC5 FC5 FC5}} FC5 FC4 FC4 FC4 FC6{ BC7{ m FC8{ m FC5}[6]}}} FC9{ m FL[2]} FC9}


S10007C21 ::~S10007C21(){ note_dtor("S10007C21", this);} // tgen
S10007C21 ::S10007C21(){ note_ctor("S10007C21", this);} // tgen

static void Test_S10007C21()
{
  extern Class_Descriptor cd_S10007C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(55,106)];
    init_test(&cd_S10007C21, buf);
    S10007C21 *dp, &lv = *(dp=new (buf) S10007C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,420), "sizeof(S10007C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C21)");
    check_base_class_offset(lv, (S10007C18*)(S10007C22*), 0, "S10007C21");
    check_base_class_offset(lv, (S10007C22*), 0, "S10007C21");
    check_field_offset(lv, s10007c21f0, ABISELECT(400,388), "S10007C21.s10007c21f0");
    check_field_offset(lv, s10007c21f1, ABISELECT(416,404), "S10007C21.s10007c21f1");
    test_class_info(&lv, &cd_S10007C21);
    dp->~S10007C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C21(Test_S10007C21, "S10007C21", ABISELECT(432,420));

#else // __cplusplus

extern void _ZN9S10007C21C1Ev();
extern void _ZN9S10007C21D1Ev();
Name_Map name_map_S10007C21[] = {
  NSPAIR(_ZN9S10007C21C1Ev),
  NSPAIR(_ZN9S10007C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10007C18;
extern VTBL_ENTRY _ZTI9S10007C18[];
extern  VTBL_ENTRY _ZTV9S10007C18[];
extern Class_Descriptor cd_S10007C22;
extern VTBL_ENTRY _ZTI9S10007C22[];
extern  VTBL_ENTRY _ZTV9S10007C22[];
static Base_Class bases_S10007C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S10007C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S10007C21[];
extern void _ZN9S10007C21D1Ev();
extern void _ZN9S10007C21D0Ev();
extern void _ZN9S10007C183v13Ev();
extern void _ZN9S10007C183v14Ev();
static  VTBL_ENTRY vtc_S10007C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10007C21[0]),
  (VTBL_ENTRY)&_ZN9S10007C21D1Ev,
  (VTBL_ENTRY)&_ZN9S10007C21D0Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v13Ev,
  (VTBL_ENTRY)&_ZN9S10007C183v14Ev,
};
extern VTBL_ENTRY _ZTI9S10007C21[];
extern  VTBL_ENTRY _ZTV9S10007C21[];
Class_Descriptor cd_S10007C21 = {  "S10007C21", // class name
  bases_S10007C21, 2,
  &(vtc_S10007C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(432,420), // object size
  NSPAIRA(_ZTI9S10007C21),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S10007C21),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C27_nt  {
  ::S10007C26_nt s10007c27f0;
  void  mf10007c27(); // _ZN12S10007C27_nt10mf10007c27Ev
};
//SIG(-1 S10007C27_nt) C1{ m FC2{ m FL[2]}}


void  S10007C27_nt ::mf10007c27(){}

//skip512 S10007C27_nt

#else // __cplusplus

Class_Descriptor cd_S10007C27_nt = {  "S10007C27_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C28  {
  char s10007c28f0;
  int s10007c28f1;
  char s10007c28f2[2];
};
//SIG(-1 S10007C28) C1{ Fc Fi Fc[2]}



static void Test_S10007C28()
{
  {
    init_simple_test("S10007C28");
    S10007C28 lv;
    check2(sizeof(lv), 12, "sizeof(S10007C28)");
    check2(__alignof__(lv), 4, "__alignof__(S10007C28)");
    check_field_offset(lv, s10007c28f0, 0, "S10007C28.s10007c28f0");
    check_field_offset(lv, s10007c28f1, 4, "S10007C28.s10007c28f1");
    check_field_offset(lv, s10007c28f2, 8, "S10007C28.s10007c28f2");
  }
}
static Arrange_To_Call_Me vS10007C28(Test_S10007C28, "S10007C28", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C29_nt  {
  __tsi64 s10007c29f0[4];
};
//SIG(-1 S10007C29_nt) C1{ FL[4]}



//skip512 S10007C29_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C31_nt  {
  char s10007c31f0[20];
};
//SIG(-1 S10007C31_nt) C1{ Fc[20]}



//skip512 S10007C31_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C30_nt  {
  ::S10007C31_nt s10007c30f0;
  char s10007c30f1[16];
};
//SIG(-1 S10007C30_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S10007C30_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10007C1  : S10007C2 {
  ::S10007C14 s10007c1f0;
  ::S10007C17 s10007c1f1;
  ::S10007C21 s10007c1f2;
  ::S10007C27_nt s10007c1f3;
  ::S10007C28 s10007c1f4;
  void *s10007c1f5[87];
  int s10007c1f6[40];
  ::S10007C29_nt s10007c1f7;
  int s10007c1f8[3];
  char s10007c1f9[2];
  void *s10007c1f10;
  char s10007c1f11;
  ::S10007C30_nt s10007c1f12;
  virtual void  v1(); // _ZN8S10007C12v1Ev
  virtual void  v2(); // _ZN8S10007C12v2Ev
  virtual void  v3(); // _ZN8S10007C12v3Ev
  virtual void  v4(); // _ZN8S10007C12v4Ev
  virtual void  v5(); // _ZN8S10007C12v5Ev
  ~S10007C1(); // tgen
  S10007C1(); // tgen
};
//SIG(1 S10007C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fc[3] FC3{ Fp Fi[10]} FC4{ Fp[2] FC5{ Fi[8] FC6{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC7{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC8{ FC9{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC10{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC11{ Fi[2] Fp Fi[2]} Fi[10]}} FC8 FC12{ FL[3] Fc} FC6 Fi Fp Fi} v1 v2 v3 v4 v5 FC13{ m FC14{ Fi[15] Fp[2] Fc[256] Fi Fp FC6} FC14 FC14 Fp[3] FC15{ m Fp[9]}} FC16{ m FC17{ vd v13 v14 Fp Fi[2] Fc FC18{ m FC19{ m FL[2]} FC19 FC19 FC19}} Fp[2] Fc} FC20{ BC21{ BC17 FC19 FC18 FC18 FC18 FC22{ BC23{ m FC24{ m FC19}[6]}}} FC25{ m FL[2]} FC25} FC26{ m FC25} FC27{ Fc Fi Fc[2]} Fp[87] Fi[40] FC28{ FL[4]} Fi[3] Fc[2] Fp Fc FC29{ FC30{ Fc[20]} Fc[16]}}


void  S10007C1 ::v1(){vfunc_called(this, "_ZN8S10007C12v1Ev");}
void  S10007C1 ::v2(){vfunc_called(this, "_ZN8S10007C12v2Ev");}
void  S10007C1 ::v3(){vfunc_called(this, "_ZN8S10007C12v3Ev");}
void  S10007C1 ::v4(){vfunc_called(this, "_ZN8S10007C12v4Ev");}
void  S10007C1 ::v5(){vfunc_called(this, "_ZN8S10007C12v5Ev");}
S10007C1 ::~S10007C1(){ note_dtor("S10007C1", this);} // tgen
S10007C1 ::S10007C1(){ note_ctor("S10007C1", this);} // tgen

static void Test_S10007C1()
{
  extern Class_Descriptor cd_S10007C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(469,738)];
    init_test(&cd_S10007C1, buf);
    S10007C1 *dp, &lv = *(dp=new (buf) S10007C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3744,2948), "sizeof(S10007C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10007C1)");
    check_base_class_offset(lv, (S10007C2*), 0, "S10007C1");
    check_field_offset(lv, s10007c1f0, ABISELECT(1008,712), "S10007C1.s10007c1f0");
    check_field_offset(lv, s10007c1f1, ABISELECT(2208,1804), "S10007C1.s10007c1f1");
    check_field_offset(lv, s10007c1f2, ABISELECT(2328,1900), "S10007C1.s10007c1f2");
    check_field_offset(lv, s10007c1f3, ABISELECT(2760,2320), "S10007C1.s10007c1f3");
    check_field_offset(lv, s10007c1f4, ABISELECT(2776,2336), "S10007C1.s10007c1f4");
    check_field_offset(lv, s10007c1f5, ABISELECT(2792,2348), "S10007C1.s10007c1f5");
    check_field_offset(lv, s10007c1f6, ABISELECT(3488,2696), "S10007C1.s10007c1f6");
    check_field_offset(lv, s10007c1f7, ABISELECT(3648,2856), "S10007C1.s10007c1f7");
    check_field_offset(lv, s10007c1f8, ABISELECT(3680,2888), "S10007C1.s10007c1f8");
    check_field_offset(lv, s10007c1f9, ABISELECT(3692,2900), "S10007C1.s10007c1f9");
    check_field_offset(lv, s10007c1f10, ABISELECT(3696,2904), "S10007C1.s10007c1f10");
    check_field_offset(lv, s10007c1f11, ABISELECT(3704,2908), "S10007C1.s10007c1f11");
    check_field_offset(lv, s10007c1f12, ABISELECT(3705,2909), "S10007C1.s10007c1f12");
    test_class_info(&lv, &cd_S10007C1);
    dp->~S10007C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10007C1(Test_S10007C1, "S10007C1", ABISELECT(3744,2948));

#else // __cplusplus

extern void _ZN8S10007C1C1Ev();
extern void _ZN8S10007C1D1Ev();
Name_Map name_map_S10007C1[] = {
  NSPAIR(_ZN8S10007C1C1Ev),
  NSPAIR(_ZN8S10007C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10007C2;
extern VTBL_ENTRY _ZTI8S10007C2[];
extern  VTBL_ENTRY _ZTV8S10007C2[];
static Base_Class bases_S10007C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10007C1[];
extern void _ZN8S10007C1D1Ev();
extern void _ZN8S10007C1D0Ev();
extern void _ZN8S10007C22v6Ev();
extern void _ZN8S10007C22v7Ev();
extern void _ZN8S10007C22v8Ev();
extern void _ZN8S10007C22v9Ev();
extern void _ZN8S10007C23v10Ev();
extern void _ZN8S10007C23v11Ev();
extern void _ZN8S10007C23v12Ev();
extern void _ZN8S10007C12v1Ev();
extern void _ZN8S10007C12v2Ev();
extern void _ZN8S10007C12v3Ev();
extern void _ZN8S10007C12v4Ev();
extern void _ZN8S10007C12v5Ev();
static  VTBL_ENTRY vtc_S10007C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10007C1[0]),
  (VTBL_ENTRY)&_ZN8S10007C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10007C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10007C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10007C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10007C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10007C1[];
extern  VTBL_ENTRY _ZTV8S10007C1[];
Class_Descriptor cd_S10007C1 = {  "S10007C1", // class name
  bases_S10007C1, 1,
  &(vtc_S10007C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3744,2948), // object size
  NSPAIRA(_ZTI8S10007C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10007C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10006C2  {
  char s10006c2f0[3];
  ::S10007C3 s10006c2f1;
  ::S10007C4 s10006c2f2;
  ::S10007C8 s10006c2f3;
  ::S10007C12 s10006c2f4;
  ::S10007C6_nt s10006c2f5;
  int s10006c2f6;
  void *s10006c2f7;
  int s10006c2f8;
  virtual  ~S10006C2(); // _ZN8S10006C2D1Ev
  virtual void  v6(); // _ZN8S10006C22v6Ev
  virtual void  v7(); // _ZN8S10006C22v7Ev
  virtual void  v8(); // _ZN8S10006C22v8Ev
  virtual void  v9(); // _ZN8S10006C22v9Ev
  virtual void  v10(); // _ZN8S10006C23v10Ev
  virtual void  v11(); // _ZN8S10006C23v11Ev
  virtual void  v12(); // _ZN8S10006C23v12Ev
  S10006C2(); // tgen
};
//SIG(-1 S10006C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 Fc[3] FC2{ Fp Fi[10]} FC3{ Fp[2] FC4{ Fi[8] FC5{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC6{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC7{ FC8{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC9{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC10{ Fi[2] Fp Fi[2]} Fi[10]}} FC7 FC11{ FL[3] Fc} FC5 Fi Fp Fi}


 S10006C2 ::~S10006C2(){ note_dtor("S10006C2", this);}
void  S10006C2 ::v6(){vfunc_called(this, "_ZN8S10006C22v6Ev");}
void  S10006C2 ::v7(){vfunc_called(this, "_ZN8S10006C22v7Ev");}
void  S10006C2 ::v8(){vfunc_called(this, "_ZN8S10006C22v8Ev");}
void  S10006C2 ::v9(){vfunc_called(this, "_ZN8S10006C22v9Ev");}
void  S10006C2 ::v10(){vfunc_called(this, "_ZN8S10006C23v10Ev");}
void  S10006C2 ::v11(){vfunc_called(this, "_ZN8S10006C23v11Ev");}
void  S10006C2 ::v12(){vfunc_called(this, "_ZN8S10006C23v12Ev");}
S10006C2 ::S10006C2(){ note_ctor("S10006C2", this);} // tgen

static void Test_S10006C2()
{
  extern Class_Descriptor cd_S10006C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(127,179)];
    init_test(&cd_S10006C2, buf);
    S10006C2 *dp, &lv = *(dp=new (buf) S10006C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,712), "sizeof(S10006C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10006C2)");
    check_field_offset(lv, s10006c2f0, ABISELECT(8,4), "S10006C2.s10006c2f0");
    check_field_offset(lv, s10006c2f1, ABISELECT(16,8), "S10006C2.s10006c2f1");
    check_field_offset(lv, s10006c2f2, ABISELECT(64,52), "S10006C2.s10006c2f2");
    check_field_offset(lv, s10006c2f3, ABISELECT(672,484), "S10006C2.s10006c2f3");
    check_field_offset(lv, s10006c2f4, ABISELECT(936,656), "S10006C2.s10006c2f4");
    check_field_offset(lv, s10006c2f5, ABISELECT(968,684), "S10006C2.s10006c2f5");
    check_field_offset(lv, s10006c2f6, ABISELECT(984,700), "S10006C2.s10006c2f6");
    check_field_offset(lv, s10006c2f7, ABISELECT(992,704), "S10006C2.s10006c2f7");
    check_field_offset(lv, s10006c2f8, ABISELECT(1000,708), "S10006C2.s10006c2f8");
    test_class_info(&lv, &cd_S10006C2);
    dp->~S10006C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10006C2(Test_S10006C2, "S10006C2", ABISELECT(1008,712));

#else // __cplusplus

extern void _ZN8S10006C2C1Ev();
extern void _ZN8S10006C2D1Ev();
Name_Map name_map_S10006C2[] = {
  NSPAIR(_ZN8S10006C2C1Ev),
  NSPAIR(_ZN8S10006C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10006C2[];
extern void _ZN8S10006C2D1Ev();
extern void _ZN8S10006C2D0Ev();
extern void _ZN8S10006C22v6Ev();
extern void _ZN8S10006C22v7Ev();
extern void _ZN8S10006C22v8Ev();
extern void _ZN8S10006C22v9Ev();
extern void _ZN8S10006C23v10Ev();
extern void _ZN8S10006C23v11Ev();
extern void _ZN8S10006C23v12Ev();
static  VTBL_ENTRY vtc_S10006C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10006C2[0]),
  (VTBL_ENTRY)&_ZN8S10006C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10006C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v12Ev,
};
extern VTBL_ENTRY _ZTI8S10006C2[];
extern  VTBL_ENTRY _ZTV8S10006C2[];
Class_Descriptor cd_S10006C2 = {  "S10006C2", // class name
  0,0,//no base classes
  &(vtc_S10006C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1008,712), // object size
  NSPAIRA(_ZTI8S10006C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10006C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10006C29_nt  {
  long s10006c29f0[4];
};
//SIG(-1 S10006C29_nt) C1{ Fl[4]}



//skip512 S10006C29_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10006C1  : S10006C2 {
  ::S10007C14 s10006c1f0;
  ::S10007C17 s10006c1f1;
  ::S10007C21 s10006c1f2;
  ::S10007C27_nt s10006c1f3;
  ::S10007C28 s10006c1f4;
  void *s10006c1f5[87];
  int s10006c1f6[40];
  ::S10006C29_nt s10006c1f7;
  int s10006c1f8[3];
  char s10006c1f9[2];
  void *s10006c1f10;
  char s10006c1f11;
  ::S10007C30_nt s10006c1f12;
  virtual void  v1(); // _ZN8S10006C12v1Ev
  virtual void  v2(); // _ZN8S10006C12v2Ev
  virtual void  v3(); // _ZN8S10006C12v3Ev
  virtual void  v4(); // _ZN8S10006C12v4Ev
  virtual void  v5(); // _ZN8S10006C12v5Ev
  ~S10006C1(); // tgen
  S10006C1(); // tgen
};
//SIG(1 S10006C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 Fc[3] FC3{ Fp Fi[10]} FC4{ Fp[2] FC5{ Fi[8] FC6{ Fi[4]}}[3] Fi[3] Fp[6] Fi[2] Fp Fi FC7{ Fi Fp[2] Fi[2]} Fp[4] Fi[2] Fp[3] FC8{ FC9{ Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi[2]} FC10{ Fp[6] Fi Fp[3] Fi[2] Fp[3] Fi[2]} FC11{ Fi[2] Fp Fi[2]} Fi[10]}} FC8 FC12{ FL[3] Fc} FC6 Fi Fp Fi} v1 v2 v3 v4 v5 FC13{ m FC14{ Fi[15] Fp[2] Fc[256] Fi Fp FC6} FC14 FC14 Fp[3] FC15{ m Fp[9]}} FC16{ m FC17{ vd v13 v14 Fp Fi[2] Fc FC18{ m FC19{ m FL[2]} FC19 FC19 FC19}} Fp[2] Fc} FC20{ BC21{ BC17 FC19 FC18 FC18 FC18 FC22{ BC23{ m FC24{ m FC19}[6]}}} FC25{ m FL[2]} FC25} FC26{ m FC25} FC27{ Fc Fi Fc[2]} Fp[87] Fi[40] FC28{ Fl[4]} Fi[3] Fc[2] Fp Fc FC29{ FC30{ Fc[20]} Fc[16]}}


void  S10006C1 ::v1(){vfunc_called(this, "_ZN8S10006C12v1Ev");}
void  S10006C1 ::v2(){vfunc_called(this, "_ZN8S10006C12v2Ev");}
void  S10006C1 ::v3(){vfunc_called(this, "_ZN8S10006C12v3Ev");}
void  S10006C1 ::v4(){vfunc_called(this, "_ZN8S10006C12v4Ev");}
void  S10006C1 ::v5(){vfunc_called(this, "_ZN8S10006C12v5Ev");}
S10006C1 ::~S10006C1(){ note_dtor("S10006C1", this);} // tgen
S10006C1 ::S10006C1(){ note_ctor("S10006C1", this);} // tgen

static void Test_S10006C1()
{
  extern Class_Descriptor cd_S10006C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(469,734)];
    init_test(&cd_S10006C1, buf);
    S10006C1 *dp, &lv = *(dp=new (buf) S10006C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3744,2932), "sizeof(S10006C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10006C1)");
    check_base_class_offset(lv, (S10006C2*), 0, "S10006C1");
    check_field_offset(lv, s10006c1f0, ABISELECT(1008,712), "S10006C1.s10006c1f0");
    check_field_offset(lv, s10006c1f1, ABISELECT(2208,1804), "S10006C1.s10006c1f1");
    check_field_offset(lv, s10006c1f2, ABISELECT(2328,1900), "S10006C1.s10006c1f2");
    check_field_offset(lv, s10006c1f3, ABISELECT(2760,2320), "S10006C1.s10006c1f3");
    check_field_offset(lv, s10006c1f4, ABISELECT(2776,2336), "S10006C1.s10006c1f4");
    check_field_offset(lv, s10006c1f5, ABISELECT(2792,2348), "S10006C1.s10006c1f5");
    check_field_offset(lv, s10006c1f6, ABISELECT(3488,2696), "S10006C1.s10006c1f6");
    check_field_offset(lv, s10006c1f7, ABISELECT(3648,2856), "S10006C1.s10006c1f7");
    check_field_offset(lv, s10006c1f8, ABISELECT(3680,2872), "S10006C1.s10006c1f8");
    check_field_offset(lv, s10006c1f9, ABISELECT(3692,2884), "S10006C1.s10006c1f9");
    check_field_offset(lv, s10006c1f10, ABISELECT(3696,2888), "S10006C1.s10006c1f10");
    check_field_offset(lv, s10006c1f11, ABISELECT(3704,2892), "S10006C1.s10006c1f11");
    check_field_offset(lv, s10006c1f12, ABISELECT(3705,2893), "S10006C1.s10006c1f12");
    test_class_info(&lv, &cd_S10006C1);
    dp->~S10006C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10006C1(Test_S10006C1, "S10006C1", ABISELECT(3744,2932));

#else // __cplusplus

extern void _ZN8S10006C1C1Ev();
extern void _ZN8S10006C1D1Ev();
Name_Map name_map_S10006C1[] = {
  NSPAIR(_ZN8S10006C1C1Ev),
  NSPAIR(_ZN8S10006C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10006C2;
extern VTBL_ENTRY _ZTI8S10006C2[];
extern  VTBL_ENTRY _ZTV8S10006C2[];
static Base_Class bases_S10006C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10006C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10006C1[];
extern void _ZN8S10006C1D1Ev();
extern void _ZN8S10006C1D0Ev();
extern void _ZN8S10006C22v6Ev();
extern void _ZN8S10006C22v7Ev();
extern void _ZN8S10006C22v8Ev();
extern void _ZN8S10006C22v9Ev();
extern void _ZN8S10006C23v10Ev();
extern void _ZN8S10006C23v11Ev();
extern void _ZN8S10006C23v12Ev();
extern void _ZN8S10006C12v1Ev();
extern void _ZN8S10006C12v2Ev();
extern void _ZN8S10006C12v3Ev();
extern void _ZN8S10006C12v4Ev();
extern void _ZN8S10006C12v5Ev();
static  VTBL_ENTRY vtc_S10006C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10006C1[0]),
  (VTBL_ENTRY)&_ZN8S10006C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10006C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10006C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10006C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10006C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10006C1[];
extern  VTBL_ENTRY _ZTV8S10006C1[];
Class_Descriptor cd_S10006C1 = {  "S10006C1", // class name
  bases_S10006C1, 1,
  &(vtc_S10006C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3744,2932), // object size
  NSPAIRA(_ZTI8S10006C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10006C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C2  {
  short s20292c2f0:6;
  long s20292c2f1;
  short s20292c2f2:4;
  __tsi64 s20292c2f3[6];
  long s20292c2f4[7];
  void *s20292c2f5;
  virtual void  v6(); // _ZN8S20292C22v6Ev
  ~S20292C2(); // tgen
  S20292C2(); // tgen
};
//SIG(-1 S20292C2) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S20292C2 ::v6(){vfunc_called(this, "_ZN8S20292C22v6Ev");}
S20292C2 ::~S20292C2(){ note_dtor("S20292C2", this);} // tgen
S20292C2 ::S20292C2(){ note_ctor("S20292C2", this);} // tgen

static void Test_S20292C2()
{
  extern Class_Descriptor cd_S20292C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S20292C2, buf);
    S20292C2 *dp, &lv = *(dp=new (buf) S20292C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S20292C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20292C2)");
    set_bf_and_test(lv, s20292c2f0, ABISELECT(8,4), 0, 6, 1, "S20292C2");
    set_bf_and_test(lv, s20292c2f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S20292C2");
    check_field_offset(lv, s20292c2f1, ABISELECT(16,8), "S20292C2.s20292c2f1");
    set_bf_and_test(lv, s20292c2f2, ABISELECT(24,12), 0, 4, 1, "S20292C2");
    set_bf_and_test(lv, s20292c2f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S20292C2");
    check_field_offset(lv, s20292c2f3, ABISELECT(32,16), "S20292C2.s20292c2f3");
    check_field_offset(lv, s20292c2f4, ABISELECT(80,64), "S20292C2.s20292c2f4");
    check_field_offset(lv, s20292c2f5, ABISELECT(136,92), "S20292C2.s20292c2f5");
    test_class_info(&lv, &cd_S20292C2);
    dp->~S20292C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C2(Test_S20292C2, "S20292C2", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S20292C2C1Ev();
extern void _ZN8S20292C2D1Ev();
Name_Map name_map_S20292C2[] = {
  NSPAIR(_ZN8S20292C2C1Ev),
  NSPAIR(_ZN8S20292C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20292C2[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C2[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
Class_Descriptor cd_S20292C2 = {  "S20292C2", // class name
  0,0,//no base classes
  &(vtc_S20292C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S20292C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20292C2),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  S20292C3  : virtual S20292C2 {
  void *s20292c3f0;
  ::S20292C2 s20292c3f1;
  __tsi64 s20292c3f2:3;
  ~S20292C3(); // tgen
  S20292C3(); // tgen
};
//SIG(-1 S20292C3) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S20292C3 ::~S20292C3(){ note_dtor("S20292C3", this);} // tgen
S20292C3 ::S20292C3(){ note_ctor("S20292C3", this);} // tgen

static void Test_S20292C3()
{
  extern Class_Descriptor cd_S20292C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S20292C3, buf);
    S20292C3 *dp, &lv = *(dp=new (buf) S20292C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S20292C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20292C3)");
    check_base_class_offset(lv, (S20292C2*), ABISELECT(168,108), "S20292C3");
    check_field_offset(lv, s20292c3f0, ABISELECT(8,4), "S20292C3.s20292c3f0");
    check_field_offset(lv, s20292c3f1, ABISELECT(16,8), "S20292C3.s20292c3f1");
    set_bf_and_test(lv, s20292c3f2, ABISELECT(160,104), 0, 3, 1, "S20292C3");
    set_bf_and_test(lv, s20292c3f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S20292C3");
    test_class_info(&lv, &cd_S20292C3);
    dp->~S20292C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C3(Test_S20292C3, "S20292C3", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S20292C3C1Ev();
extern void _ZN8S20292C3D1Ev();
Name_Map name_map_S20292C3[] = {
  NSPAIR(_ZN8S20292C3C1Ev),
  NSPAIR(_ZN8S20292C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
static Base_Class bases_S20292C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    ABISELECT(168,108), //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 _ZTI8S20292C3[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C3[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20292C3[];
static  VTT_ENTRY vtt_S20292C3[] = {
  {&(_ZTV8S20292C3[3]),  3,7},
  {&(_ZTV8S20292C3[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
Class_Descriptor cd_S20292C3 = {  "S20292C3", // class name
  bases_S20292C3, 1,
  &(vtc_S20292C3[0]), // expected_vtbl_contents
  &(vtt_S20292C3[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S20292C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20292C3),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C3),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  S20292C7  {
  __tsi64 s20292c7f0;
  long double s20292c7f1;
  void *s20292c7f2;
  char s20292c7f3;
  ::S20292C2 s20292c7f4;
  void *s20292c7f5[2];
  long s20292c7f6[8];
  short s20292c7f7;
  void *s20292c7f8;
  __tsi64 s20292c7f9:64;
  virtual void  v7(); // _ZN8S20292C72v7Ev
  ~S20292C7(); // tgen
  S20292C7(); // tgen
};
//SIG(-1 S20292C7) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S20292C7 ::v7(){vfunc_called(this, "_ZN8S20292C72v7Ev");}
S20292C7 ::~S20292C7(){ note_dtor("S20292C7", this);} // tgen
S20292C7 ::S20292C7(){ note_ctor("S20292C7", this);} // tgen

static void Test_S20292C7()
{
  extern Class_Descriptor cd_S20292C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S20292C7, buf);
    S20292C7 *dp, &lv = *(dp=new (buf) S20292C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S20292C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C7)");
    check_field_offset(lv, s20292c7f0, ABISELECT(8,4), "S20292C7.s20292c7f0");
    check_field_offset(lv, s20292c7f1, ABISELECT(16,12), "S20292C7.s20292c7f1");
    check_field_offset(lv, s20292c7f2, ABISELECT(32,24), "S20292C7.s20292c7f2");
    check_field_offset(lv, s20292c7f3, ABISELECT(40,28), "S20292C7.s20292c7f3");
    check_field_offset(lv, s20292c7f4, ABISELECT(48,32), "S20292C7.s20292c7f4");
    check_field_offset(lv, s20292c7f5, ABISELECT(192,128), "S20292C7.s20292c7f5");
    check_field_offset(lv, s20292c7f6, ABISELECT(208,136), "S20292C7.s20292c7f6");
    check_field_offset(lv, s20292c7f7, ABISELECT(272,168), "S20292C7.s20292c7f7");
    check_field_offset(lv, s20292c7f8, ABISELECT(280,172), "S20292C7.s20292c7f8");
    set_bf_and_test(lv, s20292c7f9, ABISELECT(288,176), 0, 64, 1, "S20292C7");
    set_bf_and_test(lv, s20292c7f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S20292C7");
    test_class_info(&lv, &cd_S20292C7);
    dp->~S20292C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C7(Test_S20292C7, "S20292C7", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S20292C7C1Ev();
extern void _ZN8S20292C7D1Ev();
Name_Map name_map_S20292C7[] = {
  NSPAIR(_ZN8S20292C7C1Ev),
  NSPAIR(_ZN8S20292C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20292C7[];
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY vtc_S20292C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C7[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
Class_Descriptor cd_S20292C7 = {  "S20292C7", // class name
  0,0,//no base classes
  &(vtc_S20292C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S20292C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20292C7),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  S20292C8  {
  int s20292c8f0[2];
  long s20292c8f1[2];
  ::S20292C2 s20292c8f2[3];
  virtual void  v8(); // _ZN8S20292C82v8Ev
  virtual void  v9(); // _ZN8S20292C82v9Ev
  virtual void  v10(); // _ZN8S20292C83v10Ev
  ~S20292C8(); // tgen
  S20292C8(); // tgen
};
//SIG(-1 S20292C8) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S20292C8 ::v8(){vfunc_called(this, "_ZN8S20292C82v8Ev");}
void  S20292C8 ::v9(){vfunc_called(this, "_ZN8S20292C82v9Ev");}
void  S20292C8 ::v10(){vfunc_called(this, "_ZN8S20292C83v10Ev");}
S20292C8 ::~S20292C8(){ note_dtor("S20292C8", this);} // tgen
S20292C8 ::S20292C8(){ note_ctor("S20292C8", this);} // tgen

static void Test_S20292C8()
{
  extern Class_Descriptor cd_S20292C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S20292C8, buf);
    S20292C8 *dp, &lv = *(dp=new (buf) S20292C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S20292C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20292C8)");
    check_field_offset(lv, s20292c8f0, ABISELECT(8,4), "S20292C8.s20292c8f0");
    check_field_offset(lv, s20292c8f1, ABISELECT(16,12), "S20292C8.s20292c8f1");
    check_field_offset(lv, s20292c8f2, ABISELECT(32,20), "S20292C8.s20292c8f2");
    test_class_info(&lv, &cd_S20292C8);
    dp->~S20292C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C8(Test_S20292C8, "S20292C8", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S20292C8C1Ev();
extern void _ZN8S20292C8D1Ev();
Name_Map name_map_S20292C8[] = {
  NSPAIR(_ZN8S20292C8C1Ev),
  NSPAIR(_ZN8S20292C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20292C8[];
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY vtc_S20292C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C8[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
Class_Descriptor cd_S20292C8 = {  "S20292C8", // class name
  0,0,//no base classes
  &(vtc_S20292C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S20292C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20292C8),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  S20292C9  : S20292C2 , virtual S20292C8 , virtual S20292C3 , virtual S20292C7 {
  ::S20292C7 s20292c9f0;
  short s20292c9f1;
  int s20292c9f2[2];
  ~S20292C9(); // tgen
  S20292C9(); // tgen
};
//SIG(-1 S20292C9) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S20292C9 ::~S20292C9(){ note_dtor("S20292C9", this);} // tgen
S20292C9 ::S20292C9(){ note_ctor("S20292C9", this);} // tgen

static void Test_S20292C9()
{
  extern Class_Descriptor cd_S20292C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S20292C9, buf);
    S20292C9 *dp, &lv = *(dp=new (buf) S20292C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S20292C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C9)");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), 0, "S20292C9");
    check_base_class_offset(lv, (S20292C8*), ABISELECT(464,292), "S20292C9");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(1096,708), "S20292C9");
    check_base_class_offset(lv, (S20292C3*), ABISELECT(928,600), "S20292C9");
    check_base_class_offset(lv, (S20292C7*), ABISELECT(1248,804), "S20292C9");
    check_field_offset(lv, s20292c9f0, ABISELECT(144,96), "S20292C9.s20292c9f0");
    check_field_offset(lv, s20292c9f1, ABISELECT(448,280), "S20292C9.s20292c9f1");
    check_field_offset(lv, s20292c9f2, ABISELECT(452,284), "S20292C9.s20292c9f2");
    test_class_info(&lv, &cd_S20292C9);
    dp->~S20292C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C9(Test_S20292C9, "S20292C9", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN8S20292C9C1Ev();
extern void _ZN8S20292C9D1Ev();
Name_Map name_map_S20292C9[] = {
  NSPAIR(_ZN8S20292C9C1Ev),
  NSPAIR(_ZN8S20292C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
static Base_Class bases_S20292C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(464,292), //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_S20292C2,    ABISELECT(1096,708), //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_S20292C3,    ABISELECT(928,600), //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_S20292C7,    ABISELECT(1248,804), //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 _ZTI8S20292C9[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY vtc_S20292C9[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S20292C9[];
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C9[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C9[] = {
  {&(_ZTV8S20292C9[6]),  6,26},
  {&(_ZTV8S20292C9[12]),  12,26},
  {&(_ZTV8S20292C9[18]),  18,26},
  {&(_ZTV8S20292C9[21]),  21,26},
  {&(_ZTV8S20292C9[25]),  25,26},
  {&(_tg__ZTV8S20292C3__8S20292C9[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
Class_Descriptor cd_S20292C9 = {  "S20292C9", // class name
  bases_S20292C9, 5,
  &(vtc_S20292C9[0]), // expected_vtbl_contents
  &(vtt_S20292C9[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI8S20292C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20292C9),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C9),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  S20292C6  : S20292C7 , S20292C8 , S20292C2 {
  long s20292c6f0;
  __tsi64 s20292c6f1;
  void *s20292c6f2[8];
  ::S20292C9 s20292c6f3;
  void *s20292c6f4;
  int s20292c6f5;
  ::S20292C9 s20292c6f6;
  int s20292c6f7;
  virtual  ~S20292C6(); // _ZN8S20292C6D1Ev
  virtual void  v11(); // _ZN8S20292C63v11Ev
  S20292C6(); // tgen
};
//SIG(-1 S20292C6) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S20292C6 ::~S20292C6(){ note_dtor("S20292C6", this);}
void  S20292C6 ::v11(){vfunc_called(this, "_ZN8S20292C63v11Ev");}
S20292C6 ::S20292C6(){ note_ctor("S20292C6", this);} // tgen

static void Test_S20292C6()
{
  extern Class_Descriptor cd_S20292C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S20292C6, buf);
    S20292C6 *dp, &lv = *(dp=new (buf) S20292C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S20292C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C6)");
    check_base_class_offset(lv, (S20292C7*), 0, "S20292C6");
    check_base_class_offset(lv, (S20292C8*), ABISELECT(296,184), "S20292C6");
    check_base_class_offset(lv, (S20292C2*), ABISELECT(760,492), "S20292C6");
    check_field_offset(lv, s20292c6f0, ABISELECT(904,588), "S20292C6.s20292c6f0");
    check_field_offset(lv, s20292c6f1, ABISELECT(912,592), "S20292C6.s20292c6f1");
    check_field_offset(lv, s20292c6f2, ABISELECT(920,600), "S20292C6.s20292c6f2");
    check_field_offset(lv, s20292c6f3, ABISELECT(992,632), "S20292C6.s20292c6f3");
    check_field_offset(lv, s20292c6f4, ABISELECT(2544,1620), "S20292C6.s20292c6f4");
    check_field_offset(lv, s20292c6f5, ABISELECT(2552,1624), "S20292C6.s20292c6f5");
    check_field_offset(lv, s20292c6f6, ABISELECT(2560,1628), "S20292C6.s20292c6f6");
    check_field_offset(lv, s20292c6f7, ABISELECT(4112,2616), "S20292C6.s20292c6f7");
    test_class_info(&lv, &cd_S20292C6);
    dp->~S20292C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C6(Test_S20292C6, "S20292C6", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S20292C6C1Ev();
extern void _ZN8S20292C6D1Ev();
Name_Map name_map_S20292C6[] = {
  NSPAIR(_ZN8S20292C6C1Ev),
  NSPAIR(_ZN8S20292C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
static Base_Class bases_S20292C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20292C8,    ABISELECT(296,184), //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_S20292C2,    ABISELECT(760,492), //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 _ZTI8S20292C6[];
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C6D1Ev();
extern void _ZN8S20292C6D0Ev();
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C6[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN8S20292C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S20292C6[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S20292C6[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
Class_Descriptor cd_S20292C6 = {  "S20292C6", // class name
  bases_S20292C6, 3,
  &(vtc_S20292C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S20292C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20292C6),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  S20292C11  : S20292C7 {
  ::S20292C3 s20292c11f0;
  int s20292c11f1;
  void *s20292c11f2;
  int s20292c11f3;
  virtual  ~S20292C11(); // _ZN9S20292C11D1Ev
  virtual void  v13(); // _ZN9S20292C113v13Ev
  S20292C11(); // tgen
};
//SIG(-1 S20292C11) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S20292C11 ::~S20292C11(){ note_dtor("S20292C11", this);}
void  S20292C11 ::v13(){vfunc_called(this, "_ZN9S20292C113v13Ev");}
S20292C11 ::S20292C11(){ note_ctor("S20292C11", this);} // tgen

static void Test_S20292C11()
{
  extern Class_Descriptor cd_S20292C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S20292C11, buf);
    S20292C11 *dp, &lv = *(dp=new (buf) S20292C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S20292C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C11)");
    check_base_class_offset(lv, (S20292C7*), 0, "S20292C11");
    check_field_offset(lv, s20292c11f0, ABISELECT(296,184), "S20292C11.s20292c11f0");
    check_field_offset(lv, s20292c11f1, ABISELECT(608,388), "S20292C11.s20292c11f1");
    check_field_offset(lv, s20292c11f2, ABISELECT(616,392), "S20292C11.s20292c11f2");
    check_field_offset(lv, s20292c11f3, ABISELECT(624,396), "S20292C11.s20292c11f3");
    test_class_info(&lv, &cd_S20292C11);
    dp->~S20292C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C11(Test_S20292C11, "S20292C11", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN9S20292C11C1Ev();
extern void _ZN9S20292C11D1Ev();
Name_Map name_map_S20292C11[] = {
  NSPAIR(_ZN9S20292C11C1Ev),
  NSPAIR(_ZN9S20292C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
static Base_Class bases_S20292C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20292C11[];
extern void _ZN8S20292C72v7Ev();
extern void _ZN9S20292C11D1Ev();
extern void _ZN9S20292C11D0Ev();
extern void _ZN9S20292C113v13Ev();
static  VTBL_ENTRY vtc_S20292C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C11[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN9S20292C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C11D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
};
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
Class_Descriptor cd_S20292C11 = {  "S20292C11", // class name
  bases_S20292C11, 1,
  &(vtc_S20292C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI9S20292C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20292C11),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  S20292C10  : virtual S20292C7 , virtual S20292C6 , virtual S20292C2 , virtual S20292C3 {
  __tsi64 s20292c10f0:44;
  void *s20292c10f1;
  int s20292c10f2;
  ::S20292C9 s20292c10f3;
  long s20292c10f4[2];
  int s20292c10f5[3];
  ::S20292C6 s20292c10f6;
  char s20292c10f7:7;
  ::S20292C11 s20292c10f8;
  ~S20292C10(); // tgen
  S20292C10(); // tgen
};
//SIG(-1 S20292C10) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL: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}}


S20292C10 ::~S20292C10(){ note_dtor("S20292C10", this);} // tgen
S20292C10 ::S20292C10(){ note_ctor("S20292C10", this);} // tgen

static void Test_S20292C10()
{
  extern Class_Descriptor cd_S20292C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S20292C10, buf);
    S20292C10 *dp, &lv = *(dp=new (buf) S20292C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S20292C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C10)");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*), ABISELECT(6400,4052), "S20292C10");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(6704,4236), "S20292C10");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(7000,4420), "S20292C10");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(7464,4728), "S20292C10");
    check_base_class_offset(lv, (S20292C6*), ABISELECT(6704,4236), "S20292C10");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(10824,6856), "S20292C10");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(10824,6856), "S20292C10");
    check_base_class_offset(lv, (S20292C3*), ABISELECT(10968,6952), "S20292C10");
    set_bf_and_test(lv, s20292c10f0, ABISELECT(8,4), 0, 44, 1, "S20292C10");
    set_bf_and_test(lv, s20292c10f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S20292C10");
    check_field_offset(lv, s20292c10f1, ABISELECT(16,12), "S20292C10.s20292c10f1");
    check_field_offset(lv, s20292c10f2, ABISELECT(24,16), "S20292C10.s20292c10f2");
    check_field_offset(lv, s20292c10f3, ABISELECT(32,20), "S20292C10.s20292c10f3");
    check_field_offset(lv, s20292c10f4, ABISELECT(1584,1008), "S20292C10.s20292c10f4");
    check_field_offset(lv, s20292c10f5, ABISELECT(1600,1016), "S20292C10.s20292c10f5");
    check_field_offset(lv, s20292c10f6, ABISELECT(1616,1028), "S20292C10.s20292c10f6");
    set_bf_and_test(lv, s20292c10f7, ABISELECT(5744,3648), 0, 7, 1, "S20292C10");
    set_bf_and_test(lv, s20292c10f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S20292C10");
    check_field_offset(lv, s20292c10f8, ABISELECT(5760,3652), "S20292C10.s20292c10f8");
    test_class_info(&lv, &cd_S20292C10);
    dp->~S20292C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C10(Test_S20292C10, "S20292C10", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S20292C10C1Ev();
extern void _ZN9S20292C10D1Ev();
Name_Map name_map_S20292C10[] = {
  NSPAIR(_ZN9S20292C10C1Ev),
  NSPAIR(_ZN9S20292C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
static Base_Class bases_S20292C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(6400,4052), //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_S20292C7,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20292C8,    ABISELECT(7000,4420), //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_S20292C2,    ABISELECT(7464,4728), //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_S20292C6,    ABISELECT(6704,4236), //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_S20292C2,    ABISELECT(10824,6856), //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_S20292C3,    ABISELECT(10968,6952), //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 _ZTI9S20292C10[];
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn6704_N9S20292C10D1Ev,_ZThn4236_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn6704_N9S20292C10D0Ev,_ZThn4236_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C10[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern VTBL_ENTRY _ZTV9S20292C10[];
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C10[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C10[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C10[] = {
  {&(_ZTV9S20292C10[6]),  6,40},
  {&(_ZTV9S20292C10[11]),  11,40},
  {&(_ZTV9S20292C10[21]),  21,40},
  {&(_ZTV9S20292C10[27]),  27,40},
  {&(_ZTV9S20292C10[32]),  32,40},
  {&(_ZTV9S20292C10[36]),  36,40},
  {&(_ZTV9S20292C10[40]),  40,40},
  {&(_tg__ZTV8S20292C3__9S20292C10[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S20292C10D0Ev,_ZThn4236_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S20292C10D1Ev,_ZThn4236_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C10 = {  "S20292C10", // class name
  bases_S20292C10, 7,
  &(vtc_S20292C10[0]), // expected_vtbl_contents
  &(vtt_S20292C10[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S20292C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20292C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C10),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C5  : virtual S20292C6 , virtual S20292C2 , virtual S20292C3 , S20292C9 , S20292C10 {
  ::S20292C6 s20292c5f0;
  __tsi64 s20292c5f1;
  char s20292c5f2:7;
  virtual void  v12(); // _ZN8S20292C53v12Ev
  ~S20292C5(); // tgen
  S20292C5(); // tgen
};
//SIG(-1 S20292C5) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL: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  S20292C5 ::v12(){vfunc_called(this, "_ZN8S20292C53v12Ev");}
S20292C5 ::~S20292C5(){ note_dtor("S20292C5", this);} // tgen
S20292C5 ::S20292C5(){ note_ctor("S20292C5", this);} // tgen

static void Test_S20292C5()
{
  extern Class_Descriptor cd_S20292C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S20292C5, buf);
    S20292C5 *dp, &lv = *(dp=new (buf) S20292C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S20292C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C5)");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(11008,6976), "S20292C5");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(11304,7160), "S20292C5");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(11768,7468), "S20292C5");
    check_base_class_offset(lv, (S20292C6*), ABISELECT(11008,6976), "S20292C5");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*), ABISELECT(11008,6976), "S20292C5");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(15128,9596), "S20292C5");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15128,9596), "S20292C5");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*), ABISELECT(15128,9596), "S20292C5");
    check_base_class_offset(lv, (S20292C3*), ABISELECT(15272,9692), "S20292C5");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(15272,9692), "S20292C5");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*), ABISELECT(15272,9692), "S20292C5");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), 0, "S20292C5");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(15440,9800), "S20292C5");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(15904,10108), "S20292C5");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*), ABISELECT(15904,10108), "S20292C5");
    check_base_class_offset(lv, (S20292C9*), 0, "S20292C5");
    check_base_class_offset(lv, (S20292C10*), ABISELECT(464,292), "S20292C5");
    check_field_offset(lv, s20292c5f0, ABISELECT(6864,4344), "S20292C5.s20292c5f0");
    check_field_offset(lv, s20292c5f1, ABISELECT(10992,6964), "S20292C5.s20292c5f1");
    set_bf_and_test(lv, s20292c5f2, ABISELECT(11000,6972), 0, 7, 1, "S20292C5");
    set_bf_and_test(lv, s20292c5f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S20292C5");
    test_class_info(&lv, &cd_S20292C5);
    dp->~S20292C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C5(Test_S20292C5, "S20292C5", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN8S20292C5C1Ev();
extern void _ZN8S20292C5D1Ev();
Name_Map name_map_S20292C5[] = {
  NSPAIR(_ZN8S20292C5C1Ev),
  NSPAIR(_ZN8S20292C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
static Base_Class bases_S20292C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20292C8,    ABISELECT(11304,7160), //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_S20292C2,    ABISELECT(11768,7468), //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_S20292C6,    ABISELECT(11008,6976), //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_S20292C2,    ABISELECT(15128,9596), //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_S20292C3,    ABISELECT(15272,9692), //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_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(15440,9800), //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_S20292C7,    ABISELECT(15904,10108), //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_S20292C9,    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_S20292C10,    ABISELECT(464,292), //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 _ZTI8S20292C5[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY vtc_S20292C5[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern VTBL_ENTRY _ZTV8S20292C5[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__8S20292C5[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__8S20292C5[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__8S20292C5[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__8S20292C5[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__8S20292C5[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C10__8S20292C5[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C10__8S20292C5[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C10__8S20292C5[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C10__8S20292C5[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C10__8S20292C5[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C10__8S20292C5[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C5[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C5[] = {
  {&(_ZTV8S20292C5[7]),  7,59},
  {&(_tg__ZTV8S20292C9__8S20292C5[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__8S20292C5[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__8S20292C5[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__8S20292C5[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__8S20292C5[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C10__8S20292C5[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C10__8S20292C5[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C10__8S20292C5[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C10__8S20292C5[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C10__8S20292C5[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C10__8S20292C5[3]),  3,3},
  {&(_ZTV8S20292C5[28]),  28,59},
  {&(_ZTV8S20292C5[34]),  34,59},
  {&(_ZTV8S20292C5[39]),  39,59},
  {&(_ZTV8S20292C5[43]),  43,59},
  {&(_ZTV8S20292C5[47]),  47,59},
  {&(_ZTV8S20292C5[52]),  52,59},
  {&(_ZTV8S20292C5[58]),  58,59},
  {&(_ZTV8S20292C5[17]),  17,59},
  {&(_tg__ZTV8S20292C3__8S20292C5[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C5 = {  "S20292C5", // class name
  bases_S20292C5, 11,
  &(vtc_S20292C5[0]), // expected_vtbl_contents
  &(vtt_S20292C5[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI8S20292C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20292C5),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C5),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C13  : virtual S20292C7 , S20292C8 , virtual S20292C5 {
  char s20292c13f0:8;
  int s20292c13f1;
  ~S20292C13(); // tgen
  S20292C13(); // tgen
};
//SIG(-1 S20292C13) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL: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}


S20292C13 ::~S20292C13(){ note_dtor("S20292C13", this);} // tgen
S20292C13 ::S20292C13(){ note_ctor("S20292C13", this);} // tgen

static void Test_S20292C13()
{
  extern Class_Descriptor cd_S20292C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S20292C13, buf);
    S20292C13 *dp, &lv = *(dp=new (buf) S20292C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S20292C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C13)");
    /*is_ambiguous_... S20292C13::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*), ABISELECT(480,316), "S20292C13");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(480,316), "S20292C13");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(480,316), "S20292C13");
    /*is_ambiguous_... S20292C13::S20292C8 */ AMB_check_base_class_offset(lv, (S20292C8*), 0, "S20292C13");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(11792,7476), "S20292C13");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(12088,7660), "S20292C13");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(12552,7968), "S20292C13");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(11792,7476), "S20292C13");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(11792,7476), "S20292C13");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(15912,10096), "S20292C13");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15912,10096), "S20292C13");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(15912,10096), "S20292C13");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(16056,10192), "S20292C13");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(16056,10192), "S20292C13");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(16056,10192), "S20292C13");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(784,500), "S20292C13");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(16224,10300), "S20292C13");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(784,500), "S20292C13");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(1248,792), "S20292C13");
    check_base_class_offset(lv, (S20292C5*), ABISELECT(784,500), "S20292C13");
    set_bf_and_test(lv, s20292c13f0, ABISELECT(464,308), 0, 8, 1, "S20292C13");
    set_bf_and_test(lv, s20292c13f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S20292C13");
    check_field_offset(lv, s20292c13f1, ABISELECT(468,312), "S20292C13.s20292c13f1");
    test_class_info(&lv, &cd_S20292C13);
    dp->~S20292C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C13(Test_S20292C13, "S20292C13", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN9S20292C13C1Ev();
extern void _ZN9S20292C13D1Ev();
Name_Map name_map_S20292C13[] = {
  NSPAIR(_ZN9S20292C13C1Ev),
  NSPAIR(_ZN9S20292C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
static Base_Class bases_S20292C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(480,316), //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_S20292C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C7,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20292C8,    ABISELECT(12088,7660), //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_S20292C2,    ABISELECT(12552,7968), //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_S20292C6,    ABISELECT(11792,7476), //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_S20292C2,    ABISELECT(15912,10096), //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_S20292C3,    ABISELECT(16056,10192), //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_S20292C2,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20292C8,    ABISELECT(16224,10300), //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_S20292C9,    ABISELECT(784,500), //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_S20292C10,    ABISELECT(1248,792), //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_S20292C5,    ABISELECT(784,500), //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 _ZTI9S20292C13[];
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn784_N9S20292C13D1Ev,_ZThn500_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn784_N9S20292C13D0Ev,_ZThn500_N9S20292C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11792_N9S20292C13D1Ev,_ZThn7476_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11792_N9S20292C13D0Ev,_ZThn7476_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY vtc_S20292C13[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern VTBL_ENTRY _ZTV9S20292C13[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__9S20292C13[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C13[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C13[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C13[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C13[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C13[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C13[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C13[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__9S20292C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C13[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C13[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__9S20292C13[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__9S20292C13[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__9S20292C13[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__9S20292C13[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__9S20292C13[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C13[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C13[] = {
  {&(_ZTV9S20292C13[8]),  8,75},
  {&(_ZTV9S20292C13[16]),  16,75},
  {&(_ZTV9S20292C13[27]),  27,75},
  {&(_ZTV9S20292C13[48]),  48,75},
  {&(_ZTV9S20292C13[54]),  54,75},
  {&(_ZTV9S20292C13[59]),  59,75},
  {&(_ZTV9S20292C13[63]),  63,75},
  {&(_ZTV9S20292C13[67]),  67,75},
  {&(_ZTV9S20292C13[72]),  72,75},
  {&(_ZTV9S20292C13[37]),  37,75},
  {&(_tg__ZTV8S20292C5__9S20292C13[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__9S20292C13[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C13[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C13[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C13[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C13[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__9S20292C13[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C13[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C13[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__9S20292C13[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__9S20292C13[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__9S20292C13[6]),  6,8},
  {&(_tg__ZTV8S20292C3__9S20292C13[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S20292C13D0Ev,_ZThn7476_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N9S20292C13D1Ev,_ZThn7476_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20292C13D0Ev,_ZThn500_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S20292C13D1Ev,_ZThn500_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C13 = {  "S20292C13", // class name
  bases_S20292C13, 13,
  &(vtc_S20292C13[0]), // expected_vtbl_contents
  &(vtt_S20292C13[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI9S20292C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20292C13),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C13),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C12  : S20292C2 , virtual S20292C7 , virtual S20292C13 , S20292C9 , S20292C11 {
  int s20292c12f0;
  ::S20292C9 s20292c12f1;
  int s20292c12f2;
  short s20292c12f3;
  __tsi64 s20292c12f4:8;
  int s20292c12f5;
  virtual  ~S20292C12(); // _ZN9S20292C12D2Ev
  virtual void  v14(); // _ZN9S20292C123v14Ev
  S20292C12(); // tgen
};
//SIG(-1 S20292C12) C1{ BC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC8{ BC2 VBC5 VBC9{ VBC2 Fp FC2 FL: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}


 S20292C12 ::~S20292C12(){ note_dtor("S20292C12", this);}
void  S20292C12 ::v14(){vfunc_called(this, "_ZN9S20292C123v14Ev");}
S20292C12 ::S20292C12(){ note_ctor("S20292C12", this);} // tgen

static void Test_S20292C12()
{
  extern Class_Descriptor cd_S20292C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1219,3101)];
    init_test(&cd_S20292C12, buf);
    S20292C12 *dp, &lv = *(dp=new (buf) S20292C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(19488,12400), "sizeof(S20292C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C12)");
    /*is_ambiguous_... S20292C12::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), 0, "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C13::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(2816,1792), "S20292C12");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(2816,1792), "S20292C12");
    /*is_ambiguous_... S20292C13::S20292C8 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(3112,1976), "S20292C12");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(14592,9268), "S20292C12");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(14888,9452), "S20292C12");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(15352,9760), "S20292C12");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(14592,9268), "S20292C12");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(14592,9268), "S20292C12");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(18712,11888), "S20292C12");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(18712,11888), "S20292C12");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(18712,11888), "S20292C12");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(18856,11984), "S20292C12");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(18856,11984), "S20292C12");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(18856,11984), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(18856,11984), "S20292C12");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(3584,2292), "S20292C12");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(19024,12092), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(19024,12092), "S20292C12");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(3584,2292), "S20292C12");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(4048,2584), "S20292C12");
    check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(3584,2292), "S20292C12");
    check_base_class_offset(lv, (S20292C13*), ABISELECT(3112,1976), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), ABISELECT(144,96), "S20292C12");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*), ABISELECT(144,96), "S20292C12");
    check_base_class_offset(lv, (S20292C7*)(S20292C11*), ABISELECT(608,388), "S20292C12");
    check_base_class_offset(lv, (S20292C11*), ABISELECT(608,388), "S20292C12");
    check_field_offset(lv, s20292c12f0, ABISELECT(1236,788), "S20292C12.s20292c12f0");
    check_field_offset(lv, s20292c12f1, ABISELECT(1248,792), "S20292C12.s20292c12f1");
    check_field_offset(lv, s20292c12f2, ABISELECT(2800,1780), "S20292C12.s20292c12f2");
    check_field_offset(lv, s20292c12f3, ABISELECT(2804,1784), "S20292C12.s20292c12f3");
    set_bf_and_test(lv, s20292c12f4, ABISELECT(2806,1786), 0, 8, 1, "S20292C12");
    set_bf_and_test(lv, s20292c12f4, ABISELECT(2806,1786), 0, 8, hide_sll(1LL<<7), "S20292C12");
    check_field_offset(lv, s20292c12f5, ABISELECT(2808,1788), "S20292C12.s20292c12f5");
    test_class_info(&lv, &cd_S20292C12);
    dp->~S20292C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C12(Test_S20292C12, "S20292C12", ABISELECT(19488,12400));

#else // __cplusplus

extern void _ZN9S20292C12C1Ev();
extern void _ZN9S20292C12D2Ev();
Name_Map name_map_S20292C12[] = {
  NSPAIR(_ZN9S20292C12C1Ev),
  NSPAIR(_ZN9S20292C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C11;
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
static Base_Class bases_S20292C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C7,    ABISELECT(2816,1792), //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_S20292C8,    ABISELECT(3112,1976), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C7,    ABISELECT(14592,9268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20292C8,    ABISELECT(14888,9452), //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_S20292C2,    ABISELECT(15352,9760), //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_S20292C6,    ABISELECT(14592,9268), //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_S20292C2,    ABISELECT(18712,11888), //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_S20292C3,    ABISELECT(18856,11984), //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_S20292C2,    ABISELECT(3584,2292), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(19024,12092), //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_S20292C9,    ABISELECT(3584,2292), //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_S20292C10,    ABISELECT(4048,2584), //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_S20292C5,    ABISELECT(3584,2292), //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_S20292C13,    ABISELECT(3112,1976), //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_S20292C2,    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
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20292C9,    ABISELECT(144,96), //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_S20292C7,    ABISELECT(608,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
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20292C11,    ABISELECT(608,388), //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 _ZTI9S20292C12[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C12D1Ev();
extern void _ZN9S20292C12D0Ev();
extern void _ZN9S20292C123v14Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZThn608_N9S20292C12D1Ev,_ZThn388_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn608_N9S20292C12D0Ev,_ZThn388_N9S20292C12D0Ev)();
extern void _ZN9S20292C113v13Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn3112_N9S20292C12D1Ev,_ZThn1976_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn3112_N9S20292C12D0Ev,_ZThn1976_N9S20292C12D0Ev)() __attribute__((weak));
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn3584_N9S20292C12D1Ev,_ZThn2292_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn3584_N9S20292C12D0Ev,_ZThn2292_N9S20292C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn14592_N9S20292C12D1Ev,_ZThn9268_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn14592_N9S20292C12D0Ev,_ZThn9268_N9S20292C12D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY vtc_S20292C12[] = {
  ABISELECT(19024,12092),
  ABISELECT(18856,11984),
  ABISELECT(18712,11888),
  ABISELECT(14592,9268),
  ABISELECT(3584,2292),
  ABISELECT(3112,1976),
  ABISELECT(2816,1792),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S20292C12D1Ev,_ZThn388_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn608_N9S20292C12D0Ev,_ZThn388_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
  0,
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(-3112,-1976),
  0,
  0,
  0,
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  ABISELECT(-3112,-1976),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev),
  ABISELECT(-3584,-2292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-3584,-2292),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-4048,-2584),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-14592,-9268),
  0,
  ABISELECT(-14592,-9268),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-14888,-9452),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-15352,-9760),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-18856,-11984),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  0,
  0,
  0,
  ABISELECT(-19024,-12092),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern VTBL_ENTRY _ZTV9S20292C12[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A1__9S20292C12[] = {
  ABISELECT(2672,1696),
  ABISELECT(18568,11792),
  ABISELECT(18712,11888),
  ABISELECT(18880,11996),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__A1__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-18880,-11996),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__A1__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-18712,-11888),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__A1__9S20292C12[] = {
  0,
  ABISELECT(-18568,-11792),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__A1__9S20292C12[] = {
  0,
  ABISELECT(-2672,-1696),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__9S20292C12[] = {
  ABISELECT(15912,10116),
  ABISELECT(15744,10008),
  ABISELECT(15600,9912),
  ABISELECT(11480,7292),
  ABISELECT(472,316),
  ABISELECT(-296,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__9S20292C12[] = {
  0,
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn472_N9S20292C13D1Ev,_ZThn316_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn472_N9S20292C13D0Ev,_ZThn316_N9S20292C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__9S20292C12[] = {
  ABISELECT(-472,-316),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11480_N9S20292C13D1Ev,_ZThn7292_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11480_N9S20292C13D0Ev,_ZThn7292_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__9S20292C12[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11480,-7292),
  0,
  ABISELECT(-11480,-7292),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__9S20292C12[] = {
  ABISELECT(-11776,-7476),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__9S20292C12[] = {
  ABISELECT(-12240,-7784),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__9S20292C12[] = {
  0,
  ABISELECT(-15600,-9912),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15744,-10008),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-15912,-10116),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__9S20292C12[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-936,-608),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C12[] = {
  ABISELECT(11008,6976),
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__9S20292C12[] = {
  ABISELECT(-768,-500),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C12[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C12[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C12[] = {
  0,
  ABISELECT(1232,792),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C12[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__9S20292C12[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C12[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C12[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__9S20292C12[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__9S20292C12[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__9S20292C12[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__9S20292C12[] = {
  0,
  ABISELECT(768,500),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__9S20292C12[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-1232,-792),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C12[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C12[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C12[] = {
  {&(_ZTV9S20292C12[9]),  9,105},
  {&(_tg__ZTV8S20292C9__A1__9S20292C12[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__A1__9S20292C12[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__A1__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__A1__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__A1__9S20292C12[3]),  3,4},
  {&(_ZTV9S20292C12[29]),  29,105},
  {&(_ZTV9S20292C12[42]),  42,105},
  {&(_ZTV9S20292C12[57]),  57,105},
  {&(_ZTV9S20292C12[78]),  78,105},
  {&(_ZTV9S20292C12[84]),  84,105},
  {&(_ZTV9S20292C12[89]),  89,105},
  {&(_ZTV9S20292C12[93]),  93,105},
  {&(_ZTV9S20292C12[97]),  97,105},
  {&(_ZTV9S20292C12[102]),  102,105},
  {&(_ZTV9S20292C12[67]),  67,105},
  {&(_ZTV9S20292C12[19]),  19,105},
  {&(_tg__ZTV9S20292C13__9S20292C12[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__9S20292C12[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__9S20292C12[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__9S20292C12[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__9S20292C12[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__9S20292C12[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__9S20292C12[6]),  6,8},
  {&(_tg__ZTV8S20292C5__9S20292C12[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__9S20292C12[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__9S20292C12[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C12[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C12[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C12[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C12[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__9S20292C12[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C12[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C12[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__9S20292C12[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__9S20292C12[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__9S20292C12[6]),  6,8},
  {&(_tg__ZTV8S20292C3__9S20292C12[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C12[];
extern  VTBL_ENTRY _ZTV9S20292C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C12[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S20292C13D0Ev,_ZThn7292_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11480_N9S20292C13D1Ev,_ZThn7292_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S20292C13D0Ev,_ZThn316_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N9S20292C13D1Ev,_ZThn316_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S20292C12D0Ev,_ZThn9268_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn14592_N9S20292C12D1Ev,_ZThn9268_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S20292C12D0Ev,_ZThn2292_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3584_N9S20292C12D1Ev,_ZThn2292_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S20292C12D0Ev,_ZThn1976_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3112_N9S20292C12D1Ev,_ZThn1976_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C12 = {  "S20292C12", // class name
  bases_S20292C12, 19,
  &(vtc_S20292C12[0]), // expected_vtbl_contents
  &(vtt_S20292C12[0]), // expected_vtt_contents
  ABISELECT(19488,12400), // object size
  NSPAIRA(_ZTI9S20292C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20292C12),105, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C12),50, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C4  : virtual S20292C5 , virtual S20292C12 , S20292C3 , S20292C13 {
  char s20292c4f0;
  ::S19763C18_nt s20292c4f1;
  void *s20292c4f2;
  ~S20292C4(); // tgen
  S20292C4(); // tgen
};
//SIG(-1 S20292C4) C1{ VBC2{ VBC3{ BC4{ v1 FL FD Fp Fc FC5{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC6{ v2 v3 v4 Fi[2] Fl[2] FC5[3]} BC5 vd v6 Fl FL Fp[8] FC7{ BC5 VBC6 VBC8{ VBC5 Fp FC5 FL: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}


S20292C4 ::~S20292C4(){ note_dtor("S20292C4", this);} // tgen
S20292C4 ::S20292C4(){ note_ctor("S20292C4", this);} // tgen

static void Test_S20292C4()
{
  extern Class_Descriptor cd_S20292C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1261,3209)];
    init_test(&cd_S20292C4, buf);
    S20292C4 *dp, &lv = *(dp=new (buf) S20292C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20160,12832), "sizeof(S20292C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C4)");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(11664,7408), "S20292C4");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(11960,7592), "S20292C4");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(12424,7900), "S20292C4");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(11664,7408), "S20292C4");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(11664,7408), "S20292C4");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(15784,10028), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15784,10028), "S20292C4");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(15784,10028), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(15784,10028), "S20292C4");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(15928,10124), "S20292C4");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(15928,10124), "S20292C4");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(15928,10124), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C12*), ABISELECT(15928,10124), "S20292C4");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(656,432), "S20292C4");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(16096,10232), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C12*), ABISELECT(16096,10232), "S20292C4");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C12*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C12*), ABISELECT(16560,10540), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(16560,10540), "S20292C4");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(656,432), "S20292C4");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(1120,724), "S20292C4");
    check_base_class_offset(lv, (S20292C5*), ABISELECT(656,432), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(656,432), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(656,432), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C12*), ABISELECT(16864,10724), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(19680,12516), "S20292C4");
    check_base_class_offset(lv, (S20292C13*)(S20292C12*), ABISELECT(19680,12516), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C12*), ABISELECT(17008,10820), "S20292C4");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C12*), ABISELECT(17008,10820), "S20292C4");
    check_base_class_offset(lv, (S20292C7*)(S20292C11*)(S20292C12*), ABISELECT(17472,11112), "S20292C4");
    check_base_class_offset(lv, (S20292C11*)(S20292C12*), ABISELECT(17472,11112), "S20292C4");
    check_base_class_offset(lv, (S20292C12*), ABISELECT(16864,10724), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C3*), 0, "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(168,108), "S20292C4");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C13*), ABISELECT(168,108), "S20292C4");
    check_field_offset(lv, s20292c4f0, ABISELECT(640,424), "S20292C4.s20292c4f0");
    check_field_offset(lv, s20292c4f1, ABISELECT(641,425), "S20292C4.s20292c4f1");
    check_field_offset(lv, s20292c4f2, ABISELECT(648,428), "S20292C4.s20292c4f2");
    test_class_info(&lv, &cd_S20292C4);
    dp->~S20292C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C4(Test_S20292C4, "S20292C4", ABISELECT(20160,12832));

#else // __cplusplus

extern void _ZN8S20292C4C1Ev();
extern void _ZN8S20292C4D1Ev();
Name_Map name_map_S20292C4[] = {
  NSPAIR(_ZN8S20292C4C1Ev),
  NSPAIR(_ZN8S20292C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C11;
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
extern Class_Descriptor cd_S20292C12;
extern VTBL_ENTRY _ZTI9S20292C12[];
extern  VTBL_ENTRY _ZTV9S20292C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C12[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
static Base_Class bases_S20292C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C7,    ABISELECT(11664,7408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20292C8,    ABISELECT(11960,7592), //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_S20292C2,    ABISELECT(12424,7900), //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_S20292C6,    ABISELECT(11664,7408), //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_S20292C2,    ABISELECT(15784,10028), //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_S20292C3,    ABISELECT(15928,10124), //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_S20292C2,    ABISELECT(656,432), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(16096,10232), //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_S20292C7,    ABISELECT(16560,10540), //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_S20292C9,    ABISELECT(656,432), //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_S20292C10,    ABISELECT(1120,724), //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_S20292C5,    ABISELECT(656,432), //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_S20292C2,    ABISELECT(16864,10724), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(19680,12516), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C13,    ABISELECT(19680,12516), //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_S20292C2,    ABISELECT(17008,10820), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C9,    ABISELECT(17008,10820), //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_S20292C7,    ABISELECT(17472,11112), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C11,    ABISELECT(17472,11112), //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_S20292C12,    ABISELECT(16864,10724), //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_S20292C3,    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_S20292C8,    ABISELECT(168,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
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20292C13,    ABISELECT(168,108), //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 _ZTI8S20292C4[];
extern void _ZN8S20292C4D1Ev();
extern void _ZN8S20292C4D0Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn16864_N8S20292C4D1Ev,_ZThn10724_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn16864_N8S20292C4D0Ev,_ZThn10724_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN9S20292C123v14Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev)();
extern void _ZN9S20292C113v13Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn19680_N8S20292C4D1Ev,_ZThn12516_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn19680_N8S20292C4D0Ev,_ZThn12516_N8S20292C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20292C4[] = {
  ABISELECT(19680,12516),
  ABISELECT(16864,10724),
  ABISELECT(16560,10540),
  ABISELECT(16096,10232),
  ABISELECT(15928,10124),
  ABISELECT(11664,7408),
  ABISELECT(656,432),
  ABISELECT(15784,10028),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C4D0Ev,
  ABISELECT(15928,10124),
  ABISELECT(15760,10016),
  ABISELECT(15616,9920),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16392,10432),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev),
  ABISELECT(-656,-432),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-656,-432),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-1120,-724),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11664,-7408),
  0,
  ABISELECT(-11664,-7408),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-11960,-7592),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-12424,-7900),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-15784,-10028),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15928,-10124),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  0,
  0,
  0,
  ABISELECT(-16096,-10232),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  0,
  ABISELECT(-16560,-10540),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-16864,-10724),
  0,
  ABISELECT(-768,-492),
  ABISELECT(-936,-600),
  ABISELECT(-1080,-696),
  ABISELECT(-5200,-3316),
  ABISELECT(-16208,-10292),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  ABISELECT(-16864,-10724),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
  ABISELECT(-448,-280),
  ABISELECT(-1224,-792),
  ABISELECT(-1080,-696),
  ABISELECT(-912,-588),
  ABISELECT(-17008,-10820),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-17472,-11112),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
  ABISELECT(-19680,-12516),
  0,
  0,
  0,
  ABISELECT(-3584,-2284),
  ABISELECT(-3752,-2392),
  ABISELECT(-3896,-2488),
  ABISELECT(-8016,-5108),
  ABISELECT(-19024,-12084),
  ABISELECT(-3120,-1976),
  ABISELECT(-19680,-12516),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20292C4[];
static  VTBL_ENTRY _tg__ZTV8S20292C3__A__8S20292C4[] = {
  ABISELECT(15784,10028),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__A__8S20292C4[] = {
  0,
  ABISELECT(-15784,-10028),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__A__8S20292C4[] = {
  ABISELECT(15928,10124),
  ABISELECT(15760,10016),
  ABISELECT(15616,9920),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16392,10432),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__A__8S20292C4[] = {
  0,
  ABISELECT(-16392,-10432),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-488,-324),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-488,-324),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__A__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11496,-7300),
  0,
  ABISELECT(-11496,-7300),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-11792,-7484),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-12256,-7792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__A__8S20292C4[] = {
  0,
  ABISELECT(-15616,-9920),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__A__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15760,-10016),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__A__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(-15928,-10124),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__A__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-952,-616),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__8S20292C4[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__8S20292C4[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C4[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C4[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__8S20292C4[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C4[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C4[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C12D1Ev();
extern void _ZN9S20292C12D0Ev();
extern void _ZN9S20292C123v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C12__8S20292C4[] = {
  ABISELECT(-768,-492),
  ABISELECT(-936,-600),
  ABISELECT(-1080,-696),
  ABISELECT(-5200,-3316),
  ABISELECT(-16208,-10292),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C12__A1__8S20292C4[] = {
  ABISELECT(-448,-280),
  ABISELECT(-1224,-792),
  ABISELECT(-1080,-696),
  ABISELECT(-912,-588),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(912,588),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C4[] = {
  0,
  ABISELECT(1224,792),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C4[] = {
  0,
  ABISELECT(448,280),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C12__8S20292C4[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20292C13__9S20292C12__8S20292C4[] = {
  ABISELECT(-2816,-1792),
  0,
  0,
  0,
  ABISELECT(-3584,-2284),
  ABISELECT(-3752,-2392),
  ABISELECT(-3896,-2488),
  ABISELECT(-8016,-5108),
  ABISELECT(-19024,-12084),
  ABISELECT(-3120,-1976),
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C12__8S20292C4[] = {
  ABISELECT(16208,10292),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(16208,10292),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C12__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(5200,3316),
  0,
  ABISELECT(5200,3316),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C4[] = {
  ABISELECT(4904,3132),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C4[] = {
  ABISELECT(4440,2824),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A2__9S20292C12__8S20292C4[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C12__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(936,600),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C12__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(768,492),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(15744,10000),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A1__9S20292C12__8S20292C4[] = {
  ABISELECT(-448,-280),
  ABISELECT(-1224,-792),
  ABISELECT(-1080,-696),
  ABISELECT(-912,-588),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__8S20292C4[] = {
  ABISELECT(-3584,-2284),
  ABISELECT(-3752,-2392),
  ABISELECT(-3896,-2488),
  ABISELECT(-8016,-5108),
  ABISELECT(-19024,-12084),
  ABISELECT(-3120,-1976),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__8S20292C4[] = {
  0,
  ABISELECT(3120,1976),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__8S20292C4[] = {
  ABISELECT(19024,12084),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(19024,12084),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__8S20292C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8016,5108),
  0,
  ABISELECT(8016,5108),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C4[] = {
  ABISELECT(7720,4924),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C4[] = {
  ABISELECT(7256,4616),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__8S20292C4[] = {
  0,
  ABISELECT(3896,2488),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__8S20292C4[] = {
  ABISELECT(-144,-96),
  ABISELECT(3752,2392),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__8S20292C4[] = {
  0,
  0,
  0,
  ABISELECT(3584,2284),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C4[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(18560,11792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
static  VTT_ENTRY vtt_S20292C4[] = {
  {&(_ZTV8S20292C4[10]),  10,135},
  {&(_tg__ZTV8S20292C3__A__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__A__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C13__A__8S20292C4[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__A__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__A__8S20292C4[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__A__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__A__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__A__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__A__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__A__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__A__8S20292C4[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__A__8S20292C4[6]),  6,8},
  {&(_ZTV8S20292C4[35]),  35,135},
  {&(_ZTV8S20292C4[56]),  56,135},
  {&(_ZTV8S20292C4[62]),  62,135},
  {&(_ZTV8S20292C4[67]),  67,135},
  {&(_ZTV8S20292C4[71]),  71,135},
  {&(_ZTV8S20292C4[75]),  75,135},
  {&(_ZTV8S20292C4[80]),  80,135},
  {&(_ZTV8S20292C4[86]),  86,135},
  {&(_ZTV8S20292C4[45]),  45,135},
  {&(_ZTV8S20292C4[101]),  101,135},
  {&(_ZTV8S20292C4[130]),  130,135},
  {&(_ZTV8S20292C4[111]),  111,135},
  {&(_ZTV8S20292C4[114]),  114,135},
  {&(_ZTV8S20292C4[20]),  20,135},
  {&(_tg__ZTV8S20292C5__8S20292C4[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__8S20292C4[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C4[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__8S20292C4[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__8S20292C4[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__8S20292C4[6]),  6,8},
  {&(_tg__ZTV8S20292C3__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C12__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C99S20292C12__A1__8S20292C4[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C4[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C7__9S20292C12__8S20292C4[3]),  3,4},
  {&(_tg__ZTV9S20292C13__9S20292C12__8S20292C4[12]),  12,17},
  {&(_tg__ZTV8S20292C5__9S20292C12__8S20292C4[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C12__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A2__9S20292C12__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C12__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C12__8S20292C4[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C4[6]),  6,8},
  {&(_tg__ZTV8S20292C9__A1__9S20292C12__8S20292C4[6]),  6,7},
  {&(_tg__ZTV9S20292C13__8S20292C4[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__8S20292C4[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__8S20292C4[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C4[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C4[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__8S20292C4[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__8S20292C4[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__8S20292C4[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C4[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20292C4[];
extern  VTBL_ENTRY _ZTV8S20292C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C4[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20292C4D0Ev,_ZThn12516_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19680_N8S20292C4D1Ev,_ZThn12516_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20292C4D0Ev,_ZThn10724_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16864_N8S20292C4D1Ev,_ZThn10724_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C4 = {  "S20292C4", // class name
  bases_S20292C4, 23,
  &(vtc_S20292C4[0]), // expected_vtbl_contents
  &(vtt_S20292C4[0]), // expected_vtt_contents
  ABISELECT(20160,12832), // object size
  NSPAIRA(_ZTI8S20292C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20292C4),135, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C4),77, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C15  : S20292C9 , S20292C10 {
  int s20292c15f0:13;
  long s20292c15f1;
  int s20292c15f2;
  void *s20292c15f3[2];
  __tsi64 s20292c15f4;
  ::S20292C8 s20292c15f5;
  virtual  ~S20292C15(); // _ZN9S20292C15D2Ev
  virtual void  v15(); // _ZN9S20292C153v15Ev
  virtual void  v16(); // _ZN9S20292C153v16Ev
  S20292C15(); // tgen
};
//SIG(-1 S20292C15) C1{ BC2{ BC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC4{ v4 v5 v6 Fi[2] Fl[2] FC3[3]} VBC5{ VBC3 Fp FC3 FL: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 FL 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}


 S20292C15 ::~S20292C15(){ note_dtor("S20292C15", this);}
void  S20292C15 ::v15(){vfunc_called(this, "_ZN9S20292C153v15Ev");}
void  S20292C15 ::v16(){vfunc_called(this, "_ZN9S20292C153v16Ev");}
S20292C15 ::S20292C15(){ note_ctor("S20292C15", this);} // tgen

static void Test_S20292C15()
{
  extern Class_Descriptor cd_S20292C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(788,2000)];
    init_test(&cd_S20292C15, buf);
    S20292C15 *dp, &lv = *(dp=new (buf) S20292C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12592,7996), "sizeof(S20292C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C15)");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), 0, "S20292C15");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(7376,4680), "S20292C15");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(8008,5096), "S20292C15");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*), ABISELECT(8008,5096), "S20292C15");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(7840,4988), "S20292C15");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*), ABISELECT(7840,4988), "S20292C15");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(8160,5192), "S20292C15");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*), ABISELECT(8160,5192), "S20292C15");
    check_base_class_offset(lv, (S20292C9*), 0, "S20292C15");
    check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(8464,5376), "S20292C15");
    check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(8760,5560), "S20292C15");
    check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(9224,5868), "S20292C15");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*), ABISELECT(8464,5376), "S20292C15");
    check_base_class_offset(lv, (S20292C10*), ABISELECT(464,292), "S20292C15");
    set_bf_and_test(lv, s20292c15f0, ABISELECT(6864,4344), 0, 13, 1, "S20292C15");
    set_bf_and_test(lv, s20292c15f0, ABISELECT(6864,4344), 0, 13, hide_sll(1LL<<12), "S20292C15");
    check_field_offset(lv, s20292c15f1, ABISELECT(6872,4348), "S20292C15.s20292c15f1");
    check_field_offset(lv, s20292c15f2, ABISELECT(6880,4352), "S20292C15.s20292c15f2");
    check_field_offset(lv, s20292c15f3, ABISELECT(6888,4356), "S20292C15.s20292c15f3");
    check_field_offset(lv, s20292c15f4, ABISELECT(6904,4364), "S20292C15.s20292c15f4");
    check_field_offset(lv, s20292c15f5, ABISELECT(6912,4372), "S20292C15.s20292c15f5");
    test_class_info(&lv, &cd_S20292C15);
    dp->~S20292C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C15(Test_S20292C15, "S20292C15", ABISELECT(12592,7996));

#else // __cplusplus

extern void _ZN9S20292C15C1Ev();
extern void _ZN9S20292C15D2Ev();
Name_Map name_map_S20292C15[] = {
  NSPAIR(_ZN9S20292C15C1Ev),
  NSPAIR(_ZN9S20292C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
static Base_Class bases_S20292C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(7376,4680), //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_S20292C2,    ABISELECT(8008,5096), //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_S20292C3,    ABISELECT(7840,4988), //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_S20292C7,    ABISELECT(8160,5192), //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_S20292C9,    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_S20292C7,    ABISELECT(8464,5376), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(8760,5560), //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_S20292C2,    ABISELECT(9224,5868), //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_S20292C6,    ABISELECT(8464,5376), //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_S20292C10,    ABISELECT(464,292), //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 _ZTI9S20292C15[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C15D1Ev();
extern void _ZN9S20292C15D0Ev();
extern void _ZN9S20292C153v15Ev();
extern void _ZN9S20292C153v16Ev();
extern void ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev)();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn8464_N9S20292C15D1Ev,_ZThn5376_N9S20292C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev)();
extern void ABISELECT(_ZThn8464_N9S20292C15D0Ev,_ZThn5376_N9S20292C15D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C15[] = {
  ABISELECT(8464,5376),
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v16Ev,
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev),
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8464,-5376),
  0,
  ABISELECT(-8464,-5376),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-8760,-5560),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-9224,-5868),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV9S20292C15[];
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__9S20292C15[] = {
  ABISELECT(8160,5192),
  ABISELECT(8008,5096),
  ABISELECT(7840,4988),
  ABISELECT(7376,4680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__9S20292C15[] = {
  0,
  0,
  0,
  ABISELECT(-7376,-4680),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__9S20292C15[] = {
  ABISELECT(168,108),
  ABISELECT(-7840,-4988),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__9S20292C15[] = {
  0,
  ABISELECT(-8008,-5096),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__9S20292C15[] = {
  0,
  ABISELECT(-8160,-5192),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C10__9S20292C15[] = {
  ABISELECT(7376,4696),
  ABISELECT(7544,4804),
  ABISELECT(8000,5084),
  ABISELECT(7696,4900),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C10__9S20292C15[] = {
  0,
  ABISELECT(-7696,-4900),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn8000_N9S20292C10D1Ev,_ZThn5084_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn8000_N9S20292C10D0Ev,_ZThn5084_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C10__9S20292C15[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-8000,-5084),
  0,
  ABISELECT(-8000,-5084),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C10__9S20292C15[] = {
  ABISELECT(-8296,-5268),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C10__9S20292C15[] = {
  ABISELECT(-8760,-5576),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C10__9S20292C15[] = {
  0,
  ABISELECT(-7544,-4804),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C10__9S20292C15[] = {
  ABISELECT(168,108),
  ABISELECT(-7376,-4696),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C15[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C15[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C15[] = {
  {&(_ZTV9S20292C15[7]),  7,60},
  {&(_tg__ZTV8S20292C9__9S20292C15[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__9S20292C15[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__9S20292C15[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__9S20292C15[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__9S20292C15[3]),  3,4},
  {&(_tg__ZTV9S20292C10__9S20292C15[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C10__9S20292C15[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C10__9S20292C15[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C10__9S20292C15[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C10__9S20292C15[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C10__9S20292C15[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C10__9S20292C15[3]),  3,3},
  {&(_ZTV9S20292C15[25]),  25,60},
  {&(_ZTV9S20292C15[31]),  31,60},
  {&(_ZTV9S20292C15[34]),  34,60},
  {&(_ZTV9S20292C15[38]),  38,60},
  {&(_ZTV9S20292C15[18]),  18,60},
  {&(_ZTV9S20292C15[48]),  48,60},
  {&(_ZTV9S20292C15[54]),  54,60},
  {&(_ZTV9S20292C15[59]),  59,60},
  {&(_tg__ZTV8S20292C3__9S20292C15[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C15[];
extern  VTBL_ENTRY _ZTV9S20292C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C15[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S20292C10D0Ev,_ZThn5084_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8000_N9S20292C10D1Ev,_ZThn5084_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S20292C15D0Ev,_ZThn5376_N9S20292C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8464_N9S20292C15D1Ev,_ZThn5376_N9S20292C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C15 = {  "S20292C15", // class name
  bases_S20292C15, 11,
  &(vtc_S20292C15[0]), // expected_vtbl_contents
  &(vtt_S20292C15[0]), // expected_vtt_contents
  ABISELECT(12592,7996), // object size
  NSPAIRA(_ZTI9S20292C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20292C15),60, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C15),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C16  : virtual S20292C2 , virtual S20292C9 , S20292C6 , S20292C5 {
  ::S20292C10 s20292c16f0;
  short s20292c16f1;
  __tsi64 s20292c16f2:8;
  virtual void  v17(); // _ZN9S20292C163v17Ev
  virtual void  v18(); // _ZN9S20292C163v18Ev
  ~S20292C16(); // tgen
  S20292C16(); // tgen
};
//SIG(-1 S20292C16) C1{ VBC2{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ BC2 VBC4{ v4 v5 v6 Fi[2] Fl[2] FC2[3]} VBC5{ VBC2 Fp FC2 FL: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 FL 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 FL:8}


void  S20292C16 ::v17(){vfunc_called(this, "_ZN9S20292C163v17Ev");}
void  S20292C16 ::v18(){vfunc_called(this, "_ZN9S20292C163v18Ev");}
S20292C16 ::~S20292C16(){ note_dtor("S20292C16", this);} // tgen
S20292C16 ::S20292C16(){ note_ctor("S20292C16", this);} // tgen

static void Test_S20292C16()
{
  extern Class_Descriptor cd_S20292C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1999,5068)];
    init_test(&cd_S20292C16, buf);
    S20292C16 *dp, &lv = *(dp=new (buf) S20292C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(31968,20268), "sizeof(S20292C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C16)");
    /*is_ambiguous_... S20292C16::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(26280,16660), "S20292C16");
    check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(26280,16660), "S20292C16");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(26280,16660), "S20292C16");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(26280,16660), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), ABISELECT(26432,16756), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(26896,17048), "S20292C16");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(26896,17048), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(27360,17356), "S20292C16");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(27360,17356), "S20292C16");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(27360,17356), "S20292C16");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(27360,17356), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(27536,17464), "S20292C16");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(27536,17464), "S20292C16");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(27536,17464), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*), ABISELECT(26432,16756), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*), 0, "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(296,184), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(760,492), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C6*), 0, "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(27840,17648), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(28136,17832), "S20292C16");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(28600,18140), "S20292C16");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(27840,17648), "S20292C16");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(27840,17648), "S20292C16");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(4128,2620), "S20292C16");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(4128,2620), "S20292C16");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(4592,2912), "S20292C16");
    check_base_class_offset(lv, (S20292C5*), ABISELECT(4128,2620), "S20292C16");
    check_field_offset(lv, s20292c16f0, ABISELECT(15136,9596), "S20292C16.s20292c16f0");
    check_field_offset(lv, s20292c16f1, ABISELECT(26272,16656), "S20292C16.s20292c16f1");
    set_bf_and_test(lv, s20292c16f2, ABISELECT(26274,16658), 0, 8, 1, "S20292C16");
    set_bf_and_test(lv, s20292c16f2, ABISELECT(26274,16658), 0, 8, hide_sll(1LL<<7), "S20292C16");
    test_class_info(&lv, &cd_S20292C16);
    dp->~S20292C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C16(Test_S20292C16, "S20292C16", ABISELECT(31968,20268));

#else // __cplusplus

extern void _ZN9S20292C16C1Ev();
extern void _ZN9S20292C16D1Ev();
Name_Map name_map_S20292C16[] = {
  NSPAIR(_ZN9S20292C16C1Ev),
  NSPAIR(_ZN9S20292C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
static Base_Class bases_S20292C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    ABISELECT(26280,16660), //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_S20292C2,    ABISELECT(26432,16756), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(26896,17048), //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_S20292C3,    ABISELECT(27360,17356), //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_S20292C7,    ABISELECT(27536,17464), //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_S20292C9,    ABISELECT(26432,16756), //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_S20292C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(296,184), //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_S20292C2,    ABISELECT(760,492), //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_S20292C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C7,    ABISELECT(27840,17648), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(28136,17832), //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_S20292C2,    ABISELECT(28600,18140), //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_S20292C6,    ABISELECT(27840,17648), //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_S20292C2,    ABISELECT(4128,2620), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C9,    ABISELECT(4128,2620), //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_S20292C10,    ABISELECT(4592,2912), //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_S20292C5,    ABISELECT(4128,2620), //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 _ZTI9S20292C16[];
extern void _ZN8S20292C72v7Ev();
extern void _ZN9S20292C16D1Ev();
extern void _ZN9S20292C16D0Ev();
extern void _ZN8S20292C63v11Ev();
extern void _ZN9S20292C163v17Ev();
extern void _ZN9S20292C163v18Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev)();
extern void ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn27840_N9S20292C16D1Ev,_ZThn17648_N9S20292C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev)();
extern void ABISELECT(_ZThn27840_N9S20292C16D0Ev,_ZThn17648_N9S20292C16D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C16[] = {
  ABISELECT(27840,17648),
  ABISELECT(27536,17464),
  ABISELECT(27360,17356),
  ABISELECT(26896,17048),
  ABISELECT(26432,16756),
  ABISELECT(26280,16660),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D0Ev,
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v17Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v18Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev),
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev),
  0,
  ABISELECT(-26280,-16660),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  ABISELECT(-26432,-16756),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-26896,-17048),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-1080,-696),
  ABISELECT(-27360,-17356),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  0,
  ABISELECT(-27536,-17464),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-27840,-17648),
  0,
  ABISELECT(-27840,-17648),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-28136,-17832),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-28600,-18140),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV9S20292C16[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C16[] = {
  ABISELECT(23712,15028),
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__A1__9S20292C16[] = {
  ABISELECT(23408,14844),
  ABISELECT(22152,14040),
  ABISELECT(23232,14736),
  ABISELECT(22768,14428),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__A1__9S20292C16[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__A1__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__A1__9S20292C16[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__A1__9S20292C16[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-22944,-14552),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn23248_N9S20292C10D1Ev,_ZThn14736_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn23248_N9S20292C10D0Ev,_ZThn14736_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23248,-14736),
  0,
  ABISELECT(-23248,-14736),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(-23544,-14920),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(-24008,-15228),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-21688,-13748),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-22768,-14444),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn23712_N8S20292C5D1Ev,_ZThn15028_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn23712_N8S20292C5D0Ev,_ZThn15028_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__9S20292C16[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23712,-15028),
  0,
  ABISELECT(-23712,-15028),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C16[] = {
  ABISELECT(-24008,-15212),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C16[] = {
  ABISELECT(-24472,-15520),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-22152,-14040),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-23232,-14736),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__9S20292C16[] = {
  0,
  0,
  0,
  ABISELECT(-22768,-14428),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__9S20292C16[] = {
  0,
  ABISELECT(-23408,-14844),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__9S20292C16[] = {
  ABISELECT(22768,14444),
  ABISELECT(21688,13748),
  ABISELECT(23248,14736),
  ABISELECT(22944,14552),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__9S20292C16[] = {
  ABISELECT(1104,708),
  ABISELECT(-152,-96),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__9S20292C16[] = {
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__9S20292C16[] = {
  ABISELECT(-1080,-696),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__9S20292C16[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__9S20292C16[] = {
  0,
  ABISELECT(-1104,-708),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C16[] = {
  ABISELECT(-1080,-696),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__9S20292C16[] = {
  0,
  ABISELECT(1080,696),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTT_ENTRY vtt_S20292C16[] = {
  {&(_ZTV9S20292C16[8]),  8,89},
  {&(_tg__ZTV8S20292C5__9S20292C16[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__A1__9S20292C16[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__A1__9S20292C16[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__A1__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__A1__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__A1__9S20292C16[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C16[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__9S20292C16[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__9S20292C16[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__9S20292C16[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__9S20292C16[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__9S20292C16[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__9S20292C16[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__9S20292C16[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__9S20292C16[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__9S20292C16[6]),  6,8},
  {&(_ZTV9S20292C16[44]),  44,89},
  {&(_ZTV9S20292C16[52]),  52,89},
  {&(_ZTV9S20292C16[58]),  58,89},
  {&(_ZTV9S20292C16[64]),  64,89},
  {&(_ZTV9S20292C16[67]),  67,89},
  {&(_ZTV9S20292C16[29]),  29,89},
  {&(_ZTV9S20292C16[77]),  77,89},
  {&(_ZTV9S20292C16[83]),  83,89},
  {&(_ZTV9S20292C16[88]),  88,89},
  {&(_ZTV9S20292C16[39]),  39,89},
  {&(_tg__ZTV8S20292C9__9S20292C16[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__9S20292C16[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__9S20292C16[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C16[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__9S20292C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20292C16[];
extern  VTBL_ENTRY _ZTV9S20292C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C16[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S20292C5D0Ev,_ZThn15028_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23712_N8S20292C5D1Ev,_ZThn15028_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S20292C10D0Ev,_ZThn14736_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23248_N9S20292C10D1Ev,_ZThn14736_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N9S20292C16D0Ev,_ZThn17648_N9S20292C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn27840_N9S20292C16D1Ev,_ZThn17648_N9S20292C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C16 = {  "S20292C16", // class name
  bases_S20292C16, 18,
  &(vtc_S20292C16[0]), // expected_vtbl_contents
  &(vtt_S20292C16[0]), // expected_vtt_contents
  ABISELECT(31968,20268), // object size
  NSPAIRA(_ZTI9S20292C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20292C16),89, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20292C16),39, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20292C1  : virtual S20292C2 , virtual S20292C3 , virtual S20292C4 , S20292C15 , virtual S20292C16 {
  __tsi64 s20292c1f0[4];
  int s20292c1f1[2];
  ::S20292C13 s20292c1f2;
  int s20292c1f3;
  short s20292c1f4;
  int s20292c1f5[4];
  virtual  ~S20292C1(); // _ZN8S20292C1D2Ev
  virtual void  v1(); // _ZN8S20292C12v1Ev
  virtual void  v2(); // _ZN8S20292C12v2Ev
  virtual void  v3(); // _ZN8S20292C12v3Ev
  virtual void  v4(); // _ZN8S20292C12v4Ev
  virtual void  v5(); // _ZN8S20292C12v5Ev
  S20292C1(); // tgen
};
//SIG(1 S20292C1) C1{ VBC2{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ VBC2 Fp FC2 FL: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 FL 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 FL:8} vd v1 v2 v3 v4 v5 FL[4] Fi[2] FC13 Fi Fs Fi[4]}


 S20292C1 ::~S20292C1(){ note_dtor("S20292C1", this);}
void  S20292C1 ::v1(){vfunc_called(this, "_ZN8S20292C12v1Ev");}
void  S20292C1 ::v2(){vfunc_called(this, "_ZN8S20292C12v2Ev");}
void  S20292C1 ::v3(){vfunc_called(this, "_ZN8S20292C12v3Ev");}
void  S20292C1 ::v4(){vfunc_called(this, "_ZN8S20292C12v4Ev");}
void  S20292C1 ::v5(){vfunc_called(this, "_ZN8S20292C12v5Ev");}
S20292C1 ::S20292C1(){ note_ctor("S20292C1", this);} // tgen

static void Test_S20292C1()
{
  extern Class_Descriptor cd_S20292C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4442,11285)];
    init_test(&cd_S20292C1, buf);
    S20292C1 *dp, &lv = *(dp=new (buf) S20292C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(71056,45136), "sizeof(S20292C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20292C1)");
    /*is_ambiguous_... S20292C1::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C3*)(S20292C4*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C15*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C16*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C5::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C5*)(S20292C16*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(24136,15352), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C3*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C5*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C12*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C15*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C15*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C9*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C5*)(S20292C16*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(24280,15448), "S20292C1");
    check_base_class_offset(lv, (S20292C3*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(24280,15448), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*), ABISELECT(36112,22964), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*), ABISELECT(36408,23148), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*), ABISELECT(36872,23456), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C6*)(S20292C5*), ABISELECT(36112,22964), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*), ABISELECT(36112,22964), "S20292C1");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C15*), ABISELECT(36112,22964), "S20292C1");
    check_base_class_offset(lv, (S20292C6*)(S20292C5*)(S20292C16*), ABISELECT(36112,22964), "S20292C1");
    check_base_class_offset(lv, (S20292C6*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(36112,22964), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*), ABISELECT(40232,25584), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C12*), ABISELECT(40232,25584), "S20292C1");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C15*), ABISELECT(40232,25584), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C9*), ABISELECT(40232,25584), "S20292C1");
    check_base_class_offset(lv, (S20292C8*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(40232,25584), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C12*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C12*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C13*)(S20292C4*), ABISELECT(40704,25892), "S20292C1");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C15*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C15*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C9*), ABISELECT(40704,25892), "S20292C1");
    check_base_class_offset(lv, (S20292C7*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C10::S20292C7 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(40704,25892), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C5*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C5 */ AMB_check_base_class_offset(lv, (S20292C10*)(S20292C5*), ABISELECT(25568,16280), "S20292C1");
    check_base_class_offset(lv, (S20292C5*)(S20292C4*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C5*)(S20292C13*)(S20292C4*), ABISELECT(25104,15988), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C12*), ABISELECT(41008,26076), "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*), ABISELECT(43824,27868), "S20292C1");
    check_base_class_offset(lv, (S20292C13*)(S20292C12*), ABISELECT(43824,27868), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C12*), ABISELECT(41152,26172), "S20292C1");
    /*is_ambiguous_... S20292C12::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C12*), ABISELECT(41152,26172), "S20292C1");
    check_base_class_offset(lv, (S20292C7*)(S20292C11*)(S20292C12*), ABISELECT(41616,26464), "S20292C1");
    check_base_class_offset(lv, (S20292C11*)(S20292C12*), ABISELECT(41616,26464), "S20292C1");
    check_base_class_offset(lv, (S20292C12*)(S20292C4*), ABISELECT(41008,26076), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C3 */ AMB_check_base_class_offset(lv, (S20292C3*)(S20292C4*), ABISELECT(24448,15556), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C13*)(S20292C4*), ABISELECT(24616,15664), "S20292C1");
    /*is_ambiguous_... S20292C4::S20292C13 */ AMB_check_base_class_offset(lv, (S20292C13*)(S20292C4*), ABISELECT(24616,15664), "S20292C1");
    check_base_class_offset(lv, (S20292C4*), ABISELECT(24448,15556), "S20292C1");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C15*), 0, "S20292C1");
    check_base_class_offset(lv, (S20292C9*)(S20292C15*), 0, "S20292C1");
    check_base_class_offset(lv, (S20292C10*)(S20292C15*), ABISELECT(464,292), "S20292C1");
    check_base_class_offset(lv, (S20292C15*), 0, "S20292C1");
    /*is_ambiguous_... S20292C1::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*), ABISELECT(70592,44844), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C9 */ AMB_check_base_class_offset(lv, (S20292C9*)(S20292C16*), ABISELECT(70592,44844), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C7*)(S20292C6*)(S20292C16*), ABISELECT(44304,28184), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C8*)(S20292C6*)(S20292C16*), ABISELECT(44600,28368), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C6*)(S20292C16*), ABISELECT(45064,28676), "S20292C1");
    /*is_ambiguous_... S20292C16::S20292C6 */ AMB_check_base_class_offset(lv, (S20292C6*)(S20292C16*), ABISELECT(44304,28184), "S20292C1");
    /*is_ambiguous_... S20292C9::S20292C2 */ AMB_check_base_class_offset(lv, (S20292C2*)(S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(48432,30804), "S20292C1");
    check_base_class_offset(lv, (S20292C9*)(S20292C5*)(S20292C16*), ABISELECT(48432,30804), "S20292C1");
    check_base_class_offset(lv, (S20292C10*)(S20292C5*)(S20292C16*), ABISELECT(48896,31096), "S20292C1");
    check_base_class_offset(lv, (S20292C5*)(S20292C16*), ABISELECT(48432,30804), "S20292C1");
    check_base_class_offset(lv, (S20292C16*), ABISELECT(44304,28184), "S20292C1");
    check_field_offset(lv, s20292c1f0, ABISELECT(7376,4680), "S20292C1.s20292c1f0");
    check_field_offset(lv, s20292c1f1, ABISELECT(7408,4712), "S20292C1.s20292c1f1");
    check_field_offset(lv, s20292c1f2, ABISELECT(7424,4720), "S20292C1.s20292c1f2");
    check_field_offset(lv, s20292c1f3, ABISELECT(24112,15328), "S20292C1.s20292c1f3");
    check_field_offset(lv, s20292c1f4, ABISELECT(24116,15332), "S20292C1.s20292c1f4");
    check_field_offset(lv, s20292c1f5, ABISELECT(24120,15336), "S20292C1.s20292c1f5");
    test_class_info(&lv, &cd_S20292C1);
    dp->~S20292C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20292C1(Test_S20292C1, "S20292C1", ABISELECT(71056,45136));

#else // __cplusplus

extern void _ZN8S20292C1C1Ev();
extern void _ZN8S20292C1D2Ev();
Name_Map name_map_S20292C1[] = {
  NSPAIR(_ZN8S20292C1C1Ev),
  NSPAIR(_ZN8S20292C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C11;
extern VTBL_ENTRY _ZTI9S20292C11[];
extern  VTBL_ENTRY _ZTV9S20292C11[];
extern Class_Descriptor cd_S20292C12;
extern VTBL_ENTRY _ZTI9S20292C12[];
extern  VTBL_ENTRY _ZTV9S20292C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C12[];
extern Class_Descriptor cd_S20292C3;
extern VTBL_ENTRY _ZTI8S20292C3[];
extern  VTBL_ENTRY _ZTV8S20292C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C3[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C13;
extern VTBL_ENTRY _ZTI9S20292C13[];
extern  VTBL_ENTRY _ZTV9S20292C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C13[];
extern Class_Descriptor cd_S20292C4;
extern VTBL_ENTRY _ZTI8S20292C4[];
extern  VTBL_ENTRY _ZTV8S20292C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C4[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C15;
extern VTBL_ENTRY _ZTI9S20292C15[];
extern  VTBL_ENTRY _ZTV9S20292C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C15[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C7;
extern VTBL_ENTRY _ZTI8S20292C7[];
extern  VTBL_ENTRY _ZTV8S20292C7[];
extern Class_Descriptor cd_S20292C8;
extern VTBL_ENTRY _ZTI8S20292C8[];
extern  VTBL_ENTRY _ZTV8S20292C8[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C6;
extern VTBL_ENTRY _ZTI8S20292C6[];
extern  VTBL_ENTRY _ZTV8S20292C6[];
extern Class_Descriptor cd_S20292C2;
extern VTBL_ENTRY _ZTI8S20292C2[];
extern  VTBL_ENTRY _ZTV8S20292C2[];
extern Class_Descriptor cd_S20292C9;
extern VTBL_ENTRY _ZTI8S20292C9[];
extern  VTBL_ENTRY _ZTV8S20292C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C9[];
extern Class_Descriptor cd_S20292C10;
extern VTBL_ENTRY _ZTI9S20292C10[];
extern  VTBL_ENTRY _ZTV9S20292C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C10[];
extern Class_Descriptor cd_S20292C5;
extern VTBL_ENTRY _ZTI8S20292C5[];
extern  VTBL_ENTRY _ZTV8S20292C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C5[];
extern Class_Descriptor cd_S20292C16;
extern VTBL_ENTRY _ZTI9S20292C16[];
extern  VTBL_ENTRY _ZTV9S20292C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20292C16[];
static Base_Class bases_S20292C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20292C2,    ABISELECT(24136,15352), //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_S20292C3,    ABISELECT(24280,15448), //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_S20292C7,    ABISELECT(36112,22964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20292C8,    ABISELECT(36408,23148), //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_S20292C2,    ABISELECT(36872,23456), //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_S20292C6,    ABISELECT(36112,22964), //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_S20292C2,    ABISELECT(25104,15988), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(40232,25584), //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_S20292C7,    ABISELECT(40704,25892), //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_S20292C9,    ABISELECT(25104,15988), //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_S20292C10,    ABISELECT(25568,16280), //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_S20292C5,    ABISELECT(25104,15988), //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_S20292C2,    ABISELECT(41008,26076), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(43824,27868), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C13,    ABISELECT(43824,27868), //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_S20292C2,    ABISELECT(41152,26172), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C9,    ABISELECT(41152,26172), //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_S20292C7,    ABISELECT(41616,26464), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C11,    ABISELECT(41616,26464), //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_S20292C12,    ABISELECT(41008,26076), //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_S20292C3,    ABISELECT(24448,15556), //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_S20292C8,    ABISELECT(24616,15664), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C13,    ABISELECT(24616,15664), //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_S20292C4,    ABISELECT(24448,15556), //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_S20292C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C9,    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_S20292C10,    ABISELECT(464,292), //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_S20292C15,    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_S20292C2,    ABISELECT(70592,44844), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C9,    ABISELECT(70592,44844), //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_S20292C7,    ABISELECT(44304,28184), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C8,    ABISELECT(44600,28368), //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_S20292C2,    ABISELECT(45064,28676), //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_S20292C6,    ABISELECT(44304,28184), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C2,    ABISELECT(48432,30804), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20292C9,    ABISELECT(48432,30804), //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_S20292C10,    ABISELECT(48896,31096), //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_S20292C5,    ABISELECT(48432,30804), //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_S20292C16,    ABISELECT(44304,28184), //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 _ZTI8S20292C1[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C1D1Ev();
extern void _ZN8S20292C1D0Ev();
extern void _ZN9S20292C153v15Ev();
extern void _ZN9S20292C153v16Ev();
extern void _ZN8S20292C12v1Ev();
extern void _ZN8S20292C12v2Ev();
extern void _ZN8S20292C12v3Ev();
extern void _ZN8S20292C12v4Ev();
extern void _ZN8S20292C12v5Ev();
extern void ABISELECT(_ZThn464_N8S20292C1D1Ev,_ZThn292_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C1D0Ev,_ZThn292_N8S20292C1D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn24448_N8S20292C1D1Ev,_ZThn15556_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn24448_N8S20292C1D0Ev,_ZThn15556_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTvn168_n88_N8S20292C1D1Ev,_ZTvn108_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn168_n88_N8S20292C1D0Ev,_ZTvn108_n44_N8S20292C1D0Ev)();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn25104_N8S20292C1D1Ev,_ZThn15988_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn25104_N8S20292C1D0Ev,_ZThn15988_N8S20292C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S20292C1D1Ev,_ZTvn292_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20292C1D0Ev,_ZTvn292_n40_N8S20292C1D0Ev)();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C1D1Ev,_ZTv0_n16_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn36112_N8S20292C1D1Ev,_ZThn22964_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C1D0Ev,_ZTv0_n16_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn36112_N8S20292C1D0Ev,_ZThn22964_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C72v7Ev();
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn41008_N8S20292C1D1Ev,_ZThn26076_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn41008_N8S20292C1D0Ev,_ZThn26076_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN9S20292C123v14Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20292C1D1Ev,_ZTvn388_n44_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20292C1D0Ev,_ZTvn388_n44_N8S20292C1D0Ev)();
extern void _ZN9S20292C113v13Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20292C1D1Ev,_ZTv0_n48_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn43824_N8S20292C1D1Ev,_ZThn27868_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20292C1D0Ev,_ZTv0_n48_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn43824_N8S20292C1D0Ev,_ZThn27868_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZThn44304_N8S20292C1D1Ev,_ZThn28184_N8S20292C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev)();
extern void ABISELECT(_ZThn44304_N8S20292C1D0Ev,_ZThn28184_N8S20292C1D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
extern void _ZN9S20292C163v17Ev();
extern void _ZN9S20292C163v18Ev();
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTvn4128_n80_N8S20292C1D1Ev,_ZTvn2620_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn4128_n80_N8S20292C1D0Ev,_ZTvn2620_n40_N8S20292C1D0Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20292C1D1Ev,_ZTvn2912_n40_N8S20292C1D1Ev)();
extern void ABISELECT(_ZTvn4592_n80_N8S20292C1D0Ev,_ZTvn2912_n40_N8S20292C1D0Ev)();
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY vtc_S20292C1[] = {
  ABISELECT(70592,44844),
  ABISELECT(44304,28184),
  ABISELECT(43824,27868),
  ABISELECT(41008,26076),
  ABISELECT(25104,15988),
  ABISELECT(24448,15556),
  ABISELECT(36112,22964),
  ABISELECT(40704,25892),
  ABISELECT(24136,15352),
  ABISELECT(24280,15448),
  ABISELECT(40232,25584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C1D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v16Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20292C12v5Ev,
  ABISELECT(23816,15156),
  ABISELECT(23672,15060),
  ABISELECT(35648,22672),
  ABISELECT(40240,25600),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C1D1Ev,_ZThn292_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C1D0Ev,_ZThn292_N8S20292C1D0Ev),
  0,
  ABISELECT(-24136,-15352),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-24280,-15448),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  ABISELECT(168,108),
  ABISELECT(168,108),
  ABISELECT(168,108),
  ABISELECT(-24448,-15556),
  ABISELECT(19376,12312),
  ABISELECT(16560,10520),
  ABISELECT(16256,10336),
  ABISELECT(15784,10028),
  ABISELECT(-168,-108),
  ABISELECT(11664,7408),
  ABISELECT(656,432),
  ABISELECT(-312,-204),
  ABISELECT(-24448,-15556),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev),
  ABISELECT(15616,9920),
  ABISELECT(-336,-216),
  ABISELECT(-480,-312),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16088,10228),
  ABISELECT(-24616,-15664),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20292C1D1Ev,_ZTvn108_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn168_n88_N8S20292C1D0Ev,_ZTvn108_n44_N8S20292C1D0Ev),
  ABISELECT(-25104,-15988),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(-25104,-15988),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev),
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-25568,-16280),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C1D1Ev,_ZTvn292_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C1D0Ev,_ZTvn292_n40_N8S20292C1D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36112,-22964),
  0,
  ABISELECT(-36112,-22964),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C1D1Ev,_ZTv0_n16_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C1D0Ev,_ZTv0_n16_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  ABISELECT(-36408,-23148),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-36872,-23456),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  0,
  0,
  0,
  ABISELECT(-40232,-25584),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  0,
  ABISELECT(-40704,-25892),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-41008,-26076),
  0,
  ABISELECT(-776,-492),
  ABISELECT(-16728,-10628),
  ABISELECT(-16872,-10724),
  ABISELECT(-4896,-3112),
  ABISELECT(-15904,-10088),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  ABISELECT(-41008,-26076),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  ABISELECT(-41152,-26172),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-41616,-26464),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C1D1Ev,_ZTvn388_n44_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C1D0Ev,_ZTvn388_n44_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
  ABISELECT(-43824,-27868),
  0,
  0,
  0,
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  ABISELECT(-43824,-27868),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C1D1Ev,_ZTv0_n48_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C1D0Ev,_ZTv0_n48_N8S20292C1D0Ev),
  ABISELECT(4128,2620),
  0,
  0,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-44304,-28184),
  0,
  ABISELECT(-8192,-5220),
  ABISELECT(-3600,-2292),
  ABISELECT(-20024,-12736),
  ABISELECT(-4072,-2600),
  ABISELECT(26288,16660),
  ABISELECT(-20168,-12832),
  ABISELECT(-44304,-28184),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v17Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v18Ev,
  ABISELECT(-44600,-28368),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  ABISELECT(-45064,-28676),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  ABISELECT(-12320,-7840),
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  ABISELECT(-48432,-30804),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20292C1D1Ev,_ZTvn2620_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4128_n80_N8S20292C1D0Ev,_ZTvn2620_n40_N8S20292C1D0Ev),
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  ABISELECT(-48896,-31096),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20292C1D1Ev,_ZTvn2912_n40_N8S20292C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn4592_n80_N8S20292C1D0Ev,_ZTvn2912_n40_N8S20292C1D0Ev),
  0,
  ABISELECT(-29888,-18952),
  ABISELECT(-46456,-29492),
  ABISELECT(-46312,-29396),
  ABISELECT(-30360,-19260),
  ABISELECT(-70592,-44844),
  (VTBL_ENTRY)&(_ZTI8S20292C1[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20292C1[];
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C15D1Ev();
extern void _ZN9S20292C15D0Ev();
extern void _ZN9S20292C153v15Ev();
extern void _ZN9S20292C153v16Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C15__8S20292C1[] = {
  ABISELECT(36112,22964),
  ABISELECT(40704,25892),
  ABISELECT(24136,15352),
  ABISELECT(24280,15448),
  ABISELECT(40232,25584),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v15Ev,
  (VTBL_ENTRY)&_ZN9S20292C153v16Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C15__A2__8S20292C1[] = {
  ABISELECT(40704,25892),
  ABISELECT(24136,15352),
  ABISELECT(24280,15448),
  ABISELECT(40232,25584),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C99S20292C15__A2__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-25584),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C99S20292C15__A2__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-24280,-15448),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C99S20292C15__A2__8S20292C1[] = {
  0,
  ABISELECT(-24136,-15352),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C99S20292C15__A2__8S20292C1[] = {
  0,
  ABISELECT(-40704,-25892),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(23816,15156),
  ABISELECT(23672,15060),
  ABISELECT(35648,22672),
  ABISELECT(40240,25600),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C109S20292C15__A1__8S20292C1[] = {
  0,
  ABISELECT(-40240,-25600),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn35648_N9S20292C10D1Ev,_ZThn22672_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn35648_N9S20292C10D0Ev,_ZThn22672_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-35648,-22672),
  0,
  ABISELECT(-35648,-22672),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(-35944,-22856),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(-36408,-23164),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C109S20292C15__A1__8S20292C1[] = {
  0,
  ABISELECT(-23672,-15060),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C109S20292C15__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-23816,-15156),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__9S20292C15__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-40232,-25584),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C15__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(-24280,-15448),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C15__8S20292C1[] = {
  0,
  ABISELECT(-24136,-15352),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C15__8S20292C1[] = {
  0,
  ABISELECT(-40704,-25892),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__9S20292C15__8S20292C1[] = {
  ABISELECT(23816,15156),
  ABISELECT(23672,15060),
  ABISELECT(35648,22672),
  ABISELECT(40240,25600),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D1Ev,_ZThn292_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N9S20292C15D0Ev,_ZThn292_N9S20292C15D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev)();
extern void ABISELECT(_ZThn36112_N9S20292C15D1Ev,_ZThn22964_N9S20292C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev)();
extern void ABISELECT(_ZThn36112_N9S20292C15D0Ev,_ZThn22964_N9S20292C15D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C15__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-36112,-22964),
  0,
  ABISELECT(-36112,-22964),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C15__8S20292C1[] = {
  ABISELECT(-36408,-23148),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A2__9S20292C15__8S20292C1[] = {
  ABISELECT(-36872,-23456),
  (VTBL_ENTRY)&(_ZTI9S20292C15[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C1[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C3__8S20292C1[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C4D1Ev();
extern void _ZN8S20292C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C4__8S20292C1[] = {
  ABISELECT(19376,12312),
  ABISELECT(16560,10520),
  ABISELECT(16256,10336),
  ABISELECT(15784,10028),
  ABISELECT(-168,-108),
  ABISELECT(11664,7408),
  ABISELECT(656,432),
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C38S20292C4__A1__8S20292C1[] = {
  ABISELECT(-312,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__8S20292C38S20292C4__A1__8S20292C1[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI8S20292C3[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(15616,9920),
  ABISELECT(-336,-216),
  ABISELECT(-480,-312),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16088,10228),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C138S20292C4__A1__8S20292C1[] = {
  0,
  ABISELECT(-16088,-10228),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-488,-324),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(-488,-324),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11496,-7300),
  0,
  ABISELECT(-11496,-7300),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-11792,-7484),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-12256,-7792),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C138S20292C4__A1__8S20292C1[] = {
  0,
  ABISELECT(480,312),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(336,216),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C138S20292C4__A1__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15616,-9920),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C138S20292C4__A1__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-952,-616),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20292C5__8S20292C4__8S20292C1[] = {
  ABISELECT(-656,-432),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(-656,-432),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C4__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11664,-7408),
  0,
  ABISELECT(-11664,-7408),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C4__8S20292C1[] = {
  ABISELECT(-11960,-7592),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C4__8S20292C1[] = {
  ABISELECT(-12424,-7900),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C4__8S20292C1[] = {
  0,
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C4__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(168,108),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C4__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15784,-10028),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C4__8S20292C1[] = {
  0,
  ABISELECT(-16256,-10336),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__8S20292C4__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-1120,-724),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D1Ev,_ZTvn292_n40_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S20292C4D0Ev,_ZTvn292_n40_N8S20292C4D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn16560_N8S20292C4D1Ev,_ZThn10520_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn16560_N8S20292C4D0Ev,_ZThn10520_N8S20292C4D0Ev)() __attribute__((weak));
extern void _ZN9S20292C123v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C12__8S20292C4__8S20292C1[] = {
  ABISELECT(608,388),
  ABISELECT(608,388),
  0,
  ABISELECT(-16560,-10520),
  0,
  ABISELECT(-776,-492),
  ABISELECT(-16728,-10628),
  ABISELECT(-16872,-10724),
  ABISELECT(-4896,-3112),
  ABISELECT(-15904,-10088),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  ABISELECT(-16560,-10520),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn19376_N8S20292C4D1Ev,_ZThn12312_N8S20292C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev)();
extern void ABISELECT(_ZThn19376_N8S20292C4D0Ev,_ZThn12312_N8S20292C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20292C13__8S20292C4__8S20292C1[] = {
  ABISELECT(-19376,-12312),
  0,
  0,
  0,
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  ABISELECT(-19376,-12312),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C12__A1__8S20292C4__8S20292C1[] = {
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  ABISELECT(-16704,-10616),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev)();
extern void ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev)();
extern void _ZN9S20292C113v13Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C119S20292C12__8S20292C4__8S20292C1[] = {
  ABISELECT(-17168,-10908),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D1Ev,_ZTvn388_n44_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn608_n88_N8S20292C4D0Ev,_ZTvn388_n44_N8S20292C4D0Ev),
  (VTBL_ENTRY)&_ZN9S20292C113v13Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev)();
extern void ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C13__A__8S20292C4__8S20292C1[] = {
  ABISELECT(15616,9920),
  ABISELECT(-336,-216),
  ABISELECT(-480,-312),
  ABISELECT(11496,7300),
  ABISELECT(488,324),
  ABISELECT(16088,10228),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20292C4[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D1Ev,_ZThn108_N8S20292C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N8S20292C4D0Ev,_ZThn108_N8S20292C4D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C5__8S20292C1[] = {
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C5__8S20292C1[] = {
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(824,540),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C1[] = {
  0,
  ABISELECT(968,636),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C1[] = {
  0,
  ABISELECT(-15600,-9904),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C1[] = {
  0,
  ABISELECT(-15136,-9612),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C1[] = {
  0,
  ABISELECT(1432,928),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(1288,832),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev)() __attribute__((weak));
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C5__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C1[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C1[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C5__8S20292C1[] = {
  0,
  ABISELECT(968,636),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C5__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(824,540),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C5__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C5__8S20292C1[] = {
  0,
  ABISELECT(-15600,-9904),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C5__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN9S20292C12D1Ev();
extern void _ZN9S20292C12D0Ev();
extern void _ZN9S20292C123v14Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C12__8S20292C1[] = {
  ABISELECT(-776,-492),
  ABISELECT(-16728,-10628),
  ABISELECT(-16872,-10724),
  ABISELECT(-4896,-3112),
  ABISELECT(-15904,-10088),
  ABISELECT(2816,1792),
  ABISELECT(-304,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C12D0Ev,
  (VTBL_ENTRY)&_ZN9S20292C123v14Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C99S20292C12__A1__8S20292C1[] = {
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(920,588),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(16872,10724),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C1[] = {
  0,
  ABISELECT(17016,10820),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C1[] = {
  0,
  ABISELECT(448,280),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C12__8S20292C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20292C13__9S20292C12__8S20292C1[] = {
  ABISELECT(-2816,-1792),
  0,
  0,
  0,
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  ABISELECT(-2816,-1792),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C12__8S20292C1[] = {
  ABISELECT(15904,10088),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(15904,10088),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D1Ev,_ZTv0_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C12D0Ev,_ZTv0_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C12__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4896,3112),
  0,
  ABISELECT(4896,3112),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D1Ev,_ZTv0_n16_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C12D0Ev,_ZTv0_n16_N9S20292C12D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C1[] = {
  ABISELECT(4600,2928),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C1[] = {
  ABISELECT(4136,2620),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A2__9S20292C12__8S20292C1[] = {
  0,
  ABISELECT(16872,10724),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C12__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(16728,10628),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C12__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(15440,9796),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D1Ev,_ZTvn292_n40_N9S20292C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C12D0Ev,_ZTvn292_n40_N9S20292C12D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A1__9S20292C12__8S20292C1[] = {
  ABISELECT(-448,-280),
  ABISELECT(-17016,-10820),
  ABISELECT(-16872,-10724),
  ABISELECT(-920,-588),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20292C12[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
extern void _ZN9S20292C13D1Ev();
extern void _ZN9S20292C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C13__8S20292C1[] = {
  ABISELECT(-3592,-2284),
  ABISELECT(-19544,-12420),
  ABISELECT(-19688,-12516),
  ABISELECT(-7712,-4904),
  ABISELECT(-18720,-11880),
  ABISELECT(-3120,-1976),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C13D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C13__8S20292C1[] = {
  0,
  ABISELECT(3120,1976),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C13__8S20292C1[] = {
  ABISELECT(18720,11880),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(15600,9904),
  ABISELECT(-968,-636),
  ABISELECT(-824,-540),
  ABISELECT(15128,9596),
  ABISELECT(18720,11880),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C13__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(7712,4904),
  0,
  ABISELECT(7712,4904),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C1[] = {
  ABISELECT(7416,4720),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C1[] = {
  ABISELECT(6952,4412),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C13__8S20292C1[] = {
  0,
  ABISELECT(19688,12516),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C13__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(19544,12420),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A2__9S20292C13__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(3592,2284),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C1[] = {
  ABISELECT(-1288,-832),
  ABISELECT(-1432,-928),
  ABISELECT(10544,6684),
  ABISELECT(15136,9612),
  ABISELECT(18256,11588),
  (VTBL_ENTRY)&(_ZTI9S20292C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D1Ev,_ZTvn292_n40_N9S20292C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N9S20292C13D0Ev,_ZTvn292_n40_N9S20292C13D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void _ZN9S20292C16D1Ev();
extern void _ZN9S20292C16D0Ev();
extern void _ZN8S20292C63v11Ev();
extern void _ZN9S20292C163v17Ev();
extern void _ZN9S20292C163v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C16__8S20292C1[] = {
  ABISELECT(-8192,-5220),
  ABISELECT(-3600,-2292),
  ABISELECT(-20024,-12736),
  ABISELECT(-4072,-2600),
  ABISELECT(26288,16660),
  ABISELECT(-20168,-12832),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C16D0Ev,
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v17Ev,
  (VTBL_ENTRY)&_ZN9S20292C163v18Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void _ZN8S20292C5D1Ev();
extern void _ZN8S20292C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(-12320,-7840),
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20292C5D0Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,5220),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(24152,15356),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  0,
  ABISELECT(24296,15452),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C98S20292C59S20292C16__A4__8S20292C1[] = {
  0,
  ABISELECT(7728,4912),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN9S20292C10D1Ev();
extern void _ZN9S20292C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  0,
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN9S20292C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20292C10D0Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  0,
  ABISELECT(8192,5204),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(12784,8132),
  0,
  ABISELECT(12784,8132),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(12488,7948),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(12024,7640),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  0,
  ABISELECT(24760,15744),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C108S20292C59S20292C16__A2__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(24616,15648),
  (VTBL_ENTRY)&(_ZTI9S20292C10[0]),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(12320,7840),
  0,
  ABISELECT(12320,7840),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(12024,7656),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(11560,7348),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C59S20292C16__A1__8S20292C1[] = {
  0,
  ABISELECT(24296,15452),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(24152,15356),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__A1__8S20292C59S20292C16__A1__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(8200,5220),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__A1__8S20292C59S20292C16__A1__8S20292C1[] = {
  0,
  ABISELECT(7728,4912),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C10__8S20292C59S20292C16__A1__8S20292C1[] = {
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S20292C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D1Ev,_ZThn292_N8S20292C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S20292C5D0Ev,_ZThn292_N8S20292C5D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__9S20292C16__8S20292C1[] = {
  0,
  ABISELECT(20168,12832),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__9S20292C16__8S20292C1[] = {
  0,
  ABISELECT(-29888,-18952),
  ABISELECT(-46456,-29492),
  ABISELECT(-46312,-29396),
  ABISELECT(-30360,-19260),
  ABISELECT(-26288,-16660),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__9S20292C16__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(4072,2600),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__9S20292C16__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(20024,12736),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__9S20292C16__8S20292C1[] = {
  0,
  ABISELECT(3600,2292),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
extern void _ZN8S20292C22v6Ev();
extern void _ZN8S20292C53v12Ev();
extern void ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20292C5__9S20292C16__8S20292C1[] = {
  ABISELECT(-12320,-7840),
  ABISELECT(-7728,-4912),
  ABISELECT(-24296,-15452),
  ABISELECT(-24152,-15356),
  ABISELECT(-8200,-5220),
  ABISELECT(-4128,-2620),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20292C53v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D1Ev,_ZThn2620_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4128_N9S20292C16D0Ev,_ZThn2620_N9S20292C16D0Ev),
};
extern void _ZN8S20292C72v7Ev();
extern void ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev)();
extern void _ZN8S20292C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C6__A1__9S20292C16__8S20292C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(8192,5220),
  0,
  ABISELECT(8192,5220),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D1Ev,_ZTv0_n16_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20292C16D0Ev,_ZTv0_n16_N9S20292C16D0Ev),
  (VTBL_ENTRY)&_ZN8S20292C63v11Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C88S20292C6__A2__9S20292C16__8S20292C1[] = {
  ABISELECT(7896,5036),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C28S20292C6__A3__9S20292C16__8S20292C1[] = {
  ABISELECT(7432,4728),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev)();
extern void ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20292C108S20292C5__9S20292C16__8S20292C1[] = {
  ABISELECT(-24616,-15648),
  ABISELECT(-24760,-15744),
  ABISELECT(-12784,-8132),
  ABISELECT(-8192,-5204),
  ABISELECT(-4592,-2912),
  (VTBL_ENTRY)&(_ZTI9S20292C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D1Ev,_ZThn2912_N9S20292C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn4592_N9S20292C16D0Ev,_ZThn2912_N9S20292C16D0Ev),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C9__A3__8S20292C1[] = {
  ABISELECT(-29888,-18952),
  ABISELECT(-46456,-29492),
  ABISELECT(-46312,-29396),
  ABISELECT(-30360,-19260),
  0,
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C82v8Ev();
extern void _ZN8S20292C82v9Ev();
extern void _ZN8S20292C83v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C8__8S20292C9__A3__8S20292C1[] = {
  0,
  0,
  0,
  ABISELECT(30360,19260),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C82v8Ev,
  (VTBL_ENTRY)&_ZN8S20292C82v9Ev,
  (VTBL_ENTRY)&_ZN8S20292C83v10Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20292C3__8S20292C9__A3__8S20292C1[] = {
  ABISELECT(-144,-96),
  ABISELECT(46312,29396),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
};
extern void _ZN8S20292C22v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C2__A1__8S20292C9__A3__8S20292C1[] = {
  0,
  ABISELECT(46456,29492),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C22v6Ev,
};
extern void _ZN8S20292C72v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20292C7__8S20292C9__A3__8S20292C1[] = {
  0,
  ABISELECT(29888,18952),
  (VTBL_ENTRY)&(_ZTI8S20292C9[0]),
  (VTBL_ENTRY)&_ZN8S20292C72v7Ev,
};
static  VTT_ENTRY vtt_S20292C1[] = {
  {&(_ZTV8S20292C1[13]),  13,229},
  {&(_tg__ZTV9S20292C15__8S20292C1[7]),  7,12},
  {&(_tg__ZTV8S20292C99S20292C15__A2__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C99S20292C15__A2__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C99S20292C15__A2__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C99S20292C15__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C99S20292C15__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C109S20292C15__A1__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C109S20292C15__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C109S20292C15__A1__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C109S20292C15__A1__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C109S20292C15__A1__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C109S20292C15__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C109S20292C15__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__9S20292C15__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__9S20292C15__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C15__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__9S20292C15__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C10__9S20292C15__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C6__9S20292C15__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C15__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A2__9S20292C15__8S20292C1[2]),  2,3},
  {&(_ZTV8S20292C1[34]),  34,229},
  {&(_ZTV8S20292C1[38]),  38,229},
  {&(_ZTV8S20292C1[52]),  52,229},
  {&(_ZTV8S20292C1[77]),  77,229},
  {&(_ZTV8S20292C1[98]),  98,229},
  {&(_ZTV8S20292C1[104]),  104,229},
  {&(_ZTV8S20292C1[109]),  109,229},
  {&(_ZTV8S20292C1[115]),  115,229},
  {&(_ZTV8S20292C1[121]),  121,229},
  {&(_ZTV8S20292C1[87]),  87,229},
  {&(_ZTV8S20292C1[136]),  136,229},
  {&(_ZTV8S20292C1[165]),  165,229},
  {&(_ZTV8S20292C1[146]),  146,229},
  {&(_ZTV8S20292C1[149]),  149,229},
  {&(_ZTV8S20292C1[62]),  62,229},
  {&(_ZTV8S20292C1[29]),  29,229},
  {&(_ZTV8S20292C1[188]),  188,229},
  {&(_ZTV8S20292C1[228]),  228,229},
  {&(_ZTV8S20292C1[196]),  196,229},
  {&(_ZTV8S20292C1[201]),  201,229},
  {&(_ZTV8S20292C1[209]),  209,229},
  {&(_ZTV8S20292C1[219]),  219,229},
  {&(_tg__ZTV8S20292C3__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C3__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C4__8S20292C1[10]),  10,12},
  {&(_tg__ZTV8S20292C38S20292C4__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__8S20292C38S20292C4__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C138S20292C4__A1__8S20292C1[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C138S20292C4__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C138S20292C4__A1__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C138S20292C4__A1__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C138S20292C4__A1__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C138S20292C4__A1__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C138S20292C4__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C138S20292C4__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C138S20292C4__A1__8S20292C1[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C138S20292C4__A1__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C5__8S20292C4__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__8S20292C4__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C4__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C4__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C4__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C4__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__8S20292C4__8S20292C1[6]),  6,8},
  {&(_tg__ZTV9S20292C12__8S20292C4__8S20292C1[14]),  14,18},
  {&(_tg__ZTV9S20292C13__8S20292C4__8S20292C1[12]),  12,17},
  {&(_tg__ZTV8S20292C99S20292C12__A1__8S20292C4__8S20292C1[6]),  6,7},
  {&(_tg__ZTV9S20292C119S20292C12__8S20292C4__8S20292C1[2]),  2,6},
  {&(_tg__ZTV9S20292C13__A__8S20292C4__8S20292C1[8]),  8,13},
  {&(_tg__ZTV8S20292C5__8S20292C1[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C5__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C5__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C5__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C5__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C5__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C5__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C5__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C5__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C5__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C5__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C5__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C5__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C5__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C5__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C5__8S20292C1[6]),  6,8},
  {&(_tg__ZTV9S20292C12__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C99S20292C12__A1__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C99S20292C12__A1__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C99S20292C12__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C99S20292C12__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C99S20292C12__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__9S20292C12__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C13__9S20292C12__8S20292C1[12]),  12,17},
  {&(_tg__ZTV8S20292C5__9S20292C12__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C12__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C12__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A1__9S20292C12__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A2__9S20292C12__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C12__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C12__8S20292C1[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C12__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C9__A1__9S20292C12__8S20292C1[6]),  6,7},
  {&(_tg__ZTV9S20292C13__8S20292C1[8]),  8,13},
  {&(_tg__ZTV8S20292C7__9S20292C13__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C13__8S20292C1[10]),  10,14},
  {&(_tg__ZTV8S20292C6__9S20292C13__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A1__9S20292C13__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C13__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C13__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C13__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A2__9S20292C13__8S20292C1[5]),  5,8},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C13__8S20292C1[6]),  6,8},
  {&(_tg__ZTV9S20292C16__8S20292C1[8]),  8,14},
  {&(_tg__ZTV8S20292C59S20292C16__A1__8S20292C1[7]),  7,11},
  {&(_tg__ZTV8S20292C98S20292C59S20292C16__A4__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C98S20292C59S20292C16__A4__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C98S20292C59S20292C16__A4__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C98S20292C59S20292C16__A4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C98S20292C59S20292C16__A4__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C108S20292C59S20292C16__A2__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C7__9S20292C108S20292C59S20292C16__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__9S20292C108S20292C59S20292C16__A2__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__9S20292C108S20292C59S20292C16__A2__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__9S20292C108S20292C59S20292C16__A2__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C6__8S20292C59S20292C16__A1__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__8S20292C59S20292C16__A1__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__8S20292C59S20292C16__A1__8S20292C1[2]),  2,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C59S20292C16__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C3__8S20292C59S20292C16__A1__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C8__A1__8S20292C59S20292C16__A1__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C7__A1__8S20292C59S20292C16__A1__8S20292C1[3]),  3,4},
  {&(_tg__ZTV9S20292C10__8S20292C59S20292C16__A1__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C2__9S20292C16__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C9__9S20292C16__8S20292C1[7]),  7,8},
  {&(_tg__ZTV8S20292C8__9S20292C16__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__9S20292C16__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C7__9S20292C16__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C5__9S20292C16__8S20292C1[7]),  7,11},
  {&(_tg__ZTV8S20292C6__A1__9S20292C16__8S20292C1[9]),  9,13},
  {&(_tg__ZTV8S20292C88S20292C6__A2__9S20292C16__8S20292C1[2]),  2,5},
  {&(_tg__ZTV8S20292C28S20292C6__A3__9S20292C16__8S20292C1[2]),  2,3},
  {&(_tg__ZTV9S20292C108S20292C5__9S20292C16__8S20292C1[6]),  6,8},
  {&(_tg__ZTV8S20292C9__A3__8S20292C1[6]),  6,7},
  {&(_tg__ZTV8S20292C8__8S20292C9__A3__8S20292C1[5]),  5,8},
  {&(_tg__ZTV8S20292C3__8S20292C9__A3__8S20292C1[3]),  3,3},
  {&(_tg__ZTV8S20292C2__A1__8S20292C9__A3__8S20292C1[3]),  3,4},
  {&(_tg__ZTV8S20292C7__8S20292C9__A3__8S20292C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20292C1[];
extern  VTBL_ENTRY _ZTV8S20292C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20292C1[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D0Ev,_ZTv0_n48_N9S20292C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D0Ev,_ZThn1792_N9S20292C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20292C12D1Ev,_ZTv0_n48_N9S20292C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20292C12D1Ev,_ZThn1792_N9S20292C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D0Ev,_ZTv0_n16_N8S20292C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D0Ev,_ZThn6976_N8S20292C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C5D1Ev,_ZTv0_n16_N8S20292C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S20292C5D1Ev,_ZThn6976_N8S20292C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D0Ev,_ZTv0_n48_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20292C4D0Ev,_ZThn12312_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C4D1Ev,_ZTv0_n48_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn19376_N8S20292C4D1Ev,_ZThn12312_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D0Ev,_ZTv0_n44_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20292C4D0Ev,_ZThn10520_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C4D1Ev,_ZTv0_n44_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16560_N8S20292C4D1Ev,_ZThn10520_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D0Ev,_ZTv0_n16_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D0Ev,_ZThn7408_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C4D1Ev,_ZTv0_n16_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11664_N8S20292C4D1Ev,_ZThn7408_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D0Ev,_ZTv0_n40_N8S20292C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D0Ev,_ZThn432_N8S20292C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C4D1Ev,_ZTv0_n40_N8S20292C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn656_N8S20292C4D1Ev,_ZThn432_N8S20292C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D0Ev,_ZTv0_n16_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D0Ev,_ZThn7300_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C13D1Ev,_ZTv0_n16_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11496_N9S20292C13D1Ev,_ZThn7300_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D0Ev,_ZTv0_n40_N9S20292C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D0Ev,_ZThn324_N9S20292C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20292C13D1Ev,_ZTv0_n40_N9S20292C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn488_N9S20292C13D1Ev,_ZThn324_N9S20292C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D0Ev,_ZTv0_n16_N9S20292C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N9S20292C15D0Ev,_ZThn22964_N9S20292C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C15D1Ev,_ZTv0_n16_N9S20292C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N9S20292C15D1Ev,_ZThn22964_N9S20292C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D0Ev,_ZTv0_n16_N9S20292C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D0Ev,_ZThn6684_N9S20292C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N9S20292C10D0Ev,_ZThn22672_N9S20292C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20292C10D1Ev,_ZTv0_n16_N9S20292C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S20292C10D1Ev,_ZThn6684_N9S20292C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn35648_N9S20292C10D1Ev,_ZThn22672_N9S20292C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C1D0Ev,_ZTv0_n48_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20292C1D0Ev,_ZThn27868_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20292C1D1Ev,_ZTv0_n48_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn43824_N8S20292C1D1Ev,_ZThn27868_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C1D0Ev,_ZTv0_n16_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20292C1D0Ev,_ZThn22964_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20292C1D1Ev,_ZTv0_n16_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn36112_N8S20292C1D1Ev,_ZThn22964_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C1D0Ev,_ZTv0_n40_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20292C1D0Ev,_ZThn28184_N8S20292C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20292C1D0Ev,_ZThn15988_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20292C1D1Ev,_ZTv0_n40_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn44304_N8S20292C1D1Ev,_ZThn28184_N8S20292C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn25104_N8S20292C1D1Ev,_ZThn15988_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C1D0Ev,_ZTv0_n44_N8S20292C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20292C1D0Ev,_ZThn26076_N8S20292C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20292C1D0Ev,_ZThn15556_N8S20292C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S20292C1D1Ev,_ZTv0_n44_N8S20292C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn41008_N8S20292C1D1Ev,_ZThn26076_N8S20292C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24448_N8S20292C1D1Ev,_ZThn15556_N8S20292C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20292C1 = {  "S20292C1", // class name
  bases_S20292C1, 39,
  &(vtc_S20292C1[0]), // expected_vtbl_contents
  &(vtt_S20292C1[0]), // expected_vtt_contents
  ABISELECT(71056,45136), // object size
  NSPAIRA(_ZTI8S20292C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20292C1),229, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20292C1),158, //virtual table table var
  39, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C5  {
  void *s3463c5f0[3];
  int s3463c5f1[2];
  __tsi64 s3463c5f2;
  virtual void  v1(); // _ZN7S3463C52v1Ev
  ~S3463C5(); // tgen
  S3463C5(); // tgen
};
//SIG(-1 S3463C5) C1{ v1 Fp[3] Fi[2] FL}


void  S3463C5 ::v1(){vfunc_called(this, "_ZN7S3463C52v1Ev");}
S3463C5 ::~S3463C5(){ note_dtor("S3463C5", this);} // tgen
S3463C5 ::S3463C5(){ note_ctor("S3463C5", this);} // tgen

static void Test_S3463C5()
{
  extern Class_Descriptor cd_S3463C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S3463C5, buf);
    S3463C5 *dp, &lv = *(dp=new (buf) S3463C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S3463C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3463C5)");
    check_field_offset(lv, s3463c5f0, ABISELECT(8,4), "S3463C5.s3463c5f0");
    check_field_offset(lv, s3463c5f1, ABISELECT(32,16), "S3463C5.s3463c5f1");
    check_field_offset(lv, s3463c5f2, ABISELECT(40,24), "S3463C5.s3463c5f2");
    test_class_info(&lv, &cd_S3463C5);
    dp->~S3463C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C5(Test_S3463C5, "S3463C5", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S3463C5C1Ev();
extern void _ZN7S3463C5D1Ev();
Name_Map name_map_S3463C5[] = {
  NSPAIR(_ZN7S3463C5C1Ev),
  NSPAIR(_ZN7S3463C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3463C5[];
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C5[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
Class_Descriptor cd_S3463C5 = {  "S3463C5", // class name
  0,0,//no base classes
  &(vtc_S3463C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S3463C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3463C5),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  S3463C4  : S3463C5 {
  char s3463c4f0[10];
  long s3463c4f1[6];
  ::S3463C5 s3463c4f2;
  void *s3463c4f3;
  ::S19763C18_nt s3463c4f4;
  int s3463c4f5[4];
  ::S19942C8 s3463c4f6;
  int s3463c4f7;
  void *s3463c4f8;
  __tsi64 s3463c4f9;
  int s3463c4f10:19;
  virtual void  v2(); // _ZN7S3463C42v2Ev
  virtual void  v3(); // _ZN7S3463C42v3Ev
  ~S3463C4(); // tgen
  S3463C4(); // tgen
};
//SIG(-1 S3463C4) C1{ BC2{ v3 Fp[3] Fi[2] FL} v1 v2 Fc[10] Fl[6] FC2 Fp FC3{} Fi[4] FU4{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19}


void  S3463C4 ::v2(){vfunc_called(this, "_ZN7S3463C42v2Ev");}
void  S3463C4 ::v3(){vfunc_called(this, "_ZN7S3463C42v3Ev");}
S3463C4 ::~S3463C4(){ note_dtor("S3463C4", this);} // tgen
S3463C4 ::S3463C4(){ note_ctor("S3463C4", this);} // tgen

static void Test_S3463C4()
{
  extern Class_Descriptor cd_S3463C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,40)];
    init_test(&cd_S3463C4, buf);
    S3463C4 *dp, &lv = *(dp=new (buf) S3463C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S3463C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C4)");
    check_base_class_offset(lv, (S3463C5*), 0, "S3463C4");
    check_field_offset(lv, s3463c4f0, ABISELECT(48,32), "S3463C4.s3463c4f0");
    check_field_offset(lv, s3463c4f1, ABISELECT(64,44), "S3463C4.s3463c4f1");
    check_field_offset(lv, s3463c4f2, ABISELECT(112,68), "S3463C4.s3463c4f2");
    check_field_offset(lv, s3463c4f3, ABISELECT(160,100), "S3463C4.s3463c4f3");
    check_field_offset(lv, s3463c4f4, ABISELECT(168,104), "S3463C4.s3463c4f4");
    check_field_offset(lv, s3463c4f5, ABISELECT(172,108), "S3463C4.s3463c4f5");
    check_field_offset(lv, s3463c4f6, ABISELECT(192,124), "S3463C4.s3463c4f6");
    check_field_offset(lv, s3463c4f7, ABISELECT(208,136), "S3463C4.s3463c4f7");
    check_field_offset(lv, s3463c4f8, ABISELECT(216,140), "S3463C4.s3463c4f8");
    check_field_offset(lv, s3463c4f9, ABISELECT(224,144), "S3463C4.s3463c4f9");
    set_bf_and_test(lv, s3463c4f10, ABISELECT(232,152), 0, 19, 1, "S3463C4");
    set_bf_and_test(lv, s3463c4f10, ABISELECT(232,152), 0, 19, hide_sll(1LL<<18), "S3463C4");
    test_class_info(&lv, &cd_S3463C4);
    dp->~S3463C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C4(Test_S3463C4, "S3463C4", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN7S3463C4C1Ev();
extern void _ZN7S3463C4D1Ev();
Name_Map name_map_S3463C4[] = {
  NSPAIR(_ZN7S3463C4C1Ev),
  NSPAIR(_ZN7S3463C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
static Base_Class bases_S3463C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C4[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY vtc_S3463C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C4[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
Class_Descriptor cd_S3463C4 = {  "S3463C4", // class name
  bases_S3463C4, 1,
  &(vtc_S3463C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI7S3463C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3463C4),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C8  : S3463C5 {
  int s3463c8f0[10];
  short s3463c8f1:11;
  ::S3463C5 s3463c8f2;
  ~S3463C8(); // tgen
  S3463C8(); // tgen
};
//SIG(-1 S3463C8) C1{ BC2{ v1 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC2}


S3463C8 ::~S3463C8(){ note_dtor("S3463C8", this);} // tgen
S3463C8 ::S3463C8(){ note_ctor("S3463C8", this);} // tgen

static void Test_S3463C8()
{
  extern Class_Descriptor cd_S3463C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S3463C8, buf);
    S3463C8 *dp, &lv = *(dp=new (buf) S3463C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S3463C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3463C8)");
    check_base_class_offset(lv, (S3463C5*), 0, "S3463C8");
    check_field_offset(lv, s3463c8f0, ABISELECT(48,32), "S3463C8.s3463c8f0");
    set_bf_and_test(lv, s3463c8f1, ABISELECT(88,72), 0, 11, 1, "S3463C8");
    set_bf_and_test(lv, s3463c8f1, ABISELECT(88,72), 0, 11, hide_sll(1LL<<10), "S3463C8");
    check_field_offset(lv, s3463c8f2, ABISELECT(96,76), "S3463C8.s3463c8f2");
    test_class_info(&lv, &cd_S3463C8);
    dp->~S3463C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C8(Test_S3463C8, "S3463C8", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN7S3463C8C1Ev();
extern void _ZN7S3463C8D1Ev();
Name_Map name_map_S3463C8[] = {
  NSPAIR(_ZN7S3463C8C1Ev),
  NSPAIR(_ZN7S3463C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
static Base_Class bases_S3463C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C8[];
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C8[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
Class_Descriptor cd_S3463C8 = {  "S3463C8", // class name
  bases_S3463C8, 1,
  &(vtc_S3463C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI7S3463C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3463C8),3, //virtual function table var
  2, // 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  S3463C9  {
  void *s3463c9f0;
  short s3463c9f1;
  ::S19763C18_nt s3463c9f2;
  void *s3463c9f3;
  __tsi64 s3463c9f4;
  int s3463c9f5;
  ::S19942C11 s3463c9f6;
  int s3463c9f7;
  int s3463c9f8:12;
  int s3463c9f9;
  int s3463c9f10:8;
  virtual void  v4(); // _ZN7S3463C92v4Ev
  ~S3463C9(); // tgen
  S3463C9(); // tgen
};
//SIG(-1 S3463C9) C1{ v1 Fp Fs FC2{} Fp FL Fi FU3{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8}


void  S3463C9 ::v4(){vfunc_called(this, "_ZN7S3463C92v4Ev");}
S3463C9 ::~S3463C9(){ note_dtor("S3463C9", this);} // tgen
S3463C9 ::S3463C9(){ note_ctor("S3463C9", this);} // tgen

static void Test_S3463C9()
{
  extern Class_Descriptor cd_S3463C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S3463C9, buf);
    S3463C9 *dp, &lv = *(dp=new (buf) S3463C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S3463C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C9)");
    check_field_offset(lv, s3463c9f0, ABISELECT(8,4), "S3463C9.s3463c9f0");
    check_field_offset(lv, s3463c9f1, ABISELECT(16,8), "S3463C9.s3463c9f1");
    check_field_offset(lv, s3463c9f2, ABISELECT(18,10), "S3463C9.s3463c9f2");
    check_field_offset(lv, s3463c9f3, ABISELECT(24,12), "S3463C9.s3463c9f3");
    check_field_offset(lv, s3463c9f4, ABISELECT(32,16), "S3463C9.s3463c9f4");
    check_field_offset(lv, s3463c9f5, ABISELECT(40,24), "S3463C9.s3463c9f5");
    check_field_offset(lv, s3463c9f6, ABISELECT(48,28), "S3463C9.s3463c9f6");
    check_field_offset(lv, s3463c9f7, ABISELECT(208,148), "S3463C9.s3463c9f7");
    set_bf_and_test(lv, s3463c9f8, ABISELECT(212,152), 0, 12, 1, "S3463C9");
    set_bf_and_test(lv, s3463c9f8, ABISELECT(212,152), 0, 12, hide_sll(1LL<<11), "S3463C9");
    check_field_offset(lv, s3463c9f9, ABISELECT(216,156), "S3463C9.s3463c9f9");
    set_bf_and_test(lv, s3463c9f10, ABISELECT(220,160), 0, 8, 1, "S3463C9");
    set_bf_and_test(lv, s3463c9f10, ABISELECT(220,160), 0, 8, hide_sll(1LL<<7), "S3463C9");
    test_class_info(&lv, &cd_S3463C9);
    dp->~S3463C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C9(Test_S3463C9, "S3463C9", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN7S3463C9C1Ev();
extern void _ZN7S3463C9D1Ev();
Name_Map name_map_S3463C9[] = {
  NSPAIR(_ZN7S3463C9C1Ev),
  NSPAIR(_ZN7S3463C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3463C9[];
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY vtc_S3463C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C9[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
Class_Descriptor cd_S3463C9 = {  "S3463C9", // class name
  0,0,//no base classes
  &(vtc_S3463C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI7S3463C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3463C9),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  S3463C3  : virtual S3463C4 , virtual S3463C5 , virtual S3463C8 , S3463C9 {
  long double s3463c3f0;
  int s3463c3f1;
  long double s3463c3f2[3];
  long double s3463c3f3;
  int s3463c3f4;
  __tsi64 s3463c3f5[9];
  int s3463c3f6;
  int s3463c3f7;
  int s3463c3f8;
  int s3463c3f9;
  virtual void  v5(); // _ZN7S3463C32v5Ev
  ~S3463C3(); // tgen
  S3463C3(); // tgen
};
//SIG(-1 S3463C3) C1{ VBC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC6{ BC3 Fi[10] Fs:11 FC3} BC7{ v5 Fp Fs FC4 Fp FL Fi FU8{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v1 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi}


void  S3463C3 ::v5(){vfunc_called(this, "_ZN7S3463C32v5Ev");}
S3463C3 ::~S3463C3(){ note_dtor("S3463C3", this);} // tgen
S3463C3 ::S3463C3(){ note_ctor("S3463C3", this);} // tgen

static void Test_S3463C3()
{
  extern Class_Descriptor cd_S3463C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,155)];
    init_test(&cd_S3463C3, buf);
    S3463C3 *dp, &lv = *(dp=new (buf) S3463C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,616), "sizeof(S3463C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C3)");
    check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(416,320), "S3463C3");
    check_base_class_offset(lv, (S3463C4*), ABISELECT(416,320), "S3463C3");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*), ABISELECT(656,476), "S3463C3");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(704,508), "S3463C3");
    check_base_class_offset(lv, (S3463C8*), ABISELECT(704,508), "S3463C3");
    check_base_class_offset(lv, (S3463C9*), 0, "S3463C3");
    check_field_offset(lv, s3463c3f0, ABISELECT(224,164), "S3463C3.s3463c3f0");
    check_field_offset(lv, s3463c3f1, ABISELECT(240,176), "S3463C3.s3463c3f1");
    check_field_offset(lv, s3463c3f2, ABISELECT(256,180), "S3463C3.s3463c3f2");
    check_field_offset(lv, s3463c3f3, ABISELECT(304,216), "S3463C3.s3463c3f3");
    check_field_offset(lv, s3463c3f4, ABISELECT(320,228), "S3463C3.s3463c3f4");
    check_field_offset(lv, s3463c3f5, ABISELECT(328,232), "S3463C3.s3463c3f5");
    check_field_offset(lv, s3463c3f6, ABISELECT(400,304), "S3463C3.s3463c3f6");
    check_field_offset(lv, s3463c3f7, ABISELECT(404,308), "S3463C3.s3463c3f7");
    check_field_offset(lv, s3463c3f8, ABISELECT(408,312), "S3463C3.s3463c3f8");
    check_field_offset(lv, s3463c3f9, ABISELECT(412,316), "S3463C3.s3463c3f9");
    test_class_info(&lv, &cd_S3463C3);
    dp->~S3463C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C3(Test_S3463C3, "S3463C3", ABISELECT(848,616));

#else // __cplusplus

extern void _ZN7S3463C3C1Ev();
extern void _ZN7S3463C3D1Ev();
Name_Map name_map_S3463C3[] = {
  NSPAIR(_ZN7S3463C3C1Ev),
  NSPAIR(_ZN7S3463C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
static Base_Class bases_S3463C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(416,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(416,320), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(656,476), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(704,508), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //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_S3463C8,    ABISELECT(704,508), //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S3463C3[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C3[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S3463C3[];
static  VTT_ENTRY vtt_S3463C3[] = {
  {&(_ZTV7S3463C3[5]),  5,23},
  {&(_ZTV7S3463C3[12]),  12,23},
  {&(_ZTV7S3463C3[18]),  18,23},
  {&(_ZTV7S3463C3[22]),  22,23},
};
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
Class_Descriptor cd_S3463C3 = {  "S3463C3", // class name
  bases_S3463C3, 6,
  &(vtc_S3463C3[0]), // expected_vtbl_contents
  &(vtt_S3463C3[0]), // expected_vtt_contents
  ABISELECT(848,616), // object size
  NSPAIRA(_ZTI7S3463C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3463C3),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3463C3),4, //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  S3463C12  : S3463C5 , virtual S3463C8 , virtual S3463C3 , virtual S3463C9 , S3463C4 {
  __tsi64 s3463c12f0[3];
  ::S19942C12_nt s3463c12f1;
  void *s3463c12f2;
  short s3463c12f3;
  char s3463c12f4;
  int s3463c12f5;
  int s3463c12f6;
  virtual  ~S3463C12(); // _ZN8S3463C12D2Ev
  S3463C12(); // tgen
};
//SIG(-1 S3463C12) C1{ BC2{ v1 Fp[3] Fi[2] FL} VBC3{ BC2 Fi[10] Fs:11 FC2} VBC4{ VBC5{ BC2 v2 v3 Fc[10] Fl[6] FC2 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC3 BC8{ v4 Fp Fs FC6 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC8 BC5 vd FL[3] FC10{ m Fc[2]} Fp Fs Fc Fi Fi}


 S3463C12 ::~S3463C12(){ note_dtor("S3463C12", this);}
S3463C12 ::S3463C12(){ note_ctor("S3463C12", this);} // tgen

static void Test_S3463C12()
{
  extern Class_Descriptor cd_S3463C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(90,254)];
    init_test(&cd_S3463C12, buf);
    S3463C12 *dp, &lv = *(dp=new (buf) S3463C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1424,1012), "sizeof(S3463C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C12)");
    /*is_ambiguous_... S3463C12::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*), 0, "S3463C12");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(344,232), "S3463C12");
    check_base_class_offset(lv, (S3463C8*), ABISELECT(344,232), "S3463C12");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(344,232), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(912,660), "S3463C12");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(912,660), "S3463C12");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(1152,816), "S3463C12");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*), ABISELECT(496,340), "S3463C12");
    check_base_class_offset(lv, (S3463C3*), ABISELECT(496,340), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*), ABISELECT(1200,848), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(48,32), "S3463C12");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*), ABISELECT(48,32), "S3463C12");
    check_field_offset(lv, s3463c12f0, ABISELECT(288,188), "S3463C12.s3463c12f0");
    check_field_offset(lv, s3463c12f1, ABISELECT(312,212), "S3463C12.s3463c12f1");
    check_field_offset(lv, s3463c12f2, ABISELECT(320,216), "S3463C12.s3463c12f2");
    check_field_offset(lv, s3463c12f3, ABISELECT(328,220), "S3463C12.s3463c12f3");
    check_field_offset(lv, s3463c12f4, ABISELECT(330,222), "S3463C12.s3463c12f4");
    check_field_offset(lv, s3463c12f5, ABISELECT(332,224), "S3463C12.s3463c12f5");
    check_field_offset(lv, s3463c12f6, ABISELECT(336,228), "S3463C12.s3463c12f6");
    test_class_info(&lv, &cd_S3463C12);
    dp->~S3463C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C12(Test_S3463C12, "S3463C12", ABISELECT(1424,1012));

#else // __cplusplus

extern void _ZN8S3463C12C1Ev();
extern void _ZN8S3463C12D2Ev();
Name_Map name_map_S3463C12[] = {
  NSPAIR(_ZN8S3463C12C1Ev),
  NSPAIR(_ZN8S3463C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
static Base_Class bases_S3463C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C5,    ABISELECT(344,232), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_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_S3463C8,    ABISELECT(344,232), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(912,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_S3463C4,    ABISELECT(912,660), //bcp->offset
    28, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(1152,816), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(496,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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(496,340), //bcp->offset
    19, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C9,    ABISELECT(1200,848), //bcp->offset
    40, //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_S3463C5,    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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(48,32), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3463C12[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN8S3463C12D1Ev();
extern void _ZN8S3463C12D0Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY vtc_S3463C12[] = {
  ABISELECT(1200,848),
  ABISELECT(1152,816),
  ABISELECT(912,660),
  ABISELECT(496,340),
  ABISELECT(344,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D0Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-344,-232),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-912,-660),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-1152,-816),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-1200,-848),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern VTBL_ENTRY _ZTV8S3463C12[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C12[] = {
  ABISELECT(-152,-108),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__8S3463C12[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__8S3463C12[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C12[] = {
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C12[] = {
  {&(_ZTV8S3463C12[7]),  7,44},
  {&(_ZTV8S3463C12[18]),  18,44},
  {&(_ZTV8S3463C12[26]),  26,44},
  {&(_ZTV8S3463C12[33]),  33,44},
  {&(_ZTV8S3463C12[39]),  39,44},
  {&(_ZTV8S3463C12[43]),  43,44},
  {&(_tg__ZTV7S3463C3__8S3463C12[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__8S3463C12[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__8S3463C12[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3463C12[];
extern  VTBL_ENTRY _ZTV8S3463C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C12[];
Class_Descriptor cd_S3463C12 = {  "S3463C12", // class name
  bases_S3463C12, 11,
  &(vtc_S3463C12[0]), // expected_vtbl_contents
  &(vtt_S3463C12[0]), // expected_vtt_contents
  ABISELECT(1424,1012), // object size
  NSPAIRA(_ZTI8S3463C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3463C12),44, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3463C12),10, //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  S3463C2  : S3463C3 , virtual S19942C12_nt {
  ::S3463C12 s3463c2f0;
  void *s3463c2f1;
  virtual  ~S3463C2(); // _ZN7S3463C2D2Ev
  virtual void  v6(); // _ZN7S3463C22v6Ev
  virtual void  v7(); // _ZN7S3463C22v7Ev
  virtual void  v8(); // _ZN7S3463C22v8Ev
  S3463C2(); // tgen
};
//SIG(-1 S3463C2) C1{ BC2{ VBC3{ BC4{ v4 Fp[3] Fi[2] FL} v5 v6 Fc[10] Fl[6] FC4 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC7{ BC4 Fi[10] Fs:11 FC4} BC8{ v7 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v8 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} vd v1 v2 v3 FC11{ BC4 VBC7 VBC2 VBC8 BC3 vd FL[3] FC10 Fp Fs Fc Fi Fi} Fp}


 S3463C2 ::~S3463C2(){ note_dtor("S3463C2", this);}
void  S3463C2 ::v6(){vfunc_called(this, "_ZN7S3463C22v6Ev");}
void  S3463C2 ::v7(){vfunc_called(this, "_ZN7S3463C22v7Ev");}
void  S3463C2 ::v8(){vfunc_called(this, "_ZN7S3463C22v8Ev");}
S3463C2 ::S3463C2(){ note_ctor("S3463C2", this);} // tgen

static void Test_S3463C2()
{
  extern Class_Descriptor cd_S3463C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(145,410)];
    init_test(&cd_S3463C2, buf);
    S3463C2 *dp, &lv = *(dp=new (buf) S3463C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2304,1636), "sizeof(S3463C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C2)");
    check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(1856,1336), "S3463C2");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(1856,1336), "S3463C2");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(2096,1492), "S3463C2");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(2144,1524), "S3463C2");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(2144,1524), "S3463C2");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*), 0, "S3463C2");
    check_base_class_offset(lv, (S3463C3*), 0, "S3463C2");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(2288,1632), "S3463C2");
    check_field_offset(lv, s3463c2f0, ABISELECT(416,320), "S3463C2.s3463c2f0");
    check_field_offset(lv, s3463c2f1, ABISELECT(1840,1332), "S3463C2.s3463c2f1");
    test_class_info(&lv, &cd_S3463C2);
    dp->~S3463C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C2(Test_S3463C2, "S3463C2", ABISELECT(2304,1636));

#else // __cplusplus

extern void _ZN7S3463C2C1Ev();
extern void _ZN7S3463C2D2Ev();
Name_Map name_map_S3463C2[] = {
  NSPAIR(_ZN7S3463C2C1Ev),
  NSPAIR(_ZN7S3463C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
static Base_Class bases_S3463C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(1856,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
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(1856,1336), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(2096,1492), //bcp->offset
    21, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(2144,1524), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //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_S3463C8,    ABISELECT(2144,1524), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C3,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(2288,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3463C2[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C2D1Ev();
extern void _ZN7S3463C2D0Ev();
extern void _ZN7S3463C22v6Ev();
extern void _ZN7S3463C22v7Ev();
extern void _ZN7S3463C22v8Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C2[] = {
  ABISELECT(2288,1632),
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v8Ev,
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV7S3463C2[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__7S3463C2[] = {
  ABISELECT(2144,1524),
  ABISELECT(2096,1492),
  ABISELECT(1856,1336),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__7S3463C2[] = {
  0,
  0,
  0,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__7S3463C2[] = {
  0,
  ABISELECT(-2096,-1492),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__7S3463C2[] = {
  0,
  ABISELECT(-2144,-1524),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C2[] = {
  {&(_ZTV7S3463C2[6]),  6,29},
  {&(_tg__ZTV7S3463C3__7S3463C2[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__7S3463C2[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__7S3463C2[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__7S3463C2[3]),  3,4},
  {&(_ZTV7S3463C2[18]),  18,29},
  {&(_ZTV7S3463C2[24]),  24,29},
  {&(_ZTV7S3463C2[28]),  28,29},
};
extern VTBL_ENTRY _ZTI7S3463C2[];
extern  VTBL_ENTRY _ZTV7S3463C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C2[];
Class_Descriptor cd_S3463C2 = {  "S3463C2", // class name
  bases_S3463C2, 8,
  &(vtc_S3463C2[0]), // expected_vtbl_contents
  &(vtt_S3463C2[0]), // expected_vtt_contents
  ABISELECT(2304,1636), // object size
  NSPAIRA(_ZTI7S3463C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3463C2),29, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3463C2),8, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C14  : virtual S3463C5 , S3463C3 , virtual S19942C12_nt , S3463C9 {
  int s3463c14f0;
  long double s3463c14f1;
  ::S19942C12_nt s3463c14f2;
  void *s3463c14f3;
  short s3463c14f4;
  int s3463c14f5;
  int s3463c14f6;
  int s3463c14f7;
  virtual void  v9(); // _ZN8S3463C142v9Ev
  ~S3463C14(); // tgen
  S3463C14(); // tgen
};
//SIG(-1 S3463C14) C1{ VBC2{ v2 Fp[3] Fi[2] FL} BC3{ VBC4{ BC2 v3 v4 Fc[10] Fl[6] FC2 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC7{ BC2 Fi[10] Fs:11 FC2} BC8{ v5 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} BC8 v1 Fi FD FC10 Fp Fs Fi Fi Fi}


void  S3463C14 ::v9(){vfunc_called(this, "_ZN8S3463C142v9Ev");}
S3463C14 ::~S3463C14(){ note_dtor("S3463C14", this);} // tgen
S3463C14 ::S3463C14(){ note_ctor("S3463C14", this);} // tgen

static void Test_S3463C14()
{
  extern Class_Descriptor cd_S3463C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,207)];
    init_test(&cd_S3463C14, buf);
    S3463C14 *dp, &lv = *(dp=new (buf) S3463C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,824), "sizeof(S3463C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C14)");
    /*is_ambiguous_... S3463C14::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*), ABISELECT(704,524), "S3463C14");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(704,524), "S3463C14");
    check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(752,556), "S3463C14");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(752,556), "S3463C14");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(992,712), "S3463C14");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(992,712), "S3463C14");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*), 0, "S3463C14");
    check_base_class_offset(lv, (S3463C3*), 0, "S3463C14");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1136,820), "S3463C14");
    /*is_ambiguous_... S3463C14::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*), ABISELECT(416,320), "S3463C14");
    check_field_offset(lv, s3463c14f0, ABISELECT(640,484), "S3463C14.s3463c14f0");
    check_field_offset(lv, s3463c14f1, ABISELECT(656,488), "S3463C14.s3463c14f1");
    check_field_offset(lv, s3463c14f2, ABISELECT(672,500), "S3463C14.s3463c14f2");
    check_field_offset(lv, s3463c14f3, ABISELECT(680,504), "S3463C14.s3463c14f3");
    check_field_offset(lv, s3463c14f4, ABISELECT(688,508), "S3463C14.s3463c14f4");
    check_field_offset(lv, s3463c14f5, ABISELECT(692,512), "S3463C14.s3463c14f5");
    check_field_offset(lv, s3463c14f6, ABISELECT(696,516), "S3463C14.s3463c14f6");
    check_field_offset(lv, s3463c14f7, ABISELECT(700,520), "S3463C14.s3463c14f7");
    test_class_info(&lv, &cd_S3463C14);
    dp->~S3463C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C14(Test_S3463C14, "S3463C14", ABISELECT(1152,824));

#else // __cplusplus

extern void _ZN8S3463C14C1Ev();
extern void _ZN8S3463C14D1Ev();
Name_Map name_map_S3463C14[] = {
  NSPAIR(_ZN8S3463C14C1Ev),
  NSPAIR(_ZN8S3463C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
static Base_Class bases_S3463C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(704,524), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(752,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(752,556), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(992,712), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //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_S3463C8,    ABISELECT(992,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C3,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(1136,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3463C9,    ABISELECT(416,320), //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},
  {0}};
extern VTBL_ENTRY _ZTI8S3463C14[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C14[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S3463C14[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C14[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__8S3463C14[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__8S3463C14[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C14[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C14[] = {
  {&(_ZTV8S3463C14[6]),  6,28},
  {&(_tg__ZTV7S3463C3__8S3463C14[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__8S3463C14[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__8S3463C14[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C14[3]),  3,4},
  {&(_ZTV8S3463C14[15]),  15,28},
  {&(_ZTV8S3463C14[21]),  21,28},
  {&(_ZTV8S3463C14[27]),  27,28},
};
extern VTBL_ENTRY _ZTI8S3463C14[];
extern  VTBL_ENTRY _ZTV8S3463C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C14[];
Class_Descriptor cd_S3463C14 = {  "S3463C14", // class name
  bases_S3463C14, 9,
  &(vtc_S3463C14[0]), // expected_vtbl_contents
  &(vtt_S3463C14[0]), // expected_vtt_contents
  ABISELECT(1152,824), // object size
  NSPAIRA(_ZTI8S3463C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3463C14),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3463C14),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3463C13  : S3463C4 , virtual S3463C9 , virtual S3463C3 , S3463C12 , S3463C14 {
  void *s3463c13f0;
  int s3463c13f1;
  ::S3463C12 s3463c13f2;
  char s3463c13f3;
  int s3463c13f4;
  ::S19763C18_nt s3463c13f5;
  int s3463c13f6;
  int s3463c13f7;
  ::S3463C4 s3463c13f8;
  ::S19942C11 s3463c13f9;
  virtual void  v10(); // _ZN8S3463C133v10Ev
  ~S3463C13(); // tgen
  S3463C13(); // tgen
};
//SIG(-1 S3463C13) C1{ BC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC6{ v5 Fp Fs FC4 Fp FL Fi FU7{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} VBC8{ VBC2 VBC3 VBC9{ BC3 Fi[10] Fs:11 FC3} BC6 v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} BC10{ BC3 VBC9 VBC8 VBC6 BC2 vd FL[3] FC11{ m Fc[2]} Fp Fs Fc Fi Fi} BC12{ VBC3 BC8 VBC11 BC6 v7 Fi FD FC11 Fp Fs Fi Fi Fi} v1 Fp Fi FC10 Fc Fi FC4 Fi Fi FC2 FU7}


void  S3463C13 ::v10(){vfunc_called(this, "_ZN8S3463C133v10Ev");}
S3463C13 ::~S3463C13(){ note_dtor("S3463C13", this);} // tgen
S3463C13 ::S3463C13(){ note_ctor("S3463C13", this);} // tgen

static void Test_S3463C13()
{
  extern Class_Descriptor cd_S3463C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(267,754)];
    init_test(&cd_S3463C13, buf);
    S3463C13 *dp, &lv = *(dp=new (buf) S3463C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4256,3012), "sizeof(S3463C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C13)");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), 0, "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*), 0, "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*), ABISELECT(3168,2228), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C12*), ABISELECT(3168,2228), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(3808,2712), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(3808,2712), "S3463C13");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*)(S3463C14*), ABISELECT(3808,2712), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(4048,2868), "S3463C13");
    /*is_ambiguous_... S3463C14::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C14*), ABISELECT(4048,2868), "S3463C13");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*)(S3463C14*), ABISELECT(4048,2868), "S3463C13");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(4096,2900), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(4096,2900), "S3463C13");
    check_base_class_offset(lv, (S3463C8*)(S3463C12*), ABISELECT(4096,2900), "S3463C13");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*)(S3463C14*), ABISELECT(4096,2900), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C3*), ABISELECT(3392,2392), "S3463C13");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C3*), ABISELECT(3392,2392), "S3463C13");
    check_base_class_offset(lv, (S3463C3*)(S3463C12*), ABISELECT(3392,2392), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C12*), ABISELECT(240,156), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*)(S3463C12*), ABISELECT(288,188), "S3463C13");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C12*), ABISELECT(288,188), "S3463C13");
    check_base_class_offset(lv, (S3463C12*), ABISELECT(240,156), "S3463C13");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*)(S3463C14*), ABISELECT(592,388), "S3463C13");
    check_base_class_offset(lv, (S3463C3*)(S3463C14*), ABISELECT(592,388), "S3463C13");
    check_base_class_offset(lv, (S19942C12_nt*)(S3463C14*), ABISELECT(4240,3008), "S3463C13");
    /*is_ambiguous_... S3463C14::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C14*), ABISELECT(1008,708), "S3463C13");
    check_base_class_offset(lv, (S3463C14*), ABISELECT(592,388), "S3463C13");
    check_field_offset(lv, s3463c13f0, ABISELECT(1296,912), "S3463C13.s3463c13f0");
    check_field_offset(lv, s3463c13f1, ABISELECT(1304,916), "S3463C13.s3463c13f1");
    check_field_offset(lv, s3463c13f2, ABISELECT(1312,920), "S3463C13.s3463c13f2");
    check_field_offset(lv, s3463c13f3, ABISELECT(2736,1932), "S3463C13.s3463c13f3");
    check_field_offset(lv, s3463c13f4, ABISELECT(2740,1936), "S3463C13.s3463c13f4");
    check_field_offset(lv, s3463c13f5, ABISELECT(2744,1940), "S3463C13.s3463c13f5");
    check_field_offset(lv, s3463c13f6, ABISELECT(2748,1944), "S3463C13.s3463c13f6");
    check_field_offset(lv, s3463c13f7, ABISELECT(2752,1948), "S3463C13.s3463c13f7");
    check_field_offset(lv, s3463c13f8, ABISELECT(2768,1952), "S3463C13.s3463c13f8");
    check_field_offset(lv, s3463c13f9, ABISELECT(3008,2108), "S3463C13.s3463c13f9");
    test_class_info(&lv, &cd_S3463C13);
    dp->~S3463C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C13(Test_S3463C13, "S3463C13", ABISELECT(4256,3012));

#else // __cplusplus

extern void _ZN8S3463C13C1Ev();
extern void _ZN8S3463C13D1Ev();
Name_Map name_map_S3463C13[] = {
  NSPAIR(_ZN8S3463C13C1Ev),
  NSPAIR(_ZN8S3463C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C12;
extern VTBL_ENTRY _ZTI8S3463C12[];
extern  VTBL_ENTRY _ZTV8S3463C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C12[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C14;
extern VTBL_ENTRY _ZTI8S3463C14[];
extern  VTBL_ENTRY _ZTV8S3463C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C14[];
static Base_Class bases_S3463C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C9,    ABISELECT(3168,2228), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(3808,2712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3463C4,    ABISELECT(3808,2712), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(4048,2868), //bcp->offset
    62, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(4096,2900), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //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_S3463C8,    ABISELECT(4096,2900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(3392,2392), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C3,    ABISELECT(3392,2392), //bcp->offset
    45, //bcp->virtual_function_table_offset
    7, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C5,    ABISELECT(240,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3463C5,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(288,188), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3463C12,    ABISELECT(240,156), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3463C9,    ABISELECT(592,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
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3463C3,    ABISELECT(592,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(4240,3008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S3463C9,    ABISELECT(1008,708), //bcp->offset
    38, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S3463C14,    ABISELECT(592,388), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3463C13[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN8S3463C133v10Ev();
extern void _ZN8S3463C13D1Ev();
extern void _ZN8S3463C13D0Ev();
extern void _ZN7S3463C52v1Ev();
extern void ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev)();
extern void ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev)();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY vtc_S3463C13[] = {
  ABISELECT(4240,3008),
  ABISELECT(4096,2900),
  ABISELECT(4048,2868),
  ABISELECT(3808,2712),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  (VTBL_ENTRY)&_ZN8S3463C133v10Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D0Ev,
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
  ABISELECT(-1008,-708),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3392,-2392),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  0,
  0,
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-4048,-2868),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-4096,-2900),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S3463C13[];
extern void _ZN7S3463C52v1Ev();
extern void _ZN8S3463C12D1Ev();
extern void _ZN8S3463C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C12__8S3463C13[] = {
  ABISELECT(2928,2072),
  ABISELECT(3808,2712),
  ABISELECT(3568,2556),
  ABISELECT(3152,2236),
  ABISELECT(3856,2744),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D0Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A1__8S3463C12__8S3463C13[] = {
  0,
  ABISELECT(-3856,-2744),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C12__8S3463C13[] = {
  0,
  0,
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  ABISELECT(-3152,-2236),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C12__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-3568,-2556),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A3__8S3463C12__8S3463C13[] = {
  0,
  ABISELECT(-3808,-2712),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C9__A1__8S3463C12__8S3463C13[] = {
  0,
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C14__8S3463C13[] = {
  ABISELECT(3648,2620),
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C38S3463C14__A1__8S3463C13[] = {
  ABISELECT(3504,2512),
  ABISELECT(3456,2480),
  ABISELECT(3216,2324),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C38S3463C14__A1__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C38S3463C14__A1__8S3463C13[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C14__A1__8S3463C13[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__8S3463C14__8S3463C13[] = {
  0,
  ABISELECT(-3456,-2480),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C14__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-3216,-2324),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__8S3463C14__8S3463C13[] = {
  0,
  ABISELECT(-3504,-2512),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C13[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__8S3463C13[] = {
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__8S3463C13[] = {
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C13[] = {
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C13[] = {
  {&(_ZTV8S3463C13[8]),  8,70},
  {&(_tg__ZTV8S3463C12__8S3463C13[7]),  7,10},
  {&(_tg__ZTV7S3463C57S3463C8__A1__8S3463C12__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C3__8S3463C12__8S3463C13[7]),  7,9},
  {&(_tg__ZTV7S3463C4__8S3463C12__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A3__8S3463C12__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C9__A1__8S3463C12__8S3463C13[3]),  3,4},
  {&(_tg__ZTV8S3463C14__8S3463C13[6]),  6,9},
  {&(_tg__ZTV7S3463C38S3463C14__A1__8S3463C13[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C38S3463C14__A1__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C38S3463C14__A1__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C14__A1__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C5__8S3463C14__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C4__8S3463C14__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C57S3463C8__A2__8S3463C14__8S3463C13[3]),  3,4},
  {&(_ZTV8S3463C13[44]),  44,70},
  {&(_ZTV8S3463C13[52]),  52,70},
  {&(_ZTV8S3463C13[59]),  59,70},
  {&(_ZTV8S3463C13[65]),  65,70},
  {&(_ZTV8S3463C13[69]),  69,70},
  {&(_ZTV8S3463C13[21]),  21,70},
  {&(_ZTV8S3463C13[35]),  35,70},
  {&(_tg__ZTV7S3463C3__8S3463C13[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__8S3463C13[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__8S3463C13[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__8S3463C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3463C13[];
extern  VTBL_ENTRY _ZTV8S3463C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C13[];
Class_Descriptor cd_S3463C13 = {  "S3463C13", // class name
  bases_S3463C13, 19,
  &(vtc_S3463C13[0]), // expected_vtbl_contents
  &(vtt_S3463C13[0]), // expected_vtt_contents
  ABISELECT(4256,3012), // object size
  NSPAIRA(_ZTI8S3463C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3463C13),70, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3463C13),26, //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  S3463C15  {
  int s3463c15f0;
  int s3463c15f1;
  ::S3463C2 s3463c15f2[9];
  int s3463c15f3;
  long s3463c15f4;
  int s3463c15f5;
  int s3463c15f6;
  ::S3463C5 s3463c15f7;
  int s3463c15f8;
  int s3463c15f9;
  int s3463c15f10;
  long double s3463c15f11;
  int s3463c15f12;
  virtual void  v11(); // _ZN8S3463C153v11Ev
  virtual void  v12(); // _ZN8S3463C153v12Ev
  ~S3463C15(); // tgen
  S3463C15(); // tgen
};
//SIG(-1 S3463C15) C1{ v1 v2 Fi[2] FC2{ BC3{ VBC4{ BC5{ v6 Fp[3] Fi[2] FL} v7 v8 Fc[10] Fl[6] FC5 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC5 VBC8{ BC5 Fi[10] Fs:11 FC5} BC9{ v9 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v10 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} vd v3 v4 v5 FC12{ BC5 VBC8 VBC3 VBC9 BC4 vd FL[3] FC11 Fp Fs Fc Fi Fi} Fp}[9] Fi Fl Fi Fi FC5 Fi Fi Fi FD Fi}


void  S3463C15 ::v11(){vfunc_called(this, "_ZN8S3463C153v11Ev");}
void  S3463C15 ::v12(){vfunc_called(this, "_ZN8S3463C153v12Ev");}
S3463C15 ::~S3463C15(){ note_dtor("S3463C15", this);} // tgen
S3463C15 ::S3463C15(){ note_ctor("S3463C15", this);} // tgen

static void Test_S3463C15()
{
  extern Class_Descriptor cd_S3463C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1306,3704)];
    init_test(&cd_S3463C15, buf);
    S3463C15 *dp, &lv = *(dp=new (buf) S3463C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(20880,14812), "sizeof(S3463C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C15)");
    check_field_offset(lv, s3463c15f0, ABISELECT(8,4), "S3463C15.s3463c15f0");
    check_field_offset(lv, s3463c15f1, ABISELECT(12,8), "S3463C15.s3463c15f1");
    check_field_offset(lv, s3463c15f2, ABISELECT(16,12), "S3463C15.s3463c15f2");
    check_field_offset(lv, s3463c15f3, ABISELECT(20752,14736), "S3463C15.s3463c15f3");
    check_field_offset(lv, s3463c15f4, ABISELECT(20760,14740), "S3463C15.s3463c15f4");
    check_field_offset(lv, s3463c15f5, ABISELECT(20768,14744), "S3463C15.s3463c15f5");
    check_field_offset(lv, s3463c15f6, ABISELECT(20772,14748), "S3463C15.s3463c15f6");
    check_field_offset(lv, s3463c15f7, ABISELECT(20776,14752), "S3463C15.s3463c15f7");
    check_field_offset(lv, s3463c15f8, ABISELECT(20824,14784), "S3463C15.s3463c15f8");
    check_field_offset(lv, s3463c15f9, ABISELECT(20828,14788), "S3463C15.s3463c15f9");
    check_field_offset(lv, s3463c15f10, ABISELECT(20832,14792), "S3463C15.s3463c15f10");
    check_field_offset(lv, s3463c15f11, ABISELECT(20848,14796), "S3463C15.s3463c15f11");
    check_field_offset(lv, s3463c15f12, ABISELECT(20864,14808), "S3463C15.s3463c15f12");
    test_class_info(&lv, &cd_S3463C15);
    dp->~S3463C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C15(Test_S3463C15, "S3463C15", ABISELECT(20880,14812));

#else // __cplusplus

extern void _ZN8S3463C15C1Ev();
extern void _ZN8S3463C15D1Ev();
Name_Map name_map_S3463C15[] = {
  NSPAIR(_ZN8S3463C15C1Ev),
  NSPAIR(_ZN8S3463C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3463C15[];
extern void _ZN8S3463C153v11Ev();
extern void _ZN8S3463C153v12Ev();
static  VTBL_ENTRY vtc_S3463C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C15[0]),
  (VTBL_ENTRY)&_ZN8S3463C153v11Ev,
  (VTBL_ENTRY)&_ZN8S3463C153v12Ev,
};
extern VTBL_ENTRY _ZTI8S3463C15[];
extern  VTBL_ENTRY _ZTV8S3463C15[];
Class_Descriptor cd_S3463C15 = {  "S3463C15", // class name
  0,0,//no base classes
  &(vtc_S3463C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(20880,14812), // object size
  NSPAIRA(_ZTI8S3463C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3463C15),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  S3463C1  : S3463C2 , virtual S3463C13 , S3463C15 {
  int s3463c1f0;
  long double s3463c1f1;
  ~S3463C1(); // tgen
  S3463C1(); // tgen
};
//SIG(1 S3463C1) C1{ BC2{ BC3{ VBC4{ BC5{ v1 Fp[3] Fi[2] FL} v2 v3 Fc[10] Fl[6] FC5 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC5 VBC8{ BC5 Fi[10] Fs:11 FC5} BC9{ v4 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v5 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} vd v6 v7 v8 FC12{ BC5 VBC8 VBC3 VBC9 BC4 vd FL[3] FC11 Fp Fs Fc Fi Fi} Fp} VBC13{ BC4 VBC9 VBC3 BC12 BC14{ VBC5 BC3 VBC11 BC9 v9 Fi FD FC11 Fp Fs Fi Fi Fi} v10 Fp Fi FC12 Fc Fi FC6 Fi Fi FC4 FU10} BC15{ v11 v12 Fi Fi FC2[9] Fi Fl Fi Fi FC5 Fi Fi Fi FD Fi} Fi FD}


S3463C1 ::~S3463C1(){ note_dtor("S3463C1", this);} // tgen
S3463C1 ::S3463C1(){ note_ctor("S3463C1", this);} // tgen

static void Test_S3463C1()
{
  extern Class_Descriptor cd_S3463C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1689,4795)];
    init_test(&cd_S3463C1, buf);
    S3463C1 *dp, &lv = *(dp=new (buf) S3463C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(27008,19176), "sizeof(S3463C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3463C1)");
    /*is_ambiguous_... S3463C1::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*), ABISELECT(22752,16164), "S3463C1");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*)(S3463C2*), ABISELECT(22752,16164), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C3*), ABISELECT(22752,16164), "S3463C1");
    check_base_class_offset(lv, (S3463C4*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(22752,16164), "S3463C1");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*)(S3463C2*), ABISELECT(22992,16320), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*), ABISELECT(22992,16320), "S3463C1");
    /*is_ambiguous_... S3463C14::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C14*)(S3463C13*), ABISELECT(22992,16320), "S3463C1");
    /*is_ambiguous_... S3463C3::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(22992,16320), "S3463C1");
    check_base_class_offset(lv, (S3463C5*)(S3463C8*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*)(S3463C2*), ABISELECT(23040,16352), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C8*)(S3463C3*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C8*)(S3463C12*)(S3463C13*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C8*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(23040,16352), "S3463C1");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*)(S3463C2*), 0, "S3463C1");
    check_base_class_offset(lv, (S3463C3*)(S3463C2*), 0, "S3463C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S3463C2*), ABISELECT(23184,16460), "S3463C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S3463C14*)(S3463C13*), ABISELECT(23184,16460), "S3463C1");
    check_base_class_offset(lv, (S3463C2*), 0, "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*)(S3463C13*), ABISELECT(23200,16464), "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C13*), ABISELECT(23200,16464), "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C13*), ABISELECT(26368,18692), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C12*)(S3463C13*), ABISELECT(26368,18692), "S3463C1");
    /*is_ambiguous_... S3463C1::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C3*), ABISELECT(26592,18856), "S3463C1");
    /*is_ambiguous_... S3463C13::S3463C3 */ AMB_check_base_class_offset(lv, (S3463C3*)(S3463C13*), ABISELECT(26592,18856), "S3463C1");
    check_base_class_offset(lv, (S3463C3*)(S3463C12*)(S3463C13*), ABISELECT(26592,18856), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C5 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C12*)(S3463C13*), ABISELECT(23440,16620), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C5*)(S3463C4*)(S3463C12*)(S3463C13*), ABISELECT(23488,16652), "S3463C1");
    /*is_ambiguous_... S3463C12::S3463C4 */ AMB_check_base_class_offset(lv, (S3463C4*)(S3463C12*)(S3463C13*), ABISELECT(23488,16652), "S3463C1");
    check_base_class_offset(lv, (S3463C12*)(S3463C13*), ABISELECT(23440,16620), "S3463C1");
    check_base_class_offset(lv, (S3463C9*)(S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(23792,16852), "S3463C1");
    check_base_class_offset(lv, (S3463C3*)(S3463C14*)(S3463C13*), ABISELECT(23792,16852), "S3463C1");
    /*is_ambiguous_... S3463C14::S3463C9 */ AMB_check_base_class_offset(lv, (S3463C9*)(S3463C14*)(S3463C13*), ABISELECT(24208,17172), "S3463C1");
    check_base_class_offset(lv, (S3463C14*)(S3463C13*), ABISELECT(23792,16852), "S3463C1");
    check_base_class_offset(lv, (S3463C13*), ABISELECT(23200,16464), "S3463C1");
    check_base_class_offset(lv, (S3463C15*), ABISELECT(1856,1336), "S3463C1");
    check_field_offset(lv, s3463c1f0, ABISELECT(22724,16148), "S3463C1.s3463c1f0");
    check_field_offset(lv, s3463c1f1, ABISELECT(22736,16152), "S3463C1.s3463c1f1");
    test_class_info(&lv, &cd_S3463C1);
    dp->~S3463C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3463C1(Test_S3463C1, "S3463C1", ABISELECT(27008,19176));

#else // __cplusplus

extern void _ZN7S3463C1C1Ev();
extern void _ZN7S3463C1D1Ev();
Name_Map name_map_S3463C1[] = {
  NSPAIR(_ZN7S3463C1C1Ev),
  NSPAIR(_ZN7S3463C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C8;
extern VTBL_ENTRY _ZTI7S3463C8[];
extern  VTBL_ENTRY _ZTV7S3463C8[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S3463C2;
extern VTBL_ENTRY _ZTI7S3463C2[];
extern  VTBL_ENTRY _ZTV7S3463C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C2[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C5;
extern VTBL_ENTRY _ZTI7S3463C5[];
extern  VTBL_ENTRY _ZTV7S3463C5[];
extern Class_Descriptor cd_S3463C4;
extern VTBL_ENTRY _ZTI7S3463C4[];
extern  VTBL_ENTRY _ZTV7S3463C4[];
extern Class_Descriptor cd_S3463C12;
extern VTBL_ENTRY _ZTI8S3463C12[];
extern  VTBL_ENTRY _ZTV8S3463C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C12[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C3;
extern VTBL_ENTRY _ZTI7S3463C3[];
extern  VTBL_ENTRY _ZTV7S3463C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C3[];
extern Class_Descriptor cd_S3463C9;
extern VTBL_ENTRY _ZTI7S3463C9[];
extern  VTBL_ENTRY _ZTV7S3463C9[];
extern Class_Descriptor cd_S3463C14;
extern VTBL_ENTRY _ZTI8S3463C14[];
extern  VTBL_ENTRY _ZTV8S3463C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C14[];
extern Class_Descriptor cd_S3463C13;
extern VTBL_ENTRY _ZTI8S3463C13[];
extern  VTBL_ENTRY _ZTV8S3463C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3463C13[];
extern Class_Descriptor cd_S3463C15;
extern VTBL_ENTRY _ZTI8S3463C15[];
extern  VTBL_ENTRY _ZTV8S3463C15[];
static Base_Class bases_S3463C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3463C5,    ABISELECT(22752,16164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(22752,16164), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(22992,16320), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(23040,16352), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //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_S3463C8,    ABISELECT(23040,16352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3463C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S3463C3,    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
    21, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(23184,16460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3463C2,    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_S3463C5,    ABISELECT(23200,16464), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C4,    ABISELECT(23200,16464), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3463C9,    ABISELECT(26368,18692), //bcp->offset
    85, //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
    17, //immediately_derived
  0, 1},
  {&cd_S3463C9,    ABISELECT(26592,18856), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C3,    ABISELECT(26592,18856), //bcp->offset
    89, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S3463C5,    ABISELECT(23440,16620), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S3463C5,    ABISELECT(23488,16652), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S3463C4,    ABISELECT(23488,16652), //bcp->offset
    68, //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
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3463C12,    ABISELECT(23440,16620), //bcp->offset
    58, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3463C9,    ABISELECT(23792,16852), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3463C3,    ABISELECT(23792,16852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3463C9,    ABISELECT(24208,17172), //bcp->offset
    82, //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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3463C14,    ABISELECT(23792,16852), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3463C13,    ABISELECT(23200,16464), //bcp->offset
    36, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3463C15,    ABISELECT(1856,1336), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3463C1[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C1D1Ev();
extern void _ZN7S3463C1D0Ev();
extern void _ZN7S3463C22v6Ev();
extern void _ZN7S3463C22v7Ev();
extern void _ZN7S3463C22v8Ev();
extern void _ZN8S3463C153v11Ev();
extern void _ZN8S3463C153v12Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN8S3463C133v10Ev();
extern void ABISELECT(_ZTv0_n104_N7S3463C1D1Ev,_ZTv0_n52_N7S3463C1D1Ev)();
extern void ABISELECT(_ZThn23200_N7S3463C1D1Ev,_ZThn16464_N7S3463C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S3463C1D0Ev,_ZTv0_n52_N7S3463C1D0Ev)();
extern void ABISELECT(_ZThn23200_N7S3463C1D0Ev,_ZThn16464_N7S3463C1D0Ev)() __attribute__((weak));
extern void _ZN7S3463C52v1Ev();
extern void ABISELECT(_ZTvn240_n104_N7S3463C1D1Ev,_ZTvn156_n52_N7S3463C1D1Ev)();
extern void ABISELECT(_ZTvn240_n104_N7S3463C1D0Ev,_ZTvn156_n52_N7S3463C1D0Ev)();
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY vtc_S3463C1[] = {
  ABISELECT(26592,18856),
  ABISELECT(26368,18692),
  ABISELECT(23200,16464),
  ABISELECT(23184,16460),
  ABISELECT(23040,16352),
  ABISELECT(22992,16320),
  ABISELECT(22752,16164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3463C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3463C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v8Ev,
  ABISELECT(-1856,-1336),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN8S3463C153v11Ev,
  (VTBL_ENTRY)&_ZN8S3463C153v12Ev,
  0,
  0,
  0,
  ABISELECT(-22752,-16164),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  0,
  ABISELECT(-22992,-16320),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  0,
  ABISELECT(-23040,-16352),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(592,388),
  ABISELECT(-23200,-16464),
  0,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  ABISELECT(-160,-112),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  ABISELECT(-23200,-16464),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  (VTBL_ENTRY)&_ZN8S3463C133v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S3463C1D1Ev,_ZTv0_n52_N7S3463C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S3463C1D0Ev,_ZTv0_n52_N7S3463C1D0Ev),
  ABISELECT(2928,2072),
  ABISELECT(-448,-300),
  ABISELECT(-688,-456),
  ABISELECT(3152,2236),
  ABISELECT(-400,-268),
  ABISELECT(-23440,-16620),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N7S3463C1D1Ev,_ZTvn156_n52_N7S3463C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n104_N7S3463C1D0Ev,_ZTvn156_n52_N7S3463C1D0Ev),
  ABISELECT(-23488,-16652),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  ABISELECT(-608,-392),
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  ABISELECT(-23792,-16852),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
  ABISELECT(-24208,-17172),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  ABISELECT(-26368,-18692),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  0,
  0,
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  ABISELECT(-26592,-18856),
  (VTBL_ENTRY)&(_ZTI7S3463C1[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern VTBL_ENTRY _ZTV7S3463C1[];
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN7S3463C2D1Ev();
extern void _ZN7S3463C2D0Ev();
extern void _ZN7S3463C22v6Ev();
extern void _ZN7S3463C22v7Ev();
extern void _ZN7S3463C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C2__7S3463C1[] = {
  ABISELECT(23184,16460),
  ABISELECT(23040,16352),
  ABISELECT(22992,16320),
  ABISELECT(22752,16164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3463C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3463C22v8Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C37S3463C2__7S3463C1[] = {
  ABISELECT(23040,16352),
  ABISELECT(22992,16320),
  ABISELECT(22752,16164),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C37S3463C2__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(-22752,-16164),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C37S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-22992,-16320),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C37S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-23040,-16352),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C2__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(-22752,-16164),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-22992,-16320),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C2__7S3463C1[] = {
  0,
  ABISELECT(-23040,-16352),
  (VTBL_ENTRY)&(_ZTI7S3463C2[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
extern void _ZN8S3463C133v10Ev();
extern void _ZN8S3463C13D1Ev();
extern void _ZN8S3463C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C13__7S3463C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-160,-112),
  ABISELECT(-208,-144),
  ABISELECT(-448,-300),
  ABISELECT(3392,2392),
  ABISELECT(3168,2228),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
  (VTBL_ENTRY)&_ZN8S3463C133v10Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C13D0Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN8S3463C12D1Ev();
extern void _ZN8S3463C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C128S3463C13__7S3463C1[] = {
  ABISELECT(2928,2072),
  ABISELECT(-448,-300),
  ABISELECT(-688,-456),
  ABISELECT(3152,2236),
  ABISELECT(-400,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3463C12D0Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A1__8S3463C128S3463C13__7S3463C1[] = {
  0,
  ABISELECT(400,268),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C128S3463C13__7S3463C1[] = {
  0,
  0,
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  ABISELECT(-3152,-2236),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C128S3463C13__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(688,456),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A3__8S3463C128S3463C13__7S3463C1[] = {
  0,
  ABISELECT(448,300),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C9__A1__8S3463C128S3463C13__7S3463C1[] = {
  0,
  ABISELECT(-2928,-2072),
  (VTBL_ENTRY)&(_ZTI8S3463C12[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C148S3463C13__7S3463C1[] = {
  ABISELECT(-608,-392),
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(1040,688),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  0,
  ABISELECT(800,532),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C148S3463C13__A2__7S3463C1[] = {
  0,
  ABISELECT(752,500),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__8S3463C148S3463C13__7S3463C1[] = {
  0,
  ABISELECT(800,532),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__8S3463C148S3463C13__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(1040,688),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__8S3463C148S3463C13__7S3463C1[] = {
  0,
  ABISELECT(752,500),
  (VTBL_ENTRY)&(_ZTI8S3463C14[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C92v4Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C9__8S3463C13__7S3463C1[] = {
  0,
  ABISELECT(-3168,-2228),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__8S3463C13__7S3463C1[] = {
  0,
  0,
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  ABISELECT(-3392,-2392),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__A1__8S3463C13__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(448,300),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A2__8S3463C13__7S3463C1[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A3__8S3463C13__7S3463C1[] = {
  0,
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev)();
extern void ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3463C12__8S3463C13__7S3463C1[] = {
  ABISELECT(2928,2072),
  ABISELECT(-448,-300),
  ABISELECT(-688,-456),
  ABISELECT(3152,2236),
  ABISELECT(-400,-268),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D1Ev,_ZThn156_N8S3463C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S3463C13D0Ev,_ZThn156_N8S3463C13D0Ev),
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
extern void _ZN8S3463C142v9Ev();
static  VTBL_ENTRY _tg__ZTV8S3463C14__8S3463C13__7S3463C1[] = {
  ABISELECT(-608,-392),
  ABISELECT(-752,-500),
  ABISELECT(-800,-532),
  ABISELECT(-1040,-688),
  ABISELECT(-592,-388),
  (VTBL_ENTRY)&(_ZTI8S3463C13[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
  (VTBL_ENTRY)&_ZN8S3463C142v9Ev,
};
extern void _ZN7S3463C92v4Ev();
extern void _ZN7S3463C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C3__A1__7S3463C1[] = {
  ABISELECT(-3552,-2504),
  ABISELECT(-3600,-2536),
  ABISELECT(-3840,-2692),
  0,
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C92v4Ev,
  (VTBL_ENTRY)&_ZN7S3463C32v5Ev,
};
extern void _ZN7S3463C52v1Ev();
extern void _ZN7S3463C42v2Ev();
extern void _ZN7S3463C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C4__7S3463C3__A1__7S3463C1[] = {
  0,
  0,
  0,
  ABISELECT(3840,2692),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v2Ev,
  (VTBL_ENTRY)&_ZN7S3463C42v3Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C5__A1__7S3463C3__A1__7S3463C1[] = {
  0,
  ABISELECT(3600,2536),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
extern void _ZN7S3463C52v1Ev();
static  VTBL_ENTRY _tg__ZTV7S3463C57S3463C8__A2__7S3463C3__A1__7S3463C1[] = {
  0,
  ABISELECT(3552,2504),
  (VTBL_ENTRY)&(_ZTI7S3463C3[0]),
  (VTBL_ENTRY)&_ZN7S3463C52v1Ev,
};
static  VTT_ENTRY vtt_S3463C1[] = {
  {&(_ZTV7S3463C1[9]),  9,98},
  {&(_tg__ZTV7S3463C2__7S3463C1[6]),  6,13},
  {&(_tg__ZTV7S3463C37S3463C2__7S3463C1[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C37S3463C2__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C37S3463C2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C37S3463C2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C4__7S3463C2__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C2__7S3463C1[3]),  3,4},
  {&(_ZTV7S3463C1[25]),  25,98},
  {&(_ZTV7S3463C1[31]),  31,98},
  {&(_ZTV7S3463C1[35]),  35,98},
  {&(_ZTV7S3463C1[52]),  52,98},
  {&(_ZTV7S3463C1[88]),  88,98},
  {&(_ZTV7S3463C1[96]),  96,98},
  {&(_ZTV7S3463C1[65]),  65,98},
  {&(_ZTV7S3463C1[70]),  70,98},
  {&(_ZTV7S3463C1[79]),  79,98},
  {&(_ZTV7S3463C1[84]),  84,98},
  {&(_tg__ZTV8S3463C13__7S3463C1[8]),  8,14},
  {&(_tg__ZTV8S3463C128S3463C13__7S3463C1[7]),  7,10},
  {&(_tg__ZTV7S3463C57S3463C8__A1__8S3463C128S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C3__8S3463C128S3463C13__7S3463C1[7]),  7,9},
  {&(_tg__ZTV7S3463C4__8S3463C128S3463C13__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A3__8S3463C128S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C9__A1__8S3463C128S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV8S3463C148S3463C13__7S3463C1[6]),  6,9},
  {&(_tg__ZTV7S3463C38S3463C148S3463C13__A2__7S3463C1[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C38S3463C148S3463C13__A2__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C38S3463C148S3463C13__A2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C38S3463C148S3463C13__A2__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C5__8S3463C148S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C4__8S3463C148S3463C13__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C57S3463C8__A2__8S3463C148S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C9__8S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C3__8S3463C13__7S3463C1[7]),  7,9},
  {&(_tg__ZTV7S3463C4__A1__8S3463C13__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A2__8S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A3__8S3463C13__7S3463C1[3]),  3,4},
  {&(_tg__ZTV8S3463C12__8S3463C13__7S3463C1[7]),  7,10},
  {&(_tg__ZTV8S3463C14__8S3463C13__7S3463C1[6]),  6,9},
  {&(_tg__ZTV7S3463C3__A1__7S3463C1[5]),  5,7},
  {&(_tg__ZTV7S3463C4__7S3463C3__A1__7S3463C1[5]),  5,8},
  {&(_tg__ZTV7S3463C5__A1__7S3463C3__A1__7S3463C1[3]),  3,4},
  {&(_tg__ZTV7S3463C57S3463C8__A2__7S3463C3__A1__7S3463C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3463C1[];
extern  VTBL_ENTRY _ZTV7S3463C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3463C1[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S3463C1D0Ev,_ZTv0_n52_N7S3463C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23200_N7S3463C1D0Ev,_ZThn16464_N7S3463C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S3463C1D1Ev,_ZTv0_n52_N7S3463C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23200_N7S3463C1D1Ev,_ZThn16464_N7S3463C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3463C1 = {  "S3463C1", // class name
  bases_S3463C1, 24,
  &(vtc_S3463C1[0]), // expected_vtbl_contents
  &(vtt_S3463C1[0]), // expected_vtt_contents
  ABISELECT(27008,19176), // object size
  NSPAIRA(_ZTI7S3463C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3463C1),98, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3463C1),45, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C3_nt  {
  char s6451c3f0;
  virtual void  v23(); // _ZN10S6451C3_nt3v23Ev
  virtual void  v24(); // _ZN10S6451C3_nt3v24Ev
  ~S6451C3_nt(); // tgen
  S6451C3_nt(); // tgen
};
//SIG(-1 S6451C3_nt) C1{ v1 v2 Fc}


void  S6451C3_nt ::v23(){vfunc_called(this, "_ZN10S6451C3_nt3v23Ev");}
void  S6451C3_nt ::v24(){vfunc_called(this, "_ZN10S6451C3_nt3v24Ev");}
S6451C3_nt ::~S6451C3_nt(){ note_dtor("S6451C3_nt", this);} // tgen
S6451C3_nt ::S6451C3_nt(){ note_ctor("S6451C3_nt", this);} // tgen

//skip512 S6451C3_nt

#else // __cplusplus

extern void _ZN10S6451C3_ntC1Ev();
extern void _ZN10S6451C3_ntD1Ev();
Name_Map name_map_S6451C3_nt[] = {
  NSPAIR(_ZN10S6451C3_ntC1Ev),
  NSPAIR(_ZN10S6451C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
VTBL_ENTRY *P__ZTI10S6451C3_nt = _ZTI10S6451C3_nt; 
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
Class_Descriptor cd_S6451C3_nt = {  "S6451C3_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6451C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C3_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  S6451C2_nt  {
  long s6451c2f0;
  ::S6451C3_nt s6451c2f1;
  long s6451c2f2[9];
  long double s6451c2f3;
  virtual void  v11(); // _ZN10S6451C2_nt3v11Ev
  virtual void  v12(); // _ZN10S6451C2_nt3v12Ev
  virtual void  v13(); // _ZN10S6451C2_nt3v13Ev
  virtual void  v14(); // _ZN10S6451C2_nt3v14Ev
  ~S6451C2_nt(); // tgen
  S6451C2_nt(); // tgen
};
//SIG(-1 S6451C2_nt) C1{ v1 v2 v3 v4 Fl FC2{ v5 v6 Fc} Fl[9] FD}


void  S6451C2_nt ::v11(){vfunc_called(this, "_ZN10S6451C2_nt3v11Ev");}
void  S6451C2_nt ::v12(){vfunc_called(this, "_ZN10S6451C2_nt3v12Ev");}
void  S6451C2_nt ::v13(){vfunc_called(this, "_ZN10S6451C2_nt3v13Ev");}
void  S6451C2_nt ::v14(){vfunc_called(this, "_ZN10S6451C2_nt3v14Ev");}
S6451C2_nt ::~S6451C2_nt(){ note_dtor("S6451C2_nt", this);} // tgen
S6451C2_nt ::S6451C2_nt(){ note_ctor("S6451C2_nt", this);} // tgen

//skip512 S6451C2_nt

#else // __cplusplus

extern void _ZN10S6451C2_ntC1Ev();
extern void _ZN10S6451C2_ntD1Ev();
Name_Map name_map_S6451C2_nt[] = {
  NSPAIR(_ZN10S6451C2_ntC1Ev),
  NSPAIR(_ZN10S6451C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S6451C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
VTBL_ENTRY *P__ZTI10S6451C2_nt = _ZTI10S6451C2_nt; 
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
Class_Descriptor cd_S6451C2_nt = {  "S6451C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI10S6451C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C2_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C4_nt  {
  void *s6451c4f0;
  long s6451c4f1;
  virtual void  v15(); // _ZN10S6451C4_nt3v15Ev
  virtual void  v16(); // _ZN10S6451C4_nt3v16Ev
  virtual void  v17(); // _ZN10S6451C4_nt3v17Ev
  virtual void  v18(); // _ZN10S6451C4_nt3v18Ev
  ~S6451C4_nt(); // tgen
  S6451C4_nt(); // tgen
};
//SIG(-1 S6451C4_nt) C1{ v1 v2 v3 v4 Fp Fl}


void  S6451C4_nt ::v15(){vfunc_called(this, "_ZN10S6451C4_nt3v15Ev");}
void  S6451C4_nt ::v16(){vfunc_called(this, "_ZN10S6451C4_nt3v16Ev");}
void  S6451C4_nt ::v17(){vfunc_called(this, "_ZN10S6451C4_nt3v17Ev");}
void  S6451C4_nt ::v18(){vfunc_called(this, "_ZN10S6451C4_nt3v18Ev");}
S6451C4_nt ::~S6451C4_nt(){ note_dtor("S6451C4_nt", this);} // tgen
S6451C4_nt ::S6451C4_nt(){ note_ctor("S6451C4_nt", this);} // tgen

//skip512 S6451C4_nt

#else // __cplusplus

extern void _ZN10S6451C4_ntC1Ev();
extern void _ZN10S6451C4_ntD1Ev();
Name_Map name_map_S6451C4_nt[] = {
  NSPAIR(_ZN10S6451C4_ntC1Ev),
  NSPAIR(_ZN10S6451C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY vtc_S6451C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
VTBL_ENTRY *P__ZTI10S6451C4_nt = _ZTI10S6451C4_nt; 
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
Class_Descriptor cd_S6451C4_nt = {  "S6451C4_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S6451C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C4_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  S6451C8_nt  {
  virtual void  v19(); // _ZN10S6451C8_nt3v19Ev
  virtual void  v20(); // _ZN10S6451C8_nt3v20Ev
  virtual void  v21(); // _ZN10S6451C8_nt3v21Ev
  virtual void  v22(); // _ZN10S6451C8_nt3v22Ev
  ~S6451C8_nt(); // tgen
  S6451C8_nt(); // tgen
};
//SIG(-1 S6451C8_nt) C1{ v1 v2 v3 v4}


void  S6451C8_nt ::v19(){vfunc_called(this, "_ZN10S6451C8_nt3v19Ev");}
void  S6451C8_nt ::v20(){vfunc_called(this, "_ZN10S6451C8_nt3v20Ev");}
void  S6451C8_nt ::v21(){vfunc_called(this, "_ZN10S6451C8_nt3v21Ev");}
void  S6451C8_nt ::v22(){vfunc_called(this, "_ZN10S6451C8_nt3v22Ev");}
S6451C8_nt ::~S6451C8_nt(){ note_dtor("S6451C8_nt", this);} // tgen
S6451C8_nt ::S6451C8_nt(){ note_ctor("S6451C8_nt", this);} // tgen

//skip512 S6451C8_nt

#else // __cplusplus

extern void _ZN10S6451C8_ntC1Ev();
extern void _ZN10S6451C8_ntD1Ev();
Name_Map name_map_S6451C8_nt[] = {
  NSPAIR(_ZN10S6451C8_ntC1Ev),
  NSPAIR(_ZN10S6451C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY vtc_S6451C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
VTBL_ENTRY *P__ZTI10S6451C8_nt = _ZTI10S6451C8_nt; 
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
Class_Descriptor cd_S6451C8_nt = {  "S6451C8_nt", // class name
  0,0,//no base classes
  &(vtc_S6451C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6451C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6451C8_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  S6451C10_nt  : S6451C4_nt {
  ::S6451C3_nt s6451c10f0;
  long s6451c10f1;
  long double s6451c10f2[9];
  virtual void  v25(); // _ZN11S6451C10_nt3v25Ev
  virtual void  v26(); // _ZN11S6451C10_nt3v26Ev
  virtual void  v27(); // _ZN11S6451C10_nt3v27Ev
  virtual void  v28(); // _ZN11S6451C10_nt3v28Ev
  virtual void  v29(); // _ZN11S6451C10_nt3v29Ev
  ~S6451C10_nt(); // tgen
  S6451C10_nt(); // tgen
};
//SIG(-1 S6451C10_nt) C1{ BC2{ v6 v7 v8 v9 Fp Fl} v1 v2 v3 v4 v5 FC3{ v10 v11 Fc} Fl FD[9]}


void  S6451C10_nt ::v25(){vfunc_called(this, "_ZN11S6451C10_nt3v25Ev");}
void  S6451C10_nt ::v26(){vfunc_called(this, "_ZN11S6451C10_nt3v26Ev");}
void  S6451C10_nt ::v27(){vfunc_called(this, "_ZN11S6451C10_nt3v27Ev");}
void  S6451C10_nt ::v28(){vfunc_called(this, "_ZN11S6451C10_nt3v28Ev");}
void  S6451C10_nt ::v29(){vfunc_called(this, "_ZN11S6451C10_nt3v29Ev");}
S6451C10_nt ::~S6451C10_nt(){ note_dtor("S6451C10_nt", this);} // tgen
S6451C10_nt ::S6451C10_nt(){ note_ctor("S6451C10_nt", this);} // tgen

//skip512 S6451C10_nt

#else // __cplusplus

extern void _ZN11S6451C10_ntC1Ev();
extern void _ZN11S6451C10_ntD1Ev();
Name_Map name_map_S6451C10_nt[] = {
  NSPAIR(_ZN11S6451C10_ntC1Ev),
  NSPAIR(_ZN11S6451C10_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
static Base_Class bases_S6451C10_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C10_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
VTBL_ENTRY *P__ZTI11S6451C10_nt = _ZTI11S6451C10_nt; 
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
Class_Descriptor cd_S6451C10_nt = {  "S6451C10_nt", // class name
  bases_S6451C10_nt, 1,
  &(vtc_S6451C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI11S6451C10_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV11S6451C10_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C9_nt  : S6451C3_nt , virtual S6451C8_nt , virtual S6451C2_nt , virtual S6451C4_nt , virtual S6451C10_nt {
  long s6451c9f0;
  virtual void  v30(); // _ZN10S6451C9_nt3v30Ev
  virtual void  v31(); // _ZN10S6451C9_nt3v31Ev
  virtual void  v32(); // _ZN10S6451C9_nt3v32Ev
  ~S6451C9_nt(); // tgen
  S6451C9_nt(); // tgen
};
//SIG(-1 S6451C9_nt) C1{ BC2{ v4 v5 Fc} VBC3{ v6 v7 v8 v9} VBC4{ v10 v11 v12 v13 Fl FC2 Fl[9] FD} VBC5{ v14 v15 v16 v17 Fp Fl} VBC6{ BC5 v18 v19 v20 v21 v22 FC2 Fl FD[9]} v1 v2 v3 Fl}


void  S6451C9_nt ::v30(){vfunc_called(this, "_ZN10S6451C9_nt3v30Ev");}
void  S6451C9_nt ::v31(){vfunc_called(this, "_ZN10S6451C9_nt3v31Ev");}
void  S6451C9_nt ::v32(){vfunc_called(this, "_ZN10S6451C9_nt3v32Ev");}
S6451C9_nt ::~S6451C9_nt(){ note_dtor("S6451C9_nt", this);} // tgen
S6451C9_nt ::S6451C9_nt(){ note_ctor("S6451C9_nt", this);} // tgen

//skip512 S6451C9_nt

#else // __cplusplus

extern void _ZN10S6451C9_ntC1Ev();
extern void _ZN10S6451C9_ntD1Ev();
Name_Map name_map_S6451C9_nt[] = {
  NSPAIR(_ZN10S6451C9_ntC1Ev),
  NSPAIR(_ZN10S6451C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
static Base_Class bases_S6451C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6451C8_nt,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C2_nt,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(160,80), //bcp->offset
    31, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(192,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(192,92), //bcp->offset
    41, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C9_nt[] = {
  ABISELECT(192,92),
  ABISELECT(160,80),
  ABISELECT(32,16),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-80),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV10S6451C9_nt[];
static  VTT_ENTRY vtt_S6451C9_nt[] = {
  {&(_ZTV10S6451C9_nt[6]),  6,61},
  {&(_ZTV10S6451C9_nt[17]),  17,61},
  {&(_ZTV10S6451C9_nt[27]),  27,61},
  {&(_ZTV10S6451C9_nt[37]),  37,61},
  {&(_ZTV10S6451C9_nt[52]),  52,61},
};
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
VTBL_ENTRY *P__ZTI10S6451C9_nt = _ZTI10S6451C9_nt; 
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
Class_Descriptor cd_S6451C9_nt = {  "S6451C9_nt", // class name
  bases_S6451C9_nt, 6,
  &(vtc_S6451C9_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C9_nt[0]), // expected_vtt_contents
  ABISELECT(384,224), // object size
  NSPAIRA(_ZTI10S6451C9_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV10S6451C9_nt),61, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S6451C9_nt),5, //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  S6451C7_nt  : virtual S6451C8_nt , S6451C4_nt , S6451C9_nt {
  short s6451c7f0:16;
  void *s6451c7f1;
  virtual  ~S6451C7_nt(); // _ZN10S6451C7_ntD2Ev
  virtual void  v33(); // _ZN10S6451C7_nt3v33Ev
  virtual void  v34(); // _ZN10S6451C7_nt3v34Ev
  virtual void  v35(); // _ZN10S6451C7_nt3v35Ev
  virtual void  v36(); // _ZN10S6451C7_nt3v36Ev
  virtual void  v37(); // _ZN10S6451C7_nt3v37Ev
  virtual void  v38(); // _ZN10S6451C7_nt3v38Ev
  S6451C7_nt(); // tgen
};
//SIG(-1 S6451C7_nt) C1{ VBC2{ v7 v8 v9 v10} BC3{ v11 v12 v13 v14 Fp Fl} BC4{ BC5{ v15 v16 Fc} VBC2 VBC6{ v17 v18 v19 v20 Fl FC5 Fl[9] FD} VBC3 VBC7{ BC3 v21 v22 v23 v24 v25 FC5 Fl FD[9]} v26 v27 v28 Fl} vd v1 v2 v3 v4 v5 v6 Fs:16 Fp}


 S6451C7_nt ::~S6451C7_nt(){ note_dtor("S6451C7_nt", this);}
void  S6451C7_nt ::v33(){vfunc_called(this, "_ZN10S6451C7_nt3v33Ev");}
void  S6451C7_nt ::v34(){vfunc_called(this, "_ZN10S6451C7_nt3v34Ev");}
void  S6451C7_nt ::v35(){vfunc_called(this, "_ZN10S6451C7_nt3v35Ev");}
void  S6451C7_nt ::v36(){vfunc_called(this, "_ZN10S6451C7_nt3v36Ev");}
void  S6451C7_nt ::v37(){vfunc_called(this, "_ZN10S6451C7_nt3v37Ev");}
void  S6451C7_nt ::v38(){vfunc_called(this, "_ZN10S6451C7_nt3v38Ev");}
S6451C7_nt ::S6451C7_nt(){ note_ctor("S6451C7_nt", this);} // tgen

//skip512 S6451C7_nt

#else // __cplusplus

extern void _ZN10S6451C7_ntC1Ev();
extern void _ZN10S6451C7_ntD2Ev();
Name_Map name_map_S6451C7_nt[] = {
  NSPAIR(_ZN10S6451C7_ntC1Ev),
  NSPAIR(_ZN10S6451C7_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
static Base_Class bases_S6451C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(64,32), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6451C3_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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(80,36), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(208,100), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(240,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(240,112), //bcp->offset
    59, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(24,12), //bcp->offset
    18, //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C7_nt[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV10S6451C7_nt[];
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt__10S6451C7_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C7_nt[] = {
  {&(_ZTV10S6451C7_nt[6]),  6,79},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt__10S6451C7_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt__10S6451C7_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt__10S6451C7_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt__10S6451C7_nt[11]),  11,20},
  {&(_ZTV10S6451C7_nt[35]),  35,79},
  {&(_ZTV10S6451C7_nt[24]),  24,79},
  {&(_ZTV10S6451C7_nt[45]),  45,79},
  {&(_ZTV10S6451C7_nt[55]),  55,79},
  {&(_ZTV10S6451C7_nt[70]),  70,79},
};
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
VTBL_ENTRY *P__ZTI10S6451C7_nt = _ZTI10S6451C7_nt; 
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
Class_Descriptor cd_S6451C7_nt = {  "S6451C7_nt", // class name
  bases_S6451C7_nt, 8,
  &(vtc_S6451C7_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C7_nt[0]), // expected_vtt_contents
  ABISELECT(432,244), // object size
  NSPAIRA(_ZTI10S6451C7_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV10S6451C7_nt),79, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S6451C7_nt),11, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C11_nt  : virtual S6451C10_nt , virtual S6451C4_nt , virtual S6451C3_nt {
  void *s6451c11f0[10];
  __tsi64 s6451c11f1:19;
  virtual  ~S6451C11_nt(); // _ZN11S6451C11_ntD2Ev
  virtual void  v39(); // _ZN11S6451C11_nt3v39Ev
  S6451C11_nt(); // tgen
};
//SIG(-1 S6451C11_nt) C1{ VBC2{ BC3{ v2 v3 v4 v5 Fp Fl} v6 v7 v8 v9 v10 FC4{ v11 v12 Fc} Fl FD[9]} VBC3 VBC4 vd v1 Fp[10] FL:19}


 S6451C11_nt ::~S6451C11_nt(){ note_dtor("S6451C11_nt", this);}
void  S6451C11_nt ::v39(){vfunc_called(this, "_ZN11S6451C11_nt3v39Ev");}
S6451C11_nt ::S6451C11_nt(){ note_ctor("S6451C11_nt", this);} // tgen

//skip512 S6451C11_nt

#else // __cplusplus

extern void _ZN11S6451C11_ntC1Ev();
extern void _ZN11S6451C11_ntD2Ev();
Name_Map name_map_S6451C11_nt[] = {
  NSPAIR(_ZN11S6451C11_ntC1Ev),
  NSPAIR(_ZN11S6451C11_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
static Base_Class bases_S6451C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(96,48), //bcp->offset
    8, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(288,180), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C3_nt,    ABISELECT(312,192), //bcp->offset
    38, //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C11_nt[] = {
  ABISELECT(312,192),
  ABISELECT(288,180),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  ABISELECT(-312,-192),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTV11S6451C11_nt[];
static  VTT_ENTRY vtt_S6451C11_nt[] = {
  {&(_ZTV11S6451C11_nt[5]),  5,44},
  {&(_ZTV11S6451C11_nt[19]),  19,44},
  {&(_ZTV11S6451C11_nt[34]),  34,44},
  {&(_ZTV11S6451C11_nt[42]),  42,44},
};
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
VTBL_ENTRY *P__ZTI11S6451C11_nt = _ZTI11S6451C11_nt; 
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
Class_Descriptor cd_S6451C11_nt = {  "S6451C11_nt", // class name
  bases_S6451C11_nt, 4,
  &(vtc_S6451C11_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C11_nt[0]), // expected_vtt_contents
  ABISELECT(336,200), // object size
  NSPAIRA(_ZTI11S6451C11_nt),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV11S6451C11_nt),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C11_nt),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  S6451C6_nt  : virtual S6451C7_nt , S6451C11_nt {
  __tsi64 s6451c6f0;
  virtual void  v40(); // _ZN10S6451C6_nt3v40Ev
  ~S6451C6_nt(); // tgen
  S6451C6_nt(); // tgen
};
//SIG(-1 S6451C6_nt) C1{ VBC2{ VBC3{ v2 v3 v4 v5} BC4{ v6 v7 v8 v9 Fp Fl} BC5{ BC6{ v10 v11 Fc} VBC3 VBC7{ v12 v13 v14 v15 Fl FC6 Fl[9] FD} VBC4 VBC8{ BC4 v16 v17 v18 v19 v20 FC6 Fl FD[9]} v21 v22 v23 Fl} vd v24 v25 v26 v27 v28 v29 Fs:16 Fp} BC9{ VBC8 VBC4 VBC6 vd v30 Fp[10] FL:19} v1 FL}


void  S6451C6_nt ::v40(){vfunc_called(this, "_ZN10S6451C6_nt3v40Ev");}
S6451C6_nt ::~S6451C6_nt(){ note_dtor("S6451C6_nt", this);} // tgen
S6451C6_nt ::S6451C6_nt(){ note_ctor("S6451C6_nt", this);} // tgen

//skip512 S6451C6_nt

#else // __cplusplus

extern void _ZN10S6451C6_ntC1Ev();
extern void _ZN10S6451C6_ntD1Ev();
Name_Map name_map_S6451C6_nt[] = {
  NSPAIR(_ZN10S6451C6_ntC1Ev),
  NSPAIR(_ZN10S6451C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
static Base_Class bases_S6451C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(168,88), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C3_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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(176,92), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(304,156), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(336,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(336,168), //bcp->offset
    87, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(128,68), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(104,56), //bcp->offset
    12, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C3_nt,    ABISELECT(528,300), //bcp->offset
    107, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6451C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
extern void _ZN10S6451C6_ntD1Ev();
extern void _ZN10S6451C6_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C6_nt[] = {
  ABISELECT(176,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(528,300),
  ABISELECT(304,156),
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  0,
  0,
  0,
  0,
  ABISELECT(232,112),
  ABISELECT(200,100),
  ABISELECT(72,36),
  ABISELECT(64,32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(208,100),
  ABISELECT(176,88),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTV10S6451C6_nt[];
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__10S6451C6_nt[] = {
  ABISELECT(528,300),
  ABISELECT(304,156),
  ABISELECT(336,168),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-168),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-156),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__10S6451C6_nt[] = {
  0,
  0,
  ABISELECT(-528,-300),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__10S6451C6_nt[] = {
  ABISELECT(232,112),
  ABISELECT(200,100),
  ABISELECT(72,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  ABISELECT(208,100),
  ABISELECT(176,88),
  ABISELECT(48,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__10S6451C6_nt[] = {
  ABISELECT(208,100),
  ABISELECT(176,88),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-200,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__10S6451C6_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C6_nt[] = {
  {&(_ZTV10S6451C6_nt[8]),  8,113},
  {&(_tg__ZTV11S6451C11_nt__10S6451C6_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__10S6451C6_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__10S6451C6_nt[4]),  4,6},
  {&(_ZTV10S6451C6_nt[34]),  34,113},
  {&(_ZTV10S6451C6_nt[63]),  63,113},
  {&(_ZTV10S6451C6_nt[52]),  52,113},
  {&(_ZTV10S6451C6_nt[73]),  73,113},
  {&(_ZTV10S6451C6_nt[83]),  83,113},
  {&(_ZTV10S6451C6_nt[98]),  98,113},
  {&(_ZTV10S6451C6_nt[111]),  111,113},
  {&(_tg__ZTV10S6451C7_nt__10S6451C6_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__10S6451C6_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__10S6451C6_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__10S6451C6_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__10S6451C6_nt[11]),  11,20},
};
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
VTBL_ENTRY *P__ZTI10S6451C6_nt = _ZTI10S6451C6_nt; 
extern  VTBL_ENTRY _ZTV10S6451C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C6_nt[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C6_nt = {  "S6451C6_nt", // class name
  bases_S6451C6_nt, 11,
  &(vtc_S6451C6_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C6_nt[0]), // expected_vtt_contents
  ABISELECT(544,308), // object size
  NSPAIRA(_ZTI10S6451C6_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV10S6451C6_nt),113, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT10S6451C6_nt),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C14_nt  : S6451C8_nt , virtual S6451C3_nt {
  virtual void  v41(); // _ZN11S6451C14_nt3v41Ev
  virtual void  v42(); // _ZN11S6451C14_nt3v42Ev
  virtual void  v43(); // _ZN11S6451C14_nt3v43Ev
  ~S6451C14_nt(); // tgen
  S6451C14_nt(); // tgen
};
//SIG(-1 S6451C14_nt) C1{ BC2{ v4 v5 v6 v7} VBC3{ v8 v9 Fc} v1 v2 v3}


void  S6451C14_nt ::v41(){vfunc_called(this, "_ZN11S6451C14_nt3v41Ev");}
void  S6451C14_nt ::v42(){vfunc_called(this, "_ZN11S6451C14_nt3v42Ev");}
void  S6451C14_nt ::v43(){vfunc_called(this, "_ZN11S6451C14_nt3v43Ev");}
S6451C14_nt ::~S6451C14_nt(){ note_dtor("S6451C14_nt", this);} // tgen
S6451C14_nt ::S6451C14_nt(){ note_ctor("S6451C14_nt", this);} // tgen

//skip512 S6451C14_nt

#else // __cplusplus

extern void _ZN11S6451C14_ntC1Ev();
extern void _ZN11S6451C14_ntD1Ev();
Name_Map name_map_S6451C14_nt[] = {
  NSPAIR(_ZN11S6451C14_ntC1Ev),
  NSPAIR(_ZN11S6451C14_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
static Base_Class bases_S6451C14_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6451C3_nt,    ABISELECT(8,4), //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},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY vtc_S6451C14_nt[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern VTBL_ENTRY _ZTV11S6451C14_nt[];
static  VTT_ENTRY vtt_S6451C14_nt[] = {
  {&(_ZTV11S6451C14_nt[3]),  3,16},
  {&(_ZTV11S6451C14_nt[14]),  14,16},
};
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
VTBL_ENTRY *P__ZTI11S6451C14_nt = _ZTI11S6451C14_nt; 
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
Class_Descriptor cd_S6451C14_nt = {  "S6451C14_nt", // class name
  bases_S6451C14_nt, 2,
  &(vtc_S6451C14_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C14_nt[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S6451C14_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV11S6451C14_nt),16, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C14_nt),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  S6451C13_nt  : S6451C14_nt , S6451C10_nt , S6451C2_nt , virtual S6451C7_nt {
  virtual void  v44(); // _ZN11S6451C13_nt3v44Ev
  virtual void  v45(); // _ZN11S6451C13_nt3v45Ev
  virtual void  v46(); // _ZN11S6451C13_nt3v46Ev
  virtual void  v47(); // _ZN11S6451C13_nt3v47Ev
  virtual void  v48(); // _ZN11S6451C13_nt3v48Ev
  virtual void  v49(); // _ZN11S6451C13_nt3v49Ev
  virtual void  v50(); // _ZN11S6451C13_nt3v50Ev
  ~S6451C13_nt(); // tgen
  S6451C13_nt(); // tgen
};
//SIG(-1 S6451C13_nt) C1{ BC2{ BC3{ v8 v9 v10 v11} VBC4{ v12 v13 Fc} v14 v15 v16} BC5{ BC6{ v17 v18 v19 v20 Fp Fl} v21 v22 v23 v24 v25 FC4 Fl FD[9]} BC7{ v26 v27 v28 v29 Fl FC4 Fl[9] FD} VBC8{ VBC3 BC6 BC9{ BC4 VBC3 VBC7 VBC6 VBC5 v30 v31 v32 Fl} vd v33 v34 v35 v36 v37 v38 Fs:16 Fp} v1 v2 v3 v4 v5 v6 v7}


void  S6451C13_nt ::v44(){vfunc_called(this, "_ZN11S6451C13_nt3v44Ev");}
void  S6451C13_nt ::v45(){vfunc_called(this, "_ZN11S6451C13_nt3v45Ev");}
void  S6451C13_nt ::v46(){vfunc_called(this, "_ZN11S6451C13_nt3v46Ev");}
void  S6451C13_nt ::v47(){vfunc_called(this, "_ZN11S6451C13_nt3v47Ev");}
void  S6451C13_nt ::v48(){vfunc_called(this, "_ZN11S6451C13_nt3v48Ev");}
void  S6451C13_nt ::v49(){vfunc_called(this, "_ZN11S6451C13_nt3v49Ev");}
void  S6451C13_nt ::v50(){vfunc_called(this, "_ZN11S6451C13_nt3v50Ev");}
S6451C13_nt ::~S6451C13_nt(){ note_dtor("S6451C13_nt", this);} // tgen
S6451C13_nt ::S6451C13_nt(){ note_ctor("S6451C13_nt", this);} // tgen

//skip512 S6451C13_nt

#else // __cplusplus

extern void _ZN11S6451C13_ntC1Ev();
extern void _ZN11S6451C13_ntD1Ev();
Name_Map name_map_S6451C13_nt[] = {
  NSPAIR(_ZN11S6451C13_ntC1Ev),
  NSPAIR(_ZN11S6451C13_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
static Base_Class bases_S6451C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(336,200), //bcp->offset
    41, //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
    2, //immediately_derived
  0, 1},
  {&cd_S6451C14_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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(16,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(16,4), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C2_nt,    ABISELECT(208,136), //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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C8_nt,    ABISELECT(416,240), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(352,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
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(376,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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(432,244), //bcp->offset
    102, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(560,308), //bcp->offset
    112, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(592,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(592,320), //bcp->offset
    122, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(376,220), //bcp->offset
    81, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(352,208), //bcp->offset
    47, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C13_nt[] = {
  ABISELECT(592,320),
  ABISELECT(560,308),
  ABISELECT(432,244),
  ABISELECT(416,240),
  ABISELECT(352,208),
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-208),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-244),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-308),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-320),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV11S6451C13_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt__11S6451C13_nt[] = {
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt__11S6451C13_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C13_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C13_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C13_nt[] = {
  {&(_ZTV11S6451C13_nt[8]),  8,142},
  {&(_tg__ZTV11S6451C14_nt__11S6451C13_nt[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt__11S6451C13_nt[4]),  4,6},
  {&(_ZTV11S6451C13_nt[45]),  45,142},
  {&(_ZTV11S6451C13_nt[69]),  69,142},
  {&(_ZTV11S6451C13_nt[98]),  98,142},
  {&(_ZTV11S6451C13_nt[87]),  87,142},
  {&(_ZTV11S6451C13_nt[108]),  108,142},
  {&(_ZTV11S6451C13_nt[118]),  118,142},
  {&(_ZTV11S6451C13_nt[133]),  133,142},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C13_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C13_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C13_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C13_nt[11]),  11,20},
};
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
VTBL_ENTRY *P__ZTI11S6451C13_nt = _ZTI11S6451C13_nt; 
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C13_nt = {  "S6451C13_nt", // class name
  bases_S6451C13_nt, 15,
  &(vtc_S6451C13_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C13_nt[0]), // expected_vtt_contents
  ABISELECT(784,452), // object size
  NSPAIRA(_ZTI11S6451C13_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S6451C13_nt),142, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C13_nt),21, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C12_nt  : S6451C10_nt , virtual S6451C13_nt , S6451C3_nt , virtual S6451C11_nt {
  ::S19763C18_nt s6451c12f0;
  char s6451c12f1:6;
  virtual void  v51(); // _ZN11S6451C12_nt3v51Ev
  ~S6451C12_nt(); // tgen
  S6451C12_nt(); // tgen
};
//SIG(-1 S6451C12_nt) C1{ BC2{ BC3{ v2 v3 v4 v5 Fp Fl} v6 v7 v8 v9 v10 FC4{ v15 v16 Fc} Fl FD[9]} VBC5{ BC6{ BC7{ v11 v12 v13 v14} VBC4 v17 v18 v19} BC2 BC8{ v20 v21 v22 v23 Fl FC4 Fl[9] FD} VBC9{ VBC7 BC3 BC10{ BC4 VBC7 VBC8 VBC3 VBC2 v24 v25 v26 Fl} vd v27 v28 v29 v30 v31 v32 Fs:16 Fp} v33 v34 v35 v36 v37 v38 v39} BC4 VBC11{ VBC2 VBC3 VBC4 vd v40 Fp[10] FL:19} v1 FC12{} Fc:6}


void  S6451C12_nt ::v51(){vfunc_called(this, "_ZN11S6451C12_nt3v51Ev");}
S6451C12_nt ::~S6451C12_nt(){ note_dtor("S6451C12_nt", this);} // tgen
S6451C12_nt ::S6451C12_nt(){ note_ctor("S6451C12_nt", this);} // tgen

//skip512 S6451C12_nt

#else // __cplusplus

extern void _ZN11S6451C12_ntC1Ev();
extern void _ZN11S6451C12_ntD1Ev();
Name_Map name_map_S6451C12_nt[] = {
  NSPAIR(_ZN11S6451C12_ntC1Ev),
  NSPAIR(_ZN11S6451C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
static Base_Class bases_S6451C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
  0, 0},
  {&cd_S6451C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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},
  {&cd_S6451C8_nt,    ABISELECT(208,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
    11, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(544,340), //bcp->offset
    95, //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
    4, //immediately_derived
  0, 1},
  {&cd_S6451C14_nt,    ABISELECT(208,140), //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
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(224,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(224,144), //bcp->offset
    78, //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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(416,276), //bcp->offset
    89, //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
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(624,380), //bcp->offset
    146, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(560,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
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(584,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
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(640,384), //bcp->offset
    156, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(768,448), //bcp->offset
    166, //bcp->virtual_function_table_offset
    6, //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
    15, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(800,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
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(800,460), //bcp->offset
    176, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(584,360), //bcp->offset
    135, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(560,348), //bcp->offset
    101, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6451C13_nt,    ABISELECT(208,140), //bcp->offset
    26, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C3_nt,    ABISELECT(192,132), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C11_nt,    ABISELECT(992,592), //bcp->offset
    196, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn992_N11S6451C12_ntD1Ev,_ZThn592_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn992_N11S6451C12_ntD0Ev,_ZThn592_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C12_nt[] = {
  ABISELECT(992,592),
  ABISELECT(800,460),
  ABISELECT(768,448),
  ABISELECT(640,384),
  ABISELECT(624,380),
  ABISELECT(560,348),
  ABISELECT(544,340),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(592,320),
  ABISELECT(560,308),
  ABISELECT(432,244),
  ABISELECT(416,240),
  ABISELECT(352,208),
  ABISELECT(336,200),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-348),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-560,-348),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-584,-360),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-640,-384),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-768,-448),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  ABISELECT(-992,-592),
  ABISELECT(-448,-252),
  ABISELECT(-224,-144),
  ABISELECT(-192,-132),
  ABISELECT(-992,-592),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV11S6451C12_nt[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(592,320),
  ABISELECT(560,308),
  ABISELECT(432,244),
  ABISELECT(416,240),
  ABISELECT(352,208),
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-208),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-432,-244),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-308),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-592,-320),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C12_nt[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt[] = {
  ABISELECT(-448,-252),
  ABISELECT(-224,-144),
  ABISELECT(-192,-132),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,132),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C12_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(224,144),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C12_nt[] = {
  0,
  0,
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
static  VTT_ENTRY vtt_S6451C12_nt[] = {
  {&(_ZTV11S6451C12_nt[10]),  10,206},
  {&(_ZTV11S6451C12_nt[62]),  62,206},
  {&(_ZTV11S6451C12_nt[99]),  99,206},
  {&(_ZTV11S6451C12_nt[80]),  80,206},
  {&(_ZTV11S6451C12_nt[91]),  91,206},
  {&(_ZTV11S6451C12_nt[123]),  123,206},
  {&(_ZTV11S6451C12_nt[152]),  152,206},
  {&(_ZTV11S6451C12_nt[141]),  141,206},
  {&(_ZTV11S6451C12_nt[162]),  162,206},
  {&(_ZTV11S6451C12_nt[172]),  172,206},
  {&(_ZTV11S6451C12_nt[187]),  187,206},
  {&(_ZTV11S6451C12_nt[203]),  203,206},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C12_nt[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C12_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C12_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C12_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C12_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C12_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C12_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C12_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
VTBL_ENTRY *P__ZTI11S6451C12_nt = _ZTI11S6451C12_nt; 
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N11S6451C12_ntD0Ev,_ZThn592_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N11S6451C12_ntD1Ev,_ZThn592_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C12_nt = {  "S6451C12_nt", // class name
  bases_S6451C12_nt, 20,
  &(vtc_S6451C12_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C12_nt[0]), // expected_vtt_contents
  ABISELECT(1088,640), // object size
  NSPAIRA(_ZTI11S6451C12_nt),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV11S6451C12_nt),206, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C12_nt),37, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C5  : virtual S6451C6_nt , virtual S6451C12_nt , S6451C8_nt {
  virtual  ~S6451C5(); // _ZN7S6451C5D2Ev
  virtual void  v52(); // _ZN7S6451C53v52Ev
  S6451C5(); // tgen
};
//SIG(-1 S6451C5) C1{ VBC2{ VBC3{ VBC4{ v2 v3 v4 v5} BC5{ v6 v7 v8 v9 Fp Fl} BC6{ BC7{ v10 v11 Fc} VBC4 VBC8{ v12 v13 v14 v15 Fl FC7 Fl[9] FD} VBC5 VBC9{ BC5 v16 v17 v18 v19 v20 FC7 Fl FD[9]} v21 v22 v23 Fl} vd v24 v25 v26 v27 v28 v29 Fs:16 Fp} BC10{ VBC9 VBC5 VBC7 vd v30 Fp[10] FL:19} v31 FL} VBC11{ BC9 VBC12{ BC13{ BC4 VBC7 v32 v33 v34} BC9 BC8 VBC3 v35 v36 v37 v38 v39 v40 v41} BC7 VBC10 v42 FC14{} Fc:6} BC4 vd v1}


 S6451C5 ::~S6451C5(){ note_dtor("S6451C5", this);}
void  S6451C5 ::v52(){vfunc_called(this, "_ZN7S6451C53v52Ev");}
S6451C5 ::S6451C5(){ note_ctor("S6451C5", this);} // tgen

static void Test_S6451C5()
{
  extern Class_Descriptor cd_S6451C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(76,176)];
    init_test(&cd_S6451C5, buf);
    S6451C5 *dp, &lv = *(dp=new (buf) S6451C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1200,700), "sizeof(S6451C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6451C5)");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C7_nt*), ABISELECT(176,92), "S6451C5");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(176,92), "S6451C5");
    /*is_ambiguous_... S6451C7_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C7_nt*), ABISELECT(112,60), "S6451C5");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(136,72), "S6451C5");
    check_base_class_offset(lv, (S6451C2_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(192,96), "S6451C5");
    /*is_ambiguous_... S6451C9_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(320,160), "S6451C5");
    /*is_ambiguous_... S6451C11_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(320,160), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*), ABISELECT(320,160), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*), ABISELECT(352,172), "S6451C5");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(352,172), "S6451C5");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(352,172), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*), ABISELECT(352,172), "S6451C5");
    check_base_class_offset(lv, (S6451C9_nt*)(S6451C7_nt*), ABISELECT(136,72), "S6451C5");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C6_nt*), ABISELECT(112,60), "S6451C5");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C13_nt*), ABISELECT(112,60), "S6451C5");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(544,304), "S6451C5");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(544,304), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*), ABISELECT(544,304), "S6451C5");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C6_nt*), ABISELECT(8,4), "S6451C5");
    check_base_class_offset(lv, (S6451C6_nt*), ABISELECT(8,4), "S6451C5");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C12_nt*), ABISELECT(560,312), "S6451C5");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C12_nt*), ABISELECT(560,312), "S6451C5");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(768,452), "S6451C5");
    check_base_class_offset(lv, (S6451C14_nt*)(S6451C13_nt*), ABISELECT(768,452), "S6451C5");
    /*is_ambiguous_... S6451C13_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C13_nt*), ABISELECT(784,456), "S6451C5");
    /*is_ambiguous_... S6451C13_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C13_nt*), ABISELECT(784,456), "S6451C5");
    /*is_ambiguous_... S6451C13_nt::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C13_nt*), ABISELECT(976,588), "S6451C5");
    check_base_class_offset(lv, (S6451C13_nt*)(S6451C12_nt*), ABISELECT(768,452), "S6451C5");
    /*is_ambiguous_... S6451C12_nt::S6451C3_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C12_nt*), ABISELECT(752,444), "S6451C5");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C12_nt*), ABISELECT(1104,652), "S6451C5");
    check_base_class_offset(lv, (S6451C12_nt*), ABISELECT(560,312), "S6451C5");
    /*is_ambiguous_... S6451C5::S6451C8_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*), 0, "S6451C5");
    test_class_info(&lv, &cd_S6451C5);
    dp->~S6451C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6451C5(Test_S6451C5, "S6451C5", ABISELECT(1200,700));

#else // __cplusplus

extern void _ZN7S6451C5C1Ev();
extern void _ZN7S6451C5D2Ev();
Name_Map name_map_S6451C5[] = {
  NSPAIR(_ZN7S6451C5C1Ev),
  NSPAIR(_ZN7S6451C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C6_nt;
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
extern  VTBL_ENTRY _ZTV10S6451C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C6_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C12_nt;
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
static Base_Class bases_S6451C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(176,92), //bcp->offset
    79, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_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
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C3_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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(192,96), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(320,160), //bcp->offset
    99, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(352,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
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(352,172), //bcp->offset
    109, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(136,72), //bcp->offset
    68, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(112,60), //bcp->offset
    34, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(544,304), //bcp->offset
    129, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6451C11_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6451C6_nt,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    ABISELECT(560,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
    20, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(560,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
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(768,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6451C14_nt,    ABISELECT(768,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(784,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
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(784,456), //bcp->offset
    226, //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(976,588), //bcp->offset
    237, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6451C13_nt,    ABISELECT(768,452), //bcp->offset
    174, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(752,444), //bcp->offset
    170, //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
    22, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(1104,652), //bcp->offset
    243, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6451C12_nt,    ABISELECT(560,312), //bcp->offset
    135, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6451C5[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN7S6451C5D1Ev();
extern void _ZN7S6451C5D0Ev();
extern void _ZN7S6451C53v52Ev();
extern void ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S6451C5D1Ev,_ZThn4_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S6451C5D0Ev,_ZThn4_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S6451C5D1Ev,_ZThn60_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S6451C5D0Ev,_ZThn60_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn560_N7S6451C5D1Ev,_ZThn312_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn560_N7S6451C5D0Ev,_ZThn312_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn768_N7S6451C5D1Ev,_ZThn452_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn768_N7S6451C5D0Ev,_ZThn452_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn1104_N7S6451C5D1Ev,_ZThn652_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn1104_N7S6451C5D0Ev,_ZThn652_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C5[] = {
  ABISELECT(1104,652),
  ABISELECT(768,452),
  ABISELECT(560,312),
  ABISELECT(544,304),
  ABISELECT(352,172),
  ABISELECT(320,160),
  ABISELECT(192,96),
  ABISELECT(176,92),
  ABISELECT(112,60),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6451C53v52Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(536,300),
  ABISELECT(312,156),
  ABISELECT(344,168),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-60),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-92),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-160),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-172),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  ABISELECT(-544,-304),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-560,-312),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-240,-152),
  ABISELECT(-368,-216),
  ABISELECT(-384,-220),
  ABISELECT(-448,-252),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev),
  ABISELECT(-752,-444),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-768,-452),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-448,-292),
  ABISELECT(-576,-356),
  ABISELECT(-592,-360),
  ABISELECT(-656,-392),
  ABISELECT(-224,-148),
  ABISELECT(-768,-452),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-976,-588),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  ABISELECT(-1104,-652),
  ABISELECT(-560,-348),
  ABISELECT(-784,-492),
  ABISELECT(-752,-480),
  ABISELECT(-1104,-652),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV7S6451C5[];
extern void _ZN10S6451C6_ntD1Ev();
extern void _ZN10S6451C6_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C6_nt__7S6451C5[] = {
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(536,300),
  ABISELECT(312,156),
  ABISELECT(344,168),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  ABISELECT(536,300),
  ABISELECT(312,156),
  ABISELECT(344,168),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-168),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(-536,-300),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-344,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(-536,-300),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__7S6451C5[] = {
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-216,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-240,-112),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__7S6451C5[] = {
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-240,-152),
  ABISELECT(-368,-216),
  ABISELECT(-384,-220),
  ABISELECT(-448,-252),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-448,-292),
  ABISELECT(-576,-356),
  ABISELECT(-592,-360),
  ABISELECT(-656,-392),
  ABISELECT(-224,-148),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(448,252),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(448,252),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(424,240),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C5[] = {
  0,
  ABISELECT(-544,-340),
  ABISELECT(-560,-348),
  ABISELECT(-784,-492),
  ABISELECT(-752,-480),
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__7S6451C5[] = {
  ABISELECT(-416,-280),
  ABISELECT(-448,-292),
  ABISELECT(-576,-356),
  ABISELECT(-592,-360),
  ABISELECT(-656,-392),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C5[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C5[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(656,392),
  0,
  0,
  0,
  0,
  ABISELECT(240,112),
  ABISELECT(208,100),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(656,392),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(592,360),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C5[] = {
  ABISELECT(216,100),
  ABISELECT(184,88),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(632,380),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(576,356),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,280),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A1__7S6451C5[] = {
  ABISELECT(-560,-348),
  ABISELECT(-784,-492),
  ABISELECT(-752,-480),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,480),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(784,492),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C5[] = {
  0,
  0,
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
static  VTT_ENTRY vtt_S6451C5[] = {
  {&(_ZTV7S6451C5[12]),  12,253},
  {&(_ZTV7S6451C5[30]),  30,253},
  {&(_ZTV7S6451C5[56]),  56,253},
  {&(_ZTV7S6451C5[85]),  85,253},
  {&(_ZTV7S6451C5[74]),  74,253},
  {&(_ZTV7S6451C5[95]),  95,253},
  {&(_ZTV7S6451C5[105]),  105,253},
  {&(_ZTV7S6451C5[120]),  120,253},
  {&(_ZTV7S6451C5[133]),  133,253},
  {&(_ZTV7S6451C5[158]),  158,253},
  {&(_ZTV7S6451C5[210]),  210,253},
  {&(_ZTV7S6451C5[228]),  228,253},
  {&(_ZTV7S6451C5[239]),  239,253},
  {&(_ZTV7S6451C5[172]),  172,253},
  {&(_ZTV7S6451C5[250]),  250,253},
  {&(_tg__ZTV10S6451C6_nt__7S6451C5[8]),  8,12},
  {&(_tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C5[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C5[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__7S6451C5[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV11S6451C12_nt__7S6451C5[10]),  10,22},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C5[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C5[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C5[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C5[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C5[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__7S6451C5[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C5[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C5[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C5[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C5[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C5[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C5[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__A1__7S6451C5[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C5[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C5[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6451C5[];
extern  VTBL_ENTRY _ZTV7S6451C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6451C5[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S6451C5D0Ev,_ZThn652_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S6451C5D1Ev,_ZThn652_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S6451C5D0Ev,_ZThn452_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S6451C5D1Ev,_ZThn452_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S6451C5D0Ev,_ZThn312_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S6451C5D1Ev,_ZThn312_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6451C5D0Ev,_ZThn60_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6451C5D1Ev,_ZThn60_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6451C5D0Ev,_ZThn4_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6451C5D1Ev,_ZThn4_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C5 = {  "S6451C5", // class name
  bases_S6451C5, 24,
  &(vtc_S6451C5[0]), // expected_vtbl_contents
  &(vtt_S6451C5[0]), // expected_vtt_contents
  ABISELECT(1200,700), // object size
  NSPAIRA(_ZTI7S6451C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6451C5),253, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6451C5),64, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C17_nt  : virtual S6451C8_nt , S6451C2_nt , virtual S6451C4_nt , S6451C7_nt , S6451C10_nt {
  virtual void  v53(); // _ZN11S6451C17_nt3v53Ev
  virtual void  v54(); // _ZN11S6451C17_nt3v54Ev
  ~S6451C17_nt(); // tgen
  S6451C17_nt(); // tgen
};
//SIG(-1 S6451C17_nt) C1{ VBC2{ v3 v4 v5 v6} BC3{ v7 v8 v9 v10 Fl FC4{ v15 v16 Fc} Fl[9] FD} VBC5{ v11 v12 v13 v14 Fp Fl} BC6{ VBC2 BC5 BC7{ BC4 VBC2 VBC3 VBC5 VBC8{ BC5 v17 v18 v19 v20 v21 FC4 Fl FD[9]} v22 v23 v24 Fl} vd v25 v26 v27 v28 v29 v30 Fs:16 Fp} BC8 v1 v2}


void  S6451C17_nt ::v53(){vfunc_called(this, "_ZN11S6451C17_nt3v53Ev");}
void  S6451C17_nt ::v54(){vfunc_called(this, "_ZN11S6451C17_nt3v54Ev");}
S6451C17_nt ::~S6451C17_nt(){ note_dtor("S6451C17_nt", this);} // tgen
S6451C17_nt ::S6451C17_nt(){ note_ctor("S6451C17_nt", this);} // tgen

//skip512 S6451C17_nt

#else // __cplusplus

extern void _ZN11S6451C17_ntC1Ev();
extern void _ZN11S6451C17_ntD1Ev();
Name_Map name_map_S6451C17_nt[] = {
  NSPAIR(_ZN11S6451C17_ntC1Ev),
  NSPAIR(_ZN11S6451C17_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
static Base_Class bases_S6451C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C8_nt,    ABISELECT(384,228), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6451C4_nt,    ABISELECT(392,232), //bcp->offset
    64, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C4_nt,    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
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(416,244), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(544,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(544,308), //bcp->offset
    84, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(152,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(128,64), //bcp->offset
    14, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(192,96), //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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C17_ntD1Ev();
extern void _ZN11S6451C17_ntD0Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY vtc_S6451C17_nt[] = {
  ABISELECT(544,308),
  ABISELECT(416,244),
  ABISELECT(392,232),
  ABISELECT(384,228),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD0Ev,
  ABISELECT(416,244),
  ABISELECT(264,168),
  ABISELECT(288,180),
  ABISELECT(256,164),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(392,232),
  ABISELECT(240,156),
  ABISELECT(264,168),
  ABISELECT(232,152),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-544,-308),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern VTBL_ENTRY _ZTV11S6451C17_nt[];
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C17_nt[] = {
  ABISELECT(416,244),
  ABISELECT(264,168),
  ABISELECT(288,180),
  ABISELECT(256,164),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  ABISELECT(392,232),
  ABISELECT(240,156),
  ABISELECT(264,168),
  ABISELECT(232,152),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C17_nt[] = {
  ABISELECT(392,232),
  ABISELECT(240,156),
  ABISELECT(264,168),
  ABISELECT(232,152),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C17_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
static  VTT_ENTRY vtt_S6451C17_nt[] = {
  {&(_ZTV11S6451C17_nt[6]),  6,104},
  {&(_tg__ZTV10S6451C7_nt__11S6451C17_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__11S6451C17_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__11S6451C17_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__11S6451C17_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__11S6451C17_nt[11]),  11,20},
  {&(_ZTV11S6451C17_nt[60]),  60,104},
  {&(_ZTV11S6451C17_nt[70]),  70,104},
  {&(_ZTV11S6451C17_nt[20]),  20,104},
  {&(_ZTV11S6451C17_nt[38]),  38,104},
  {&(_ZTV11S6451C17_nt[80]),  80,104},
  {&(_ZTV11S6451C17_nt[95]),  95,104},
};
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
VTBL_ENTRY *P__ZTI11S6451C17_nt = _ZTI11S6451C17_nt; 
extern  VTBL_ENTRY _ZTV11S6451C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C17_nt[];
Class_Descriptor cd_S6451C17_nt = {  "S6451C17_nt", // class name
  bases_S6451C17_nt, 12,
  &(vtc_S6451C17_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C17_nt[0]), // expected_vtt_contents
  ABISELECT(736,440), // object size
  NSPAIRA(_ZTI11S6451C17_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S6451C17_nt),104, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C17_nt),18, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C16_nt  : virtual S6451C4_nt , S6451C17_nt , virtual S6451C12_nt , S6451C2_nt , S6451C11_nt {
  ::S6451C7_nt s6451c16f0;
  virtual  ~S6451C16_nt(); // _ZN11S6451C16_ntD2Ev
  virtual void  v55(); // _ZN11S6451C16_nt3v55Ev
  virtual void  v56(); // _ZN11S6451C16_nt3v56Ev
  virtual void  v57(); // _ZN11S6451C16_nt3v57Ev
  virtual void  v58(); // _ZN11S6451C16_nt3v58Ev
  S6451C16_nt(); // tgen
};
//SIG(-1 S6451C16_nt) C1{ VBC2{ v5 v6 v7 v8 Fp Fl} BC3{ VBC4{ v9 v10 v11 v12} BC5{ v13 v14 v15 v16 Fl FC6{ v17 v18 Fc} Fl[9] FD} VBC2 BC7{ VBC4 BC2 BC8{ BC6 VBC4 VBC5 VBC2 VBC9{ BC2 v19 v20 v21 v22 v23 FC6 Fl FD[9]} v24 v25 v26 Fl} vd v27 v28 v29 v30 v31 v32 Fs:16 Fp} BC9 v33 v34} VBC10{ BC9 VBC11{ BC12{ BC4 VBC6 v35 v36 v37} BC9 BC5 VBC7 v38 v39 v40 v41 v42 v43 v44} BC6 VBC13{ VBC9 VBC2 VBC6 vd v45 Fp[10] FL:19} v46 FC14{} Fc:6} BC5 BC13 vd v1 v2 v3 v4 FC7}


 S6451C16_nt ::~S6451C16_nt(){ note_dtor("S6451C16_nt", this);}
void  S6451C16_nt ::v55(){vfunc_called(this, "_ZN11S6451C16_nt3v55Ev");}
void  S6451C16_nt ::v56(){vfunc_called(this, "_ZN11S6451C16_nt3v56Ev");}
void  S6451C16_nt ::v57(){vfunc_called(this, "_ZN11S6451C16_nt3v57Ev");}
void  S6451C16_nt ::v58(){vfunc_called(this, "_ZN11S6451C16_nt3v58Ev");}
S6451C16_nt ::S6451C16_nt(){ note_ctor("S6451C16_nt", this);} // tgen

//skip512 S6451C16_nt

#else // __cplusplus

extern void _ZN11S6451C16_ntC1Ev();
extern void _ZN11S6451C16_ntD2Ev();
Name_Map name_map_S6451C16_nt[] = {
  NSPAIR(_ZN11S6451C16_ntC1Ev),
  NSPAIR(_ZN11S6451C16_ntD2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C17_nt;
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
extern  VTBL_ENTRY _ZTV11S6451C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C17_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C12_nt;
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
static Base_Class bases_S6451C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C4_nt,    ABISELECT(1040,584), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    ABISELECT(1064,596), //bcp->offset
    87, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S6451C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    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
    23, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(152,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(1072,600), //bcp->offset
    97, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(1200,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1200,664), //bcp->offset
    107, //bcp->virtual_function_table_offset
    11, //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
    8, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(152,76), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(128,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(192,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(192,96), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C17_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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(1392,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
    18, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1392,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
    19, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(1600,936), //bcp->offset
    -1, //bcp->virtual_function_table_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
    17, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(1936,1136), //bcp->offset
    235, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6451C14_nt,    ABISELECT(1600,936), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1616,940), //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1616,940), //bcp->offset
    218, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(1808,1072), //bcp->offset
    229, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1952,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
    7, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(1976,1156), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S6451C9_nt,    ABISELECT(1976,1156), //bcp->offset
    275, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(1952,1144), //bcp->offset
    241, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6451C13_nt,    ABISELECT(1600,936), //bcp->offset
    166, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(1584,928), //bcp->offset
    162, //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
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(2016,1176), //bcp->offset
    286, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S6451C12_nt,    ABISELECT(1392,796), //bcp->offset
    127, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C2_nt,    ABISELECT(384,228), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C11_nt,    ABISELECT(512,292), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S6451C16_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C16_ntD1Ev();
extern void _ZN11S6451C16_ntD0Ev();
extern void _ZN11S6451C16_nt3v55Ev();
extern void _ZN11S6451C16_nt3v56Ev();
extern void _ZN11S6451C16_nt3v57Ev();
extern void _ZN11S6451C16_nt3v58Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn1392_N11S6451C16_ntD1Ev,_ZThn796_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn1392_N11S6451C16_ntD0Ev,_ZThn796_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn1600_N11S6451C16_ntD1Ev,_ZThn936_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn1600_N11S6451C16_ntD0Ev,_ZThn936_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn1952_N11S6451C16_ntD1Ev,_ZThn1144_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn1952_N11S6451C16_ntD0Ev,_ZThn1144_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn2016_N11S6451C16_ntD1Ev,_ZThn1176_N11S6451C16_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev)();
extern void ABISELECT(_ZThn2016_N11S6451C16_ntD0Ev,_ZThn1176_N11S6451C16_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C16_nt[] = {
  ABISELECT(2016,1176),
  ABISELECT(1952,1144),
  ABISELECT(1936,1136),
  ABISELECT(1600,936),
  ABISELECT(1392,796),
  ABISELECT(1200,664),
  ABISELECT(1072,600),
  ABISELECT(1040,584),
  ABISELECT(1064,596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v55Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v58Ev,
  ABISELECT(1072,600),
  ABISELECT(912,520),
  ABISELECT(944,536),
  ABISELECT(936,532),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  ABISELECT(-192,-96),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  ABISELECT(1424,844),
  ABISELECT(528,292),
  ABISELECT(688,372),
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1040,-584),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1064,-596),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1072,-600),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-664),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-1392,-796),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(624,380),
  ABISELECT(-192,-132),
  ABISELECT(-352,-212),
  ABISELECT(-320,-196),
  ABISELECT(-328,-200),
  ABISELECT(560,348),
  ABISELECT(544,340),
  ABISELECT(208,140),
  ABISELECT(-1392,-796),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev),
  ABISELECT(-1584,-928),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-1600,-936),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-272),
  ABISELECT(-560,-352),
  ABISELECT(-528,-336),
  ABISELECT(-536,-340),
  ABISELECT(352,208),
  ABISELECT(336,200),
  ABISELECT(-1600,-936),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev),
  ABISELECT(-1616,-940),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-1808,-1072),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  ABISELECT(-1936,-1136),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1952,-1144),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  ABISELECT(-1952,-1144),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-1976,-1156),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  ABISELECT(-2016,-1176),
  ABISELECT(-80,-40),
  ABISELECT(-976,-592),
  ABISELECT(-816,-512),
  ABISELECT(-2016,-1176),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV11S6451C16_nt[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C17_ntD1Ev();
extern void _ZN11S6451C17_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1200,664),
  ABISELECT(1072,600),
  ABISELECT(1040,584),
  ABISELECT(1064,596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD0Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1072,600),
  ABISELECT(912,520),
  ABISELECT(944,536),
  ABISELECT(936,532),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-912,-520),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-920,-524),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-888,-508),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1048,-588),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-936,-532),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-912,-520),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1072,-600),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1064,-596),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1040,-584),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1072,600),
  ABISELECT(912,520),
  ABISELECT(944,536),
  ABISELECT(936,532),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[] = {
  ABISELECT(1048,588),
  ABISELECT(888,508),
  ABISELECT(920,524),
  ABISELECT(912,520),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1072,-600),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C17_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-1200,-664),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A__11S6451C16_nt[] = {
  ABISELECT(1424,844),
  ABISELECT(528,292),
  ABISELECT(688,372),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__A__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-372),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__A__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-1424,-844),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(624,380),
  ABISELECT(-192,-132),
  ABISELECT(-352,-212),
  ABISELECT(-320,-196),
  ABISELECT(-328,-200),
  ABISELECT(560,348),
  ABISELECT(544,340),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-272),
  ABISELECT(-560,-352),
  ABISELECT(-528,-336),
  ABISELECT(-536,-340),
  ABISELECT(352,208),
  ABISELECT(336,200),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-560,-348),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  ABISELECT(-560,-348),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(328,200),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-584,-360),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(320,196),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(352,212),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(192,132),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn624_N11S6451C12_ntD1Ev,_ZThn380_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn624_N11S6451C12_ntD0Ev,_ZThn380_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt__11S6451C16_nt[] = {
  0,
  ABISELECT(-624,-380),
  ABISELECT(-80,-40),
  ABISELECT(-976,-592),
  ABISELECT(-816,-512),
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(-400,-272),
  ABISELECT(-560,-352),
  ABISELECT(-528,-336),
  ABISELECT(-536,-340),
  ABISELECT(352,208),
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-208),
  0,
  0,
  0,
  0,
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(536,340),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(528,336),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(560,352),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(400,272),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__A1__11S6451C16_nt[] = {
  ABISELECT(-752,-480),
  ABISELECT(-912,-560),
  ABISELECT(-880,-544),
  ABISELECT(-888,-548),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(912,560),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(904,556),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(936,572),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(776,492),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(888,548),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  ABISELECT(-776,-492),
  ABISELECT(-936,-572),
  ABISELECT(-904,-556),
  ABISELECT(-912,-560),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(880,544),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(912,560),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__A1__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,480),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C16_nt[] = {
  ABISELECT(-80,-40),
  ABISELECT(-976,-592),
  ABISELECT(-816,-512),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(816,512),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C16_nt[] = {
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C16_nt[] = {
  0,
  0,
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
static  VTT_ENTRY vtt_S6451C16_nt[] = {
  {&(_ZTV11S6451C16_nt[11]),  11,296},
  {&(_tg__ZTV11S6451C17_nt__11S6451C16_nt[6]),  6,14},
  {&(_tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C17_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__11S6451C17_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__A__11S6451C16_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__A__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__A__11S6451C16_nt[4]),  4,6},
  {&(_ZTV11S6451C16_nt[83]),  83,296},
  {&(_ZTV11S6451C16_nt[93]),  93,296},
  {&(_ZTV11S6451C16_nt[29]),  29,296},
  {&(_ZTV11S6451C16_nt[47]),  47,296},
  {&(_ZTV11S6451C16_nt[103]),  103,296},
  {&(_ZTV11S6451C16_nt[118]),  118,296},
  {&(_ZTV11S6451C16_nt[150]),  150,296},
  {&(_ZTV11S6451C16_nt[202]),  202,296},
  {&(_ZTV11S6451C16_nt[239]),  239,296},
  {&(_ZTV11S6451C16_nt[220]),  220,296},
  {&(_ZTV11S6451C16_nt[231]),  231,296},
  {&(_ZTV11S6451C16_nt[263]),  263,296},
  {&(_ZTV11S6451C16_nt[281]),  281,296},
  {&(_ZTV11S6451C16_nt[164]),  164,296},
  {&(_ZTV11S6451C16_nt[293]),  293,296},
  {&(_ZTV11S6451C16_nt[74]),  74,296},
  {&(_tg__ZTV11S6451C12_nt__11S6451C16_nt[10]),  10,22},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__11S6451C12_nt__11S6451C16_nt[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__11S6451C16_nt[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__11S6451C16_nt[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt__11S6451C16_nt[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__11S6451C16_nt[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__11S6451C16_nt[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__11S6451C16_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__11S6451C16_nt[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C7_nt__A1__11S6451C16_nt[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__A1__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__A1__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C16_nt[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__11S6451C16_nt[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__11S6451C16_nt[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__11S6451C16_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI11S6451C16_nt[];
VTBL_ENTRY *P__ZTI11S6451C16_nt = _ZTI11S6451C16_nt; 
extern  VTBL_ENTRY _ZTV11S6451C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C16_nt[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD0Ev,_ZThn208_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N11S6451C13_ntD1Ev,_ZThn208_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N11S6451C12_ntD0Ev,_ZThn380_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N11S6451C12_ntD1Ev,_ZThn380_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD0Ev,_ZThn348_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N11S6451C12_ntD1Ev,_ZThn348_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N11S6451C16_ntD0Ev,_ZThn1176_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2016_N11S6451C16_ntD1Ev,_ZThn1176_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N11S6451C16_ntD0Ev,_ZThn1144_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1952_N11S6451C16_ntD1Ev,_ZThn1144_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N11S6451C16_ntD0Ev,_ZThn936_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N11S6451C16_ntD1Ev,_ZThn936_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N11S6451C16_ntD0Ev,_ZThn796_N11S6451C16_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N11S6451C16_ntD1Ev,_ZThn796_N11S6451C16_ntD1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C16_nt = {  "S6451C16_nt", // class name
  bases_S6451C16_nt, 31,
  &(vtc_S6451C16_nt[0]), // expected_vtbl_contents
  &(vtt_S6451C16_nt[0]), // expected_vtt_contents
  ABISELECT(2112,1224), // object size
  NSPAIRA(_ZTI11S6451C16_nt),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV11S6451C16_nt),296, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S6451C16_nt),76, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6451C1  : S6451C2_nt , virtual S6451C4_nt , S6451C5 , virtual S6451C16_nt , S6451C13_nt {
  int s6451c1f0;
  short s6451c1f1;
  int s6451c1f2[2];
  virtual  ~S6451C1(); // _ZN7S6451C1D2Ev
  virtual void  v1(); // _ZN7S6451C12v1Ev
  virtual void  v2(); // _ZN7S6451C12v2Ev
  virtual void  v3(); // _ZN7S6451C12v3Ev
  virtual void  v4(); // _ZN7S6451C12v4Ev
  virtual void  v5(); // _ZN7S6451C12v5Ev
  virtual void  v6(); // _ZN7S6451C12v6Ev
  virtual void  v7(); // _ZN7S6451C12v7Ev
  virtual void  v8(); // _ZN7S6451C12v8Ev
  virtual void  v9(); // _ZN7S6451C12v9Ev
  virtual void  v10(); // _ZN7S6451C13v10Ev
  S6451C1(); // tgen
};
//SIG(1 S6451C1) C1{ BC2{ v11 v12 v13 v14 Fl FC3{ v23 v24 Fc} Fl[9] FD} VBC4{ v15 v16 v17 v18 Fp Fl} BC5{ VBC6{ VBC7{ VBC8{ v19 v20 v21 v22} BC4 BC9{ BC3 VBC8 VBC2 VBC4 VBC10{ BC4 v25 v26 v27 v28 v29 FC3 Fl FD[9]} v30 v31 v32 Fl} vd v33 v34 v35 v36 v37 v38 Fs:16 Fp} BC11{ VBC10 VBC4 VBC3 vd v39 Fp[10] FL:19} v40 FL} VBC12{ BC10 VBC13{ BC14{ BC8 VBC3 v41 v42 v43} BC10 BC2 VBC7 v44 v45 v46 v47 v48 v49 v50} BC3 VBC11 v51 FC15{} Fc:6} BC8 vd v52} VBC16{ VBC4 BC17{ VBC8 BC2 VBC4 BC7 BC10 v53 v54} VBC12 BC2 BC11 vd v55 v56 v57 v58 FC7} BC13 vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi Fs Fi[2]}


 S6451C1 ::~S6451C1(){ note_dtor("S6451C1", this);}
void  S6451C1 ::v1(){vfunc_called(this, "_ZN7S6451C12v1Ev");}
void  S6451C1 ::v2(){vfunc_called(this, "_ZN7S6451C12v2Ev");}
void  S6451C1 ::v3(){vfunc_called(this, "_ZN7S6451C12v3Ev");}
void  S6451C1 ::v4(){vfunc_called(this, "_ZN7S6451C12v4Ev");}
void  S6451C1 ::v5(){vfunc_called(this, "_ZN7S6451C12v5Ev");}
void  S6451C1 ::v6(){vfunc_called(this, "_ZN7S6451C12v6Ev");}
void  S6451C1 ::v7(){vfunc_called(this, "_ZN7S6451C12v7Ev");}
void  S6451C1 ::v8(){vfunc_called(this, "_ZN7S6451C12v8Ev");}
void  S6451C1 ::v9(){vfunc_called(this, "_ZN7S6451C12v9Ev");}
void  S6451C1 ::v10(){vfunc_called(this, "_ZN7S6451C13v10Ev");}
S6451C1 ::S6451C1(){ note_ctor("S6451C1", this);} // tgen

static void Test_S6451C1()
{
  extern Class_Descriptor cd_S6451C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(171,392)];
    init_test(&cd_S6451C1, buf);
    S6451C1 *dp, &lv = *(dp=new (buf) S6451C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2720,1564), "sizeof(S6451C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6451C1)");
    /*is_ambiguous_... S6451C1::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*), 0, "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C11_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C9_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C11_nt*)(S6451C16_nt*), ABISELECT(496,284), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C7_nt*), ABISELECT(688,384), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(688,384), "S6451C1");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(688,384), "S6451C1");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(688,384), "S6451C1");
    check_base_class_offset(lv, (S6451C8_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(688,384), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C7_nt*), ABISELECT(624,352), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(648,364), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(704,388), "S6451C1");
    check_base_class_offset(lv, (S6451C2_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(704,388), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C9_nt*)(S6451C7_nt*), ABISELECT(832,452), "S6451C1");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*), ABISELECT(832,452), "S6451C1");
    check_base_class_offset(lv, (S6451C10_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C11_nt*)(S6451C16_nt*), ABISELECT(832,452), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C7_nt */ AMB_check_base_class_offset(lv, (S6451C9_nt*)(S6451C7_nt*), ABISELECT(648,364), "S6451C1");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C6_nt*), ABISELECT(624,352), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C7_nt*)(S6451C13_nt*), ABISELECT(624,352), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C7_nt*)(S6451C13_nt*), ABISELECT(624,352), "S6451C1");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*)(S6451C6_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C11_nt*)(S6451C16_nt*), ABISELECT(1024,584), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(1024,584), "S6451C1");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C6_nt*), ABISELECT(520,296), "S6451C1");
    check_base_class_offset(lv, (S6451C6_nt*)(S6451C5*), ABISELECT(520,296), "S6451C1");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C12_nt*), ABISELECT(1040,592), "S6451C1");
    /*is_ambiguous_... S6451C12_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C12_nt*), ABISELECT(1040,592), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(1248,732), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C14_nt*)(S6451C13_nt*), ABISELECT(1248,732), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C13_nt*), ABISELECT(1264,736), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C13_nt*), ABISELECT(1264,736), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C13_nt*), ABISELECT(1456,868), "S6451C1");
    check_base_class_offset(lv, (S6451C13_nt*)(S6451C12_nt*), ABISELECT(1248,732), "S6451C1");
    /*is_ambiguous_... S6451C12_nt::S6451C3_nt */ AMB_check_base_class_offset(lv, (S6451C3_nt*)(S6451C12_nt*), ABISELECT(1232,724), "S6451C1");
    check_base_class_offset(lv, (S6451C11_nt*)(S6451C12_nt*), ABISELECT(1584,932), "S6451C1");
    check_base_class_offset(lv, (S6451C12_nt*)(S6451C5*), ABISELECT(1040,592), "S6451C1");
    check_base_class_offset(lv, (S6451C12_nt*)(S6451C16_nt*), ABISELECT(1040,592), "S6451C1");
    /*is_ambiguous_... S6451C5::S6451C8_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C5*), ABISELECT(128,64), "S6451C1");
    check_base_class_offset(lv, (S6451C5*), ABISELECT(128,64), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1680,980), "S6451C1");
    /*is_ambiguous_... S6451C7_nt::S6451C4_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1808,1044), "S6451C1");
    check_base_class_offset(lv, (S6451C3_nt*)(S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1832,1056), "S6451C1");
    check_base_class_offset(lv, (S6451C9_nt*)(S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1832,1056), "S6451C1");
    check_base_class_offset(lv, (S6451C7_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1808,1044), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1872,1076), "S6451C1");
    /*is_ambiguous_... S6451C17_nt::S6451C10_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C17_nt*)(S6451C16_nt*), ABISELECT(1872,1076), "S6451C1");
    check_base_class_offset(lv, (S6451C17_nt*)(S6451C16_nt*), ABISELECT(1680,980), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C2_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C16_nt*), ABISELECT(2064,1208), "S6451C1");
    /*is_ambiguous_... S6451C16_nt::S6451C11_nt */ AMB_check_base_class_offset(lv, (S6451C11_nt*)(S6451C16_nt*), ABISELECT(2192,1272), "S6451C1");
    check_base_class_offset(lv, (S6451C16_nt*), ABISELECT(1680,980), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C8_nt*)(S6451C14_nt*)(S6451C13_nt*), ABISELECT(144,68), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C14_nt*)(S6451C13_nt*), ABISELECT(144,68), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C4_nt*)(S6451C10_nt*)(S6451C13_nt*), ABISELECT(160,72), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C10_nt*)(S6451C13_nt*), ABISELECT(160,72), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C2_nt*)(S6451C13_nt*), ABISELECT(352,204), "S6451C1");
    /*is_ambiguous_... S6451C1::S6451C13_nt */ AMB_check_base_class_offset(lv, (S6451C13_nt*), ABISELECT(144,68), "S6451C1");
    check_field_offset(lv, s6451c1f0, ABISELECT(480,268), "S6451C1.s6451c1f0");
    check_field_offset(lv, s6451c1f1, ABISELECT(484,272), "S6451C1.s6451c1f1");
    check_field_offset(lv, s6451c1f2, ABISELECT(488,276), "S6451C1.s6451c1f2");
    test_class_info(&lv, &cd_S6451C1);
    dp->~S6451C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6451C1(Test_S6451C1, "S6451C1", ABISELECT(2720,1564));

#else // __cplusplus

extern void _ZN7S6451C1C1Ev();
extern void _ZN7S6451C1D2Ev();
Name_Map name_map_S6451C1[] = {
  NSPAIR(_ZN7S6451C1C1Ev),
  NSPAIR(_ZN7S6451C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C6_nt;
extern VTBL_ENTRY _ZTI10S6451C6_nt[];
extern  VTBL_ENTRY _ZTV10S6451C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C6_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C12_nt;
extern VTBL_ENTRY _ZTI11S6451C12_nt[];
extern  VTBL_ENTRY _ZTV11S6451C12_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C12_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C5;
extern VTBL_ENTRY _ZTI7S6451C5[];
extern  VTBL_ENTRY _ZTV7S6451C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6451C5[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C3_nt;
extern VTBL_ENTRY _ZTI10S6451C3_nt[];
extern  VTBL_ENTRY _ZTV10S6451C3_nt[];
extern Class_Descriptor cd_S6451C9_nt;
extern VTBL_ENTRY _ZTI10S6451C9_nt[];
extern  VTBL_ENTRY _ZTV10S6451C9_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C9_nt[];
extern Class_Descriptor cd_S6451C7_nt;
extern VTBL_ENTRY _ZTI10S6451C7_nt[];
extern  VTBL_ENTRY _ZTV10S6451C7_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT10S6451C7_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C17_nt;
extern VTBL_ENTRY _ZTI11S6451C17_nt[];
extern  VTBL_ENTRY _ZTV11S6451C17_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C17_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C11_nt;
extern VTBL_ENTRY _ZTI11S6451C11_nt[];
extern  VTBL_ENTRY _ZTV11S6451C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C11_nt[];
extern Class_Descriptor cd_S6451C16_nt;
extern VTBL_ENTRY _ZTI11S6451C16_nt[];
extern  VTBL_ENTRY _ZTV11S6451C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C16_nt[];
extern Class_Descriptor cd_S6451C8_nt;
extern VTBL_ENTRY _ZTI10S6451C8_nt[];
extern  VTBL_ENTRY _ZTV10S6451C8_nt[];
extern Class_Descriptor cd_S6451C14_nt;
extern VTBL_ENTRY _ZTI11S6451C14_nt[];
extern  VTBL_ENTRY _ZTV11S6451C14_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C14_nt[];
extern Class_Descriptor cd_S6451C4_nt;
extern VTBL_ENTRY _ZTI10S6451C4_nt[];
extern  VTBL_ENTRY _ZTV10S6451C4_nt[];
extern Class_Descriptor cd_S6451C10_nt;
extern VTBL_ENTRY _ZTI11S6451C10_nt[];
extern  VTBL_ENTRY _ZTV11S6451C10_nt[];
extern Class_Descriptor cd_S6451C2_nt;
extern VTBL_ENTRY _ZTI10S6451C2_nt[];
extern  VTBL_ENTRY _ZTV10S6451C2_nt[];
extern Class_Descriptor cd_S6451C13_nt;
extern VTBL_ENTRY _ZTI11S6451C13_nt[];
extern  VTBL_ENTRY _ZTV11S6451C13_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S6451C13_nt[];
static Base_Class bases_S6451C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6451C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C4_nt,    ABISELECT(496,284), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    ABISELECT(688,384), //bcp->offset
    159, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(624,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
    6, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(648,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(704,388), //bcp->offset
    169, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(832,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(832,452), //bcp->offset
    179, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S6451C9_nt,    ABISELECT(648,364), //bcp->offset
    148, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(624,352), //bcp->offset
    114, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(1024,584), //bcp->offset
    199, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S6451C11_nt,    ABISELECT(520,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6451C6_nt,    ABISELECT(520,296), //bcp->offset
    99, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6451C4_nt,    ABISELECT(1040,592), //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1040,592), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S6451C8_nt,    ABISELECT(1248,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6451C14_nt,    ABISELECT(1248,732), //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
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1264,736), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1264,736), //bcp->offset
    296, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(1456,868), //bcp->offset
    307, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6451C13_nt,    ABISELECT(1248,732), //bcp->offset
    244, //bcp->virtual_function_table_offset
    36, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6451C3_nt,    ABISELECT(1232,724), //bcp->offset
    240, //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
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(1584,932), //bcp->offset
    313, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S6451C12_nt,    ABISELECT(1040,592), //bcp->offset
    205, //bcp->virtual_function_table_offset
    23, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S6451C8_nt,    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
    36, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6451C5,    ABISELECT(128,64), //bcp->offset
    29, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6451C2_nt,    ABISELECT(1680,980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1808,1044), //bcp->offset
    -1, //bcp->virtual_function_table_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
    30, //immediately_derived
  0, 0},
  {&cd_S6451C3_nt,    ABISELECT(1832,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
    26, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S6451C9_nt,    ABISELECT(1832,1056), //bcp->offset
    396, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6451C7_nt,    ABISELECT(1808,1044), //bcp->offset
    378, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(1872,1076), //bcp->offset
    -1, //bcp->virtual_function_table_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
    32, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(1872,1076), //bcp->offset
    407, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6451C17_nt,    ABISELECT(1680,980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(2064,1208), //bcp->offset
    418, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6451C11_nt,    ABISELECT(2192,1272), //bcp->offset
    424, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S6451C16_nt,    ABISELECT(1680,980), //bcp->offset
    323, //bcp->virtual_function_table_offset
    43, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6451C8_nt,    ABISELECT(144,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
    38, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S6451C14_nt,    ABISELECT(144,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S6451C4_nt,    ABISELECT(160,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
    40, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S6451C10_nt,    ABISELECT(160,72), //bcp->offset
    72, //bcp->virtual_function_table_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
    42, //immediately_derived
  0, 0},
  {&cd_S6451C2_nt,    ABISELECT(352,204), //bcp->offset
    83, //bcp->virtual_function_table_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
    42, //immediately_derived
  0, 0},
  {&cd_S6451C13_nt,    ABISELECT(144,68), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6451C1[];
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN7S6451C1D1Ev();
extern void _ZN7S6451C1D0Ev();
extern void _ZN7S6451C12v1Ev();
extern void _ZN7S6451C12v2Ev();
extern void _ZN7S6451C12v3Ev();
extern void _ZN7S6451C12v4Ev();
extern void _ZN7S6451C12v5Ev();
extern void _ZN7S6451C12v6Ev();
extern void _ZN7S6451C12v7Ev();
extern void _ZN7S6451C12v8Ev();
extern void _ZN7S6451C12v9Ev();
extern void _ZN7S6451C13v10Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void ABISELECT(_ZThn128_N7S6451C1D1Ev,_ZThn64_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6451C1D0Ev,_ZThn64_N7S6451C1D0Ev)();
extern void _ZN7S6451C53v52Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZThn144_N7S6451C1D1Ev,_ZThn68_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6451C1D0Ev,_ZThn68_N7S6451C1D0Ev)();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n72_N7S6451C1D1Ev,_ZTv0_n36_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn520_N7S6451C1D1Ev,_ZThn296_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6451C1D0Ev,_ZTv0_n36_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn520_N7S6451C1D0Ev,_ZThn296_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S6451C1D1Ev,_ZTv0_n44_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn624_N7S6451C1D1Ev,_ZThn352_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6451C1D0Ev,_ZTv0_n44_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn624_N7S6451C1D0Ev,_ZThn352_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N7S6451C1D1Ev,_ZTv0_n84_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1040_N7S6451C1D1Ev,_ZThn592_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6451C1D0Ev,_ZTv0_n84_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1040_N7S6451C1D0Ev,_ZThn592_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N7S6451C1D1Ev,_ZTv0_n92_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1248_N7S6451C1D1Ev,_ZThn732_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N7S6451C1D0Ev,_ZTv0_n92_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1248_N7S6451C1D0Ev,_ZThn732_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZTv0_n48_N7S6451C1D1Ev,_ZTv0_n24_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1584_N7S6451C1D1Ev,_ZThn932_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6451C1D0Ev,_ZTv0_n24_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1584_N7S6451C1D0Ev,_ZThn932_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void ABISELECT(_ZTv0_n144_N7S6451C1D1Ev,_ZTv0_n72_N7S6451C1D1Ev)();
extern void ABISELECT(_ZThn1680_N7S6451C1D1Ev,_ZThn980_N7S6451C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n144_N7S6451C1D0Ev,_ZTv0_n72_N7S6451C1D0Ev)();
extern void ABISELECT(_ZThn1680_N7S6451C1D0Ev,_ZThn980_N7S6451C1D0Ev)() __attribute__((weak));
extern void _ZN11S6451C16_nt3v55Ev();
extern void _ZN11S6451C16_nt3v56Ev();
extern void _ZN11S6451C16_nt3v57Ev();
extern void _ZN11S6451C16_nt3v58Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTvn128_n144_N7S6451C1D1Ev,_ZTvn64_n72_N7S6451C1D1Ev)();
extern void ABISELECT(_ZTvn128_n144_N7S6451C1D0Ev,_ZTvn64_n72_N7S6451C1D0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void ABISELECT(_ZTvn512_n144_N7S6451C1D1Ev,_ZTvn292_n72_N7S6451C1D1Ev)();
extern void ABISELECT(_ZTvn512_n144_N7S6451C1D0Ev,_ZTvn292_n72_N7S6451C1D0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY vtc_S6451C1[] = {
  ABISELECT(1680,980),
  ABISELECT(1584,932),
  ABISELECT(1248,732),
  ABISELECT(1040,592),
  ABISELECT(1024,584),
  ABISELECT(832,452),
  ABISELECT(704,388),
  ABISELECT(688,384),
  ABISELECT(624,352),
  ABISELECT(520,296),
  ABISELECT(496,284),
  0,
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN7S6451C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6451C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v5Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v6Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v7Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v8Ev,
  (VTBL_ENTRY)&_ZN7S6451C12v9Ev,
  (VTBL_ENTRY)&_ZN7S6451C13v10Ev,
  ABISELECT(1456,868),
  ABISELECT(1120,668),
  ABISELECT(912,528),
  ABISELECT(896,520),
  ABISELECT(704,388),
  ABISELECT(368,220),
  ABISELECT(576,324),
  ABISELECT(560,320),
  ABISELECT(496,288),
  ABISELECT(392,232),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N7S6451C1D1Ev,_ZThn64_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N7S6451C1D0Ev,_ZThn64_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6451C53v52Ev,
  ABISELECT(688,384),
  ABISELECT(352,216),
  ABISELECT(560,320),
  ABISELECT(544,316),
  ABISELECT(480,284),
  ABISELECT(880,516),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S6451C1D1Ev,_ZThn68_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S6451C1D0Ev,_ZThn68_N7S6451C1D0Ev),
  ABISELECT(-160,-72),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-284),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  0,
  0,
  ABISELECT(-520,-296),
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  ABISELECT(-520,-296),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C1D1Ev,_ZTv0_n36_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C1D0Ev,_ZTv0_n36_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-624,-352),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-624,-352),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C1D1Ev,_ZTv0_n44_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C1D0Ev,_ZTv0_n44_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-384),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-388),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-832,-452),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  0,
  0,
  ABISELECT(-1024,-584),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-1040,-592),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(-1040,-592),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C1D1Ev,_ZTv0_n84_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C1D0Ev,_ZTv0_n84_N7S6451C1D0Ev),
  ABISELECT(-1232,-724),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-1248,-732),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(-1248,-732),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C1D1Ev,_ZTv0_n92_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C1D0Ev,_ZTv0_n92_N7S6451C1D0Ev),
  ABISELECT(-1264,-736),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-1456,-868),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  0,
  ABISELECT(-1584,-932),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(-1584,-932),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C1D1Ev,_ZTv0_n24_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C1D0Ev,_ZTv0_n24_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  ABISELECT(512,292),
  0,
  0,
  0,
  0,
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(192,96),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(152,76),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(128,64),
  ABISELECT(-1680,-980),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-48),
  ABISELECT(-1056,-628),
  ABISELECT(-656,-396),
  ABISELECT(-432,-248),
  ABISELECT(-640,-388),
  ABISELECT(-848,-528),
  ABISELECT(-976,-592),
  ABISELECT(-1184,-696),
  ABISELECT(-992,-596),
  ABISELECT(-1680,-980),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S6451C1D1Ev,_ZTv0_n72_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n144_N7S6451C1D0Ev,_ZTv0_n72_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v55Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v58Ev,
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  ABISELECT(-1808,-1044),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n144_N7S6451C1D1Ev,_ZTvn64_n72_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n144_N7S6451C1D0Ev,_ZTvn64_n72_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-1832,-1056),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
  ABISELECT(-1872,-1076),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  ABISELECT(-2064,-1208),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  ABISELECT(-1168,-688),
  ABISELECT(-1696,-988),
  ABISELECT(-1360,-820),
  ABISELECT(-2192,-1272),
  (VTBL_ENTRY)&(_ZTI7S6451C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn512_n144_N7S6451C1D1Ev,_ZTvn292_n72_N7S6451C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn512_n144_N7S6451C1D0Ev,_ZTvn292_n72_N7S6451C1D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern VTBL_ENTRY _ZTV7S6451C1[];
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN7S6451C5D1Ev();
extern void _ZN7S6451C5D0Ev();
extern void _ZN7S6451C53v52Ev();
static  VTBL_ENTRY _tg__ZTV7S6451C5__7S6451C1[] = {
  ABISELECT(1456,868),
  ABISELECT(1120,668),
  ABISELECT(912,528),
  ABISELECT(896,520),
  ABISELECT(704,388),
  ABISELECT(368,220),
  ABISELECT(576,324),
  ABISELECT(560,320),
  ABISELECT(496,288),
  ABISELECT(392,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6451C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6451C53v52Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn392_N7S6451C5D1Ev,_ZThn232_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn392_N7S6451C5D0Ev,_ZThn232_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C6_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  ABISELECT(-392,-232),
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn496_N7S6451C5D1Ev,_ZThn288_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn496_N7S6451C5D0Ev,_ZThn288_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-288),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-520,-300),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__7S6451C5__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-388),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__7S6451C5__7S6451C1[] = {
  0,
  0,
  ABISELECT(-896,-520),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn912_N7S6451C5D1Ev,_ZThn528_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn912_N7S6451C5D0Ev,_ZThn528_N7S6451C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(-912,-528),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(-912,-528),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev),
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn1120_N7S6451C5D1Ev,_ZThn668_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn1120_N7S6451C5D0Ev,_ZThn668_N7S6451C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__7S6451C5__7S6451C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-1120,-668),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(-1120,-668),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev),
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A2__7S6451C5__7S6451C1[] = {
  ABISELECT(-1136,-672),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__A1__7S6451C5__7S6451C1[] = {
  ABISELECT(-1328,-804),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt11S6451C12_nt__A2__7S6451C5__7S6451C1[] = {
  ABISELECT(-1104,-660),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev)();
extern void ABISELECT(_ZThn1456_N7S6451C5D1Ev,_ZThn868_N7S6451C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev)();
extern void ABISELECT(_ZThn1456_N7S6451C5D0Ev,_ZThn868_N7S6451C5D0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A1__7S6451C5__7S6451C1[] = {
  0,
  ABISELECT(-1456,-868),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(-1456,-868),
  (VTBL_ENTRY)&(_ZTI7S6451C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__A__7S6451C1[] = {
  ABISELECT(688,384),
  ABISELECT(352,216),
  ABISELECT(560,320),
  ABISELECT(544,316),
  ABISELECT(480,284),
  ABISELECT(880,516),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__A1__7S6451C1[] = {
  ABISELECT(880,516),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__A1__7S6451C1[] = {
  0,
  0,
  ABISELECT(-880,-516),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  ABISELECT(-880,-516),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZThn480_N11S6451C13_ntD1Ev,_ZThn284_N11S6451C13_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void ABISELECT(_ZThn480_N11S6451C13_ntD0Ev,_ZThn284_N11S6451C13_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__A__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-480,-284),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-480,-284),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-544,-316),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__A__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-504,-296),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-560,-320),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-352,-216),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__A__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-384),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C6_ntD1Ev();
extern void _ZN10S6451C6_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
extern void _ZN10S6451C6_nt3v40Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C6_nt__7S6451C1[] = {
  ABISELECT(184,92),
  ABISELECT(168,88),
  ABISELECT(104,56),
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S6451C6_nt3v40Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  ABISELECT(504,288),
  ABISELECT(-24,-12),
  ABISELECT(312,156),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev)();
extern void ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev)() __attribute__((weak));
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-104,-56),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-168,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-184,-92),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-156),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(-504,-288),
  (VTBL_ENTRY)&(_ZTI10S6451C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__7S6451C1[] = {
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-56,-24),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(152,80),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-88),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-100),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void _ZN11S6451C12_ntD1Ev();
extern void _ZN11S6451C12_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__7S6451C1[] = {
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(-208,-140),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(-416,-276),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,240),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(416,240),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD1Ev,_ZTv0_n44_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C12_ntD0Ev,_ZTv0_n44_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(352,208),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(392,228),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(336,204),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(544,308),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev)();
extern void ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev)() __attribute__((weak));
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C1[] = {
  0,
  ABISELECT(-544,-340),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(-544,-340),
  (VTBL_ENTRY)&(_ZTI11S6451C12_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void _ZN11S6451C13_ntD1Ev();
extern void _ZN11S6451C13_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__7S6451C1[] = {
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_ntD0Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C1[] = {
  ABISELECT(-224,-148),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C14_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(224,148),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(624,380),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(624,380),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(600,368),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(544,344),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(752,448),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,280),
  (VTBL_ENTRY)&(_ZTI11S6451C13_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A1__7S6451C1[] = {
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(752,480),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1088,648),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C1[] = {
  0,
  0,
  ABISELECT(560,348),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C16_ntD1Ev();
extern void _ZN11S6451C16_ntD0Ev();
extern void _ZN11S6451C16_nt3v55Ev();
extern void _ZN11S6451C16_nt3v56Ev();
extern void _ZN11S6451C16_nt3v57Ev();
extern void _ZN11S6451C16_nt3v58Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-1056,-628),
  ABISELECT(-656,-396),
  ABISELECT(-432,-248),
  ABISELECT(-640,-388),
  ABISELECT(-848,-528),
  ABISELECT(-976,-592),
  ABISELECT(-1184,-696),
  ABISELECT(-992,-596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v55Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S6451C16_nt3v58Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
extern void _ZN11S6451C17_nt3v53Ev();
extern void _ZN11S6451C17_nt3v54Ev();
extern void _ZN11S6451C17_ntD1Ev();
extern void _ZN11S6451C17_ntD0Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-848,-528),
  ABISELECT(-976,-592),
  ABISELECT(-1184,-696),
  ABISELECT(-992,-596),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v53Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_nt3v54Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C17_ntD0Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN10S6451C7_ntD1Ev();
extern void _ZN10S6451C7_ntD0Ev();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  0,
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1144,672),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1128,668),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1336,772),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1000,604),
  (VTBL_ENTRY)&(_ZTI10S6451C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1120,660),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1104,656),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1312,760),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI10S6451C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(992,596),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1184,696),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD1Ev,_ZThn64_N11S6451C17_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C17_ntD0Ev,_ZThn64_N11S6451C17_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(848,528),
  (VTBL_ENTRY)&(_ZTI11S6451C17_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN11S6451C11_ntD1Ev();
extern void _ZN11S6451C11_ntD0Ev();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  ABISELECT(-1168,-688),
  ABISELECT(-1696,-988),
  ABISELECT(-1360,-820),
  0,
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN11S6451C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1360,820),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__A1__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1696,988),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[] = {
  0,
  0,
  ABISELECT(1168,688),
  (VTBL_ENTRY)&(_ZTI11S6451C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C4_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(1184,696),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C8_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(992,596),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-976,-592),
  ABISELECT(-1312,-760),
  ABISELECT(-1104,-656),
  ABISELECT(-1120,-660),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD1Ev,_ZThn64_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N11S6451C16_ntD0Ev,_ZThn64_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-1000,-604),
  ABISELECT(-1336,-772),
  ABISELECT(-1128,-668),
  ABISELECT(-1144,-672),
  ABISELECT(-152,-76),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt__A1__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(976,592),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(848,528),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
extern void _ZN11S6451C12_nt3v51Ev();
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S6451C12_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(192,132),
  ABISELECT(192,132),
  ABISELECT(640,388),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(544,340),
  ABISELECT(-208,-140),
  ABISELECT(-544,-308),
  ABISELECT(-336,-204),
  ABISELECT(-352,-208),
  ABISELECT(-416,-240),
  ABISELECT(-16,-8),
  ABISELECT(208,140),
  ABISELECT(640,388),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
  (VTBL_ENTRY)&_ZN11S6451C12_nt3v51Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD1Ev,_ZTv0_n84_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N11S6451C16_ntD0Ev,_ZTv0_n84_N11S6451C16_ntD0Ev),
};
extern void _ZN10S6451C8_nt3v19Ev();
extern void _ZN10S6451C8_nt3v20Ev();
extern void _ZN10S6451C8_nt3v21Ev();
extern void _ZN10S6451C8_nt3v22Ev();
extern void _ZN11S6451C14_nt3v41Ev();
extern void _ZN11S6451C14_nt3v42Ev();
extern void _ZN11S6451C14_nt3v43Ev();
extern void _ZN11S6451C13_nt3v44Ev();
extern void _ZN11S6451C13_nt3v45Ev();
extern void _ZN11S6451C13_nt3v46Ev();
extern void _ZN11S6451C13_nt3v47Ev();
extern void _ZN11S6451C13_nt3v48Ev();
extern void _ZN11S6451C13_nt3v49Ev();
extern void _ZN11S6451C13_nt3v50Ev();
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev)();
static  VTBL_ENTRY _tg__ZTV11S6451C13_nt__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(208,136),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(16,4),
  ABISELECT(432,248),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-416,-280),
  ABISELECT(-752,-448),
  ABISELECT(-544,-344),
  ABISELECT(-560,-348),
  ABISELECT(-624,-380),
  ABISELECT(-224,-148),
  ABISELECT(432,248),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S6451C8_nt3v22Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v42Ev,
  (VTBL_ENTRY)&_ZN11S6451C14_nt3v43Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v44Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v45Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v46Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v47Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v48Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v49Ev,
  (VTBL_ENTRY)&_ZN11S6451C13_nt3v50Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD1Ev,_ZTv0_n92_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n184_N11S6451C16_ntD0Ev,_ZTv0_n92_N11S6451C16_ntD0Ev),
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt__A1__11S6451C16_nt__7S6451C1[] = {
  0,
  0,
  ABISELECT(656,396),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void _ZN11S6451C10_nt3v25Ev();
extern void _ZN11S6451C10_nt3v26Ev();
extern void _ZN11S6451C10_nt3v27Ev();
extern void _ZN11S6451C10_nt3v28Ev();
extern void _ZN11S6451C10_nt3v29Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C10_nt11S6451C13_nt__A3__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(416,244),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v25Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v26Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v27Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v28Ev,
  (VTBL_ENTRY)&_ZN11S6451C10_nt3v29Ev,
};
extern void _ZN10S6451C2_nt3v11Ev();
extern void _ZN10S6451C2_nt3v12Ev();
extern void _ZN10S6451C2_nt3v13Ev();
extern void _ZN10S6451C2_nt3v14Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C2_nt11S6451C13_nt__A2__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(224,112),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S6451C2_nt3v14Ev,
};
extern void _ZN10S6451C4_nt3v15Ev();
extern void _ZN10S6451C4_nt3v16Ev();
extern void _ZN10S6451C4_nt3v17Ev();
extern void _ZN10S6451C4_nt3v18Ev();
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev)();
extern void _ZN10S6451C7_nt3v33Ev();
extern void _ZN10S6451C7_nt3v34Ev();
extern void _ZN10S6451C7_nt3v35Ev();
extern void _ZN10S6451C7_nt3v36Ev();
extern void _ZN10S6451C7_nt3v37Ev();
extern void _ZN10S6451C7_nt3v38Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(1056,628),
  0,
  0,
  0,
  0,
  ABISELECT(208,100),
  ABISELECT(-128,-68),
  ABISELECT(80,36),
  ABISELECT(64,32),
  ABISELECT(1056,628),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S6451C4_nt3v18Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD1Ev,_ZTv0_n44_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N11S6451C16_ntD0Ev,_ZTv0_n44_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S6451C7_nt3v38Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
extern void _ZN10S6451C9_nt3v30Ev();
extern void _ZN10S6451C9_nt3v31Ev();
extern void _ZN10S6451C9_nt3v32Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(184,88),
  ABISELECT(-152,-80),
  ABISELECT(56,24),
  ABISELECT(40,20),
  ABISELECT(1032,616),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S6451C9_nt3v32Ev,
};
extern void _ZN10S6451C3_nt3v23Ev();
extern void _ZN10S6451C3_nt3v24Ev();
static  VTBL_ENTRY _tg__ZTV10S6451C3_nt11S6451C12_nt__A3__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(448,256),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6451C3_nt3v24Ev,
};
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__11S6451C16_nt__7S6451C1[] = {
  0,
  ABISELECT(96,48),
  ABISELECT(-560,-348),
  ABISELECT(-1088,-648),
  ABISELECT(-752,-480),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD1Ev,_ZTv0_n24_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N11S6451C16_ntD0Ev,_ZTv0_n24_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
extern void ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev)();
extern void ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev)();
extern void _ZN11S6451C11_nt3v39Ev();
static  VTBL_ENTRY _tg__ZTV11S6451C11_nt__A__11S6451C16_nt__7S6451C1[] = {
  ABISELECT(-1168,-688),
  ABISELECT(-1696,-988),
  ABISELECT(-1360,-820),
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI11S6451C16_nt[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD1Ev,_ZThn292_N11S6451C16_ntD1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn512_N11S6451C16_ntD0Ev,_ZThn292_N11S6451C16_ntD0Ev),
  (VTBL_ENTRY)&_ZN11S6451C11_nt3v39Ev,
};
static  VTT_ENTRY vtt_S6451C1[] = {
  {&(_ZTV7S6451C1[13]),  13,432},
  {&(_tg__ZTV7S6451C5__7S6451C1[12]),  12,19},
  {&(_tg__ZTV10S6451C6_nt__7S6451C5__7S6451C1[11]),  11,15},
  {&(_tg__ZTV10S6451C7_nt__7S6451C5__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__7S6451C5__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C5__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__7S6451C5__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__7S6451C5__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__7S6451C5__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C3_nt__A1__7S6451C5__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C12_nt__7S6451C5__7S6451C1[23]),  23,35},
  {&(_tg__ZTV11S6451C13_nt__7S6451C5__7S6451C1[36]),  36,52},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A2__7S6451C5__7S6451C1[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__A1__7S6451C5__7S6451C1[2]),  2,6},
  {&(_tg__ZTV10S6451C3_nt11S6451C12_nt__A2__7S6451C5__7S6451C1[2]),  2,4},
  {&(_tg__ZTV11S6451C11_nt__A1__7S6451C5__7S6451C1[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__A__7S6451C1[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__A1__7S6451C1[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__A1__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__A__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__A__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__A__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__A__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__A__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__A__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__A__7S6451C1[11]),  11,20},
  {&(_ZTV7S6451C1[95]),  95,432},
  {&(_ZTV7S6451C1[41]),  41,432},
  {&(_ZTV7S6451C1[110]),  110,432},
  {&(_ZTV7S6451C1[136]),  136,432},
  {&(_ZTV7S6451C1[165]),  165,432},
  {&(_ZTV7S6451C1[154]),  154,432},
  {&(_ZTV7S6451C1[175]),  175,432},
  {&(_ZTV7S6451C1[190]),  190,432},
  {&(_ZTV7S6451C1[203]),  203,432},
  {&(_ZTV7S6451C1[228]),  228,432},
  {&(_ZTV7S6451C1[280]),  280,432},
  {&(_ZTV7S6451C1[298]),  298,432},
  {&(_ZTV7S6451C1[309]),  309,432},
  {&(_ZTV7S6451C1[242]),  242,432},
  {&(_ZTV7S6451C1[320]),  320,432},
  {&(_ZTV7S6451C1[366]),  366,432},
  {&(_ZTV7S6451C1[384]),  384,432},
  {&(_ZTV7S6451C1[402]),  402,432},
  {&(_ZTV7S6451C1[409]),  409,432},
  {&(_ZTV7S6451C1[420]),  420,432},
  {&(_ZTV7S6451C1[429]),  429,432},
  {&(_ZTV7S6451C1[56]),  56,432},
  {&(_tg__ZTV10S6451C6_nt__7S6451C1[8]),  8,12},
  {&(_tg__ZTV11S6451C11_nt10S6451C6_nt__7S6451C1[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt10S6451C6_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__10S6451C6_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__10S6451C6_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C6_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C6_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C3_nt__A1__10S6451C6_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C12_nt__7S6451C1[10]),  10,22},
  {&(_tg__ZTV11S6451C13_nt__11S6451C12_nt__7S6451C1[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__11S6451C12_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A1__11S6451C12_nt__7S6451C1[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__11S6451C12_nt__7S6451C1[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C12_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C12_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C12_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C12_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A3__11S6451C12_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A2__11S6451C12_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__11S6451C12_nt__7S6451C1[7]),  7,10},
  {&(_tg__ZTV11S6451C13_nt__7S6451C1[8]),  8,24},
  {&(_tg__ZTV11S6451C14_nt11S6451C13_nt__7S6451C1[3]),  3,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C14_nt11S6451C13_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C3_nt__11S6451C13_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C7_nt__11S6451C13_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C8_nt__A1__11S6451C13_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C13_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C13_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A2__11S6451C13_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__A1__11S6451C13_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt__A1__7S6451C1[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt__A1__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt__A1__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C16_nt__7S6451C1[11]),  11,23},
  {&(_tg__ZTV11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,14},
  {&(_tg__ZTV10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C8_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C2_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C9_nt10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C9_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__A1__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__10S6451C7_nt11S6451C17_nt11S6451C16_nt__A1__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C8_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C4_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C17_nt11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__11S6451C17_nt11S6451C16_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C11_nt11S6451C16_nt__A2__7S6451C1[5]),  5,8},
  {&(_tg__ZTV11S6451C10_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[11]),  11,20},
  {&(_tg__ZTV10S6451C4_nt__A1__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C3_nt__11S6451C11_nt11S6451C16_nt__A2__7S6451C1[4]),  4,6},
  {&(_tg__ZTV10S6451C4_nt__11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C8_nt__11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[6]),  6,18},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt11S6451C17_nt__11S6451C16_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C2_nt__A1__11S6451C16_nt__7S6451C1[6]),  6,10},
  {&(_tg__ZTV11S6451C10_nt__11S6451C16_nt__7S6451C1[11]),  11,20},
  {&(_tg__ZTV11S6451C12_nt__11S6451C16_nt__7S6451C1[23]),  23,35},
  {&(_tg__ZTV11S6451C13_nt__11S6451C16_nt__7S6451C1[36]),  36,52},
  {&(_tg__ZTV10S6451C3_nt__A1__11S6451C16_nt__7S6451C1[4]),  4,6},
  {&(_tg__ZTV11S6451C10_nt11S6451C13_nt__A3__11S6451C16_nt__7S6451C1[2]),  2,11},
  {&(_tg__ZTV10S6451C2_nt11S6451C13_nt__A2__11S6451C16_nt__7S6451C1[2]),  2,6},
  {&(_tg__ZTV10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[22]),  22,34},
  {&(_tg__ZTV10S6451C9_nt10S6451C7_nt__A1__11S6451C16_nt__7S6451C1[6]),  6,11},
  {&(_tg__ZTV10S6451C3_nt11S6451C12_nt__A3__11S6451C16_nt__7S6451C1[2]),  2,4},
  {&(_tg__ZTV11S6451C11_nt__11S6451C16_nt__7S6451C1[7]),  7,10},
  {&(_tg__ZTV11S6451C11_nt__A__11S6451C16_nt__7S6451C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6451C1[];
extern  VTBL_ENTRY _ZTV7S6451C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6451C1[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD0Ev,_ZTv0_n24_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD0Ev,_ZThn340_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N11S6451C12_ntD1Ev,_ZTv0_n24_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N11S6451C12_ntD1Ev,_ZThn340_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD0Ev,_ZTv0_n92_N11S6451C12_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD0Ev,_ZThn140_N11S6451C12_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N11S6451C12_ntD1Ev,_ZTv0_n92_N11S6451C12_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N11S6451C12_ntD1Ev,_ZThn140_N11S6451C12_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD0Ev,_ZTv0_n44_N10S6451C6_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD0Ev,_ZThn56_N10S6451C6_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N10S6451C6_ntD1Ev,_ZTv0_n44_N10S6451C6_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N10S6451C6_ntD1Ev,_ZThn56_N10S6451C6_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD0Ev,_ZTv0_n44_N11S6451C13_ntD0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N11S6451C13_ntD0Ev,_ZThn284_N11S6451C13_ntD0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N11S6451C13_ntD1Ev,_ZTv0_n44_N11S6451C13_ntD1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N11S6451C13_ntD1Ev,_ZThn284_N11S6451C13_ntD1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D0Ev,_ZTv0_n24_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N7S6451C5D0Ev,_ZThn868_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C5D1Ev,_ZTv0_n24_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1456_N7S6451C5D1Ev,_ZThn868_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D0Ev,_ZTv0_n92_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N7S6451C5D0Ev,_ZThn668_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C5D1Ev,_ZTv0_n92_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N7S6451C5D1Ev,_ZThn668_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D0Ev,_ZTv0_n84_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N7S6451C5D0Ev,_ZThn528_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C5D1Ev,_ZTv0_n84_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N7S6451C5D1Ev,_ZThn528_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D0Ev,_ZTv0_n44_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S6451C5D0Ev,_ZThn288_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C5D1Ev,_ZTv0_n44_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N7S6451C5D1Ev,_ZThn288_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D0Ev,_ZTv0_n36_N7S6451C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S6451C5D0Ev,_ZThn232_N7S6451C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C5D1Ev,_ZTv0_n36_N7S6451C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N7S6451C5D1Ev,_ZThn232_N7S6451C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S6451C1D0Ev,_ZTv0_n72_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N7S6451C1D0Ev,_ZThn980_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n144_N7S6451C1D1Ev,_ZTv0_n72_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1680_N7S6451C1D1Ev,_ZThn980_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C1D0Ev,_ZTv0_n24_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N7S6451C1D0Ev,_ZThn932_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6451C1D1Ev,_ZTv0_n24_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1584_N7S6451C1D1Ev,_ZThn932_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C1D0Ev,_ZTv0_n92_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N7S6451C1D0Ev,_ZThn732_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n184_N7S6451C1D1Ev,_ZTv0_n92_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N7S6451C1D1Ev,_ZThn732_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C1D0Ev,_ZTv0_n84_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S6451C1D0Ev,_ZThn592_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N7S6451C1D1Ev,_ZTv0_n84_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S6451C1D1Ev,_ZThn592_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C1D0Ev,_ZTv0_n44_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S6451C1D0Ev,_ZThn352_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S6451C1D1Ev,_ZTv0_n44_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N7S6451C1D1Ev,_ZThn352_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C1D0Ev,_ZTv0_n36_N7S6451C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S6451C1D0Ev,_ZThn296_N7S6451C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6451C1D1Ev,_ZTv0_n36_N7S6451C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn520_N7S6451C1D1Ev,_ZThn296_N7S6451C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6451C1 = {  "S6451C1", // class name
  bases_S6451C1, 43,
  &(vtc_S6451C1[0]), // expected_vtbl_contents
  &(vtt_S6451C1[0]), // expected_vtt_contents
  ABISELECT(2720,1564), // object size
  NSPAIRA(_ZTI7S6451C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6451C1),432, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6451C1),136, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C2_nt  {
  char s19656c2f0;
  void  mf19656c2(); // _ZN11S19656C2_nt9mf19656c2Ev
};
//SIG(-1 S19656C2_nt) C1{ m Fc}


void  S19656C2_nt ::mf19656c2(){}

//skip512 S19656C2_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19656C2_nt[];
VTBL_ENTRY *P__ZTI11S19656C2_nt = _ZTI11S19656C2_nt; 
Class_Descriptor cd_S19656C2_nt = {  "S19656C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S19656C2_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  S19656C4_nt  {
  __tsi64 s19656c4f0;
  void *s19656c4f1;
  char s19656c4f2:6;
  long double s19656c4f3;
  char s19656c4f4[7];
  __tsi64 s19656c4f5;
  char s19656c4f6[9];
  long double s19656c4f7[8];
  void *s19656c4f8;
  short s19656c4f9;
  void *s19656c4f10[7];
  int s19656c4f11;
  void *s19656c4f12;
  virtual void  v4(); // _ZN11S19656C4_nt2v4Ev
  virtual void  v5(); // _ZN11S19656C4_nt2v5Ev
  ~S19656C4_nt(); // tgen
  S19656C4_nt(); // tgen
};
//SIG(-1 S19656C4_nt) C1{ v1 v2 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}


void  S19656C4_nt ::v4(){vfunc_called(this, "_ZN11S19656C4_nt2v4Ev");}
void  S19656C4_nt ::v5(){vfunc_called(this, "_ZN11S19656C4_nt2v5Ev");}
S19656C4_nt ::~S19656C4_nt(){ note_dtor("S19656C4_nt", this);} // tgen
S19656C4_nt ::S19656C4_nt(){ note_ctor("S19656C4_nt", this);} // tgen

//skip512 S19656C4_nt

#else // __cplusplus

extern void _ZN11S19656C4_ntC1Ev();
extern void _ZN11S19656C4_ntD1Ev();
Name_Map name_map_S19656C4_nt[] = {
  NSPAIR(_ZN11S19656C4_ntC1Ev),
  NSPAIR(_ZN11S19656C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S19656C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19656C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
VTBL_ENTRY *P__ZTI11S19656C4_nt = _ZTI11S19656C4_nt; 
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
Class_Descriptor cd_S19656C4_nt = {  "S19656C4_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,200), // object size
  NSPAIRA(_ZTI11S19656C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19656C4_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

union  S19656C5_nt  {
  __tsi64 s19656c5f0;
  long double s19656c5f1[10];
  long double s19656c5f2;
  short  :0;
  void  mf19656c5(); // _ZN11S19656C5_nt9mf19656c5Ev
};
//SIG(1 S19656C5_nt) U1{ m FL FD[10] FD Fs:0}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19656C6_nt  {
  char s19656c6f0;
  __tsi64 s19656c6f1[10];
  long double s19656c6f2;
  ::S19656C4_nt s19656c6f3;
  void *s19656c6f4;
  short s19656c6f5;
  void *s19656c6f6;
  int s19656c6f7;
  virtual void  v7(); // _ZN11S19656C6_nt2v7Ev
  virtual void  v8(); // _ZN11S19656C6_nt2v8Ev
  ~S19656C6_nt(); // tgen
  S19656C6_nt(); // tgen
};
//SIG(-1 S19656C6_nt) C1{ v1 v2 Fc FL[10] FD FC2{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fp Fs Fp Fi}


void  S19656C6_nt ::v7(){vfunc_called(this, "_ZN11S19656C6_nt2v7Ev");}
void  S19656C6_nt ::v8(){vfunc_called(this, "_ZN11S19656C6_nt2v8Ev");}
S19656C6_nt ::~S19656C6_nt(){ note_dtor("S19656C6_nt", this);} // tgen
S19656C6_nt ::S19656C6_nt(){ note_ctor("S19656C6_nt", this);} // tgen

//skip512 S19656C6_nt

#else // __cplusplus

extern void _ZN11S19656C6_ntC1Ev();
extern void _ZN11S19656C6_ntD1Ev();
Name_Map name_map_S19656C6_nt[] = {
  NSPAIR(_ZN11S19656C6_ntC1Ev),
  NSPAIR(_ZN11S19656C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S19656C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19656C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
VTBL_ENTRY *P__ZTI11S19656C6_nt = _ZTI11S19656C6_nt; 
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
Class_Descriptor cd_S19656C6_nt = {  "S19656C6_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(448,316), // object size
  NSPAIRA(_ZTI11S19656C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19656C6_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C3_nt  {
  int s19656c3f0;
  ::S19656C4_nt s19656c3f1;
  int s19656c3f2[2];
  ::S19656C5_nt s19656c3f3;
  long double s19656c3f4;
  int s19656c3f5;
  int s19656c3f6;
  ::S19656C6_nt s19656c3f7;
  __tsi64 s19656c3f8;
  int s19656c3f9;
  ::S19656C6_nt s19656c3f10;
  virtual  ~S19656C3_nt(); // _ZN11S19656C3_ntD1Ev
  virtual void  v2(); // _ZN11S19656C3_nt2v2Ev
  virtual void  v3(); // _ZN11S19656C3_nt2v3Ev
  S19656C3_nt(); // tgen
};
//SIG(-1 S19656C3_nt) C1{ vd v1 v2 Fi FC2{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU3{ m FL FD[10] FD Fs:0} FD Fi Fi FC4{ v5 v6 Fc FL[10] FD FC2 Fp Fs Fp Fi} FL Fi FC4}


 S19656C3_nt ::~S19656C3_nt(){ note_dtor("S19656C3_nt", this);}
void  S19656C3_nt ::v2(){vfunc_called(this, "_ZN11S19656C3_nt2v2Ev");}
void  S19656C3_nt ::v3(){vfunc_called(this, "_ZN11S19656C3_nt2v3Ev");}
S19656C3_nt ::S19656C3_nt(){ note_ctor("S19656C3_nt", this);} // tgen

//skip512 S19656C3_nt

#else // __cplusplus

extern void _ZN11S19656C3_ntC1Ev();
extern void _ZN11S19656C3_ntD1Ev();
Name_Map name_map_S19656C3_nt[] = {
  NSPAIR(_ZN11S19656C3_ntC1Ev),
  NSPAIR(_ZN11S19656C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern void _ZN11S19656C3_ntD1Ev();
extern void _ZN11S19656C3_ntD0Ev();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
static  VTBL_ENTRY vtc_S19656C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19656C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19656C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
VTBL_ENTRY *P__ZTI11S19656C3_nt = _ZTI11S19656C3_nt; 
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
Class_Descriptor cd_S19656C3_nt = {  "S19656C3_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1440,1000), // object size
  NSPAIRA(_ZTI11S19656C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19656C3_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C11_nt  {
  void *s19656c11f0;
  __tsi64 s19656c11f1;
  void *s19656c11f2[7];
  void  mf19656c11(); // _ZN12S19656C11_nt10mf19656c11Ev
  virtual  ~S19656C11_nt(); // _ZN12S19656C11_ntD1Ev
  S19656C11_nt(); // tgen
};
//SIG(-1 S19656C11_nt) C1{ vd m Fp FL Fp[7]}


void  S19656C11_nt ::mf19656c11(){}
 S19656C11_nt ::~S19656C11_nt(){ note_dtor("S19656C11_nt", this);}
S19656C11_nt ::S19656C11_nt(){ note_ctor("S19656C11_nt", this);} // tgen

//skip512 S19656C11_nt

#else // __cplusplus

extern void _ZN12S19656C11_ntC1Ev();
extern void _ZN12S19656C11_ntD1Ev();
Name_Map name_map_S19656C11_nt[] = {
  NSPAIR(_ZN12S19656C11_ntC1Ev),
  NSPAIR(_ZN12S19656C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern void _ZN12S19656C11_ntD1Ev();
extern void _ZN12S19656C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19656C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19656C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19656C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19656C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
VTBL_ENTRY *P__ZTI12S19656C11_nt = _ZTI12S19656C11_nt; 
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
Class_Descriptor cd_S19656C11_nt = {  "S19656C11_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI12S19656C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19656C11_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  S19656C10_nt  {
  ::S19656C4_nt s19656c10f0[8];
  ::S19656C4_nt s19656c10f1[2];
  void *s19656c10f2;
  int s19656c10f3;
  ::S19656C11_nt s19656c10f4;
  ::S19656C4_nt s19656c10f5[5];
  void *s19656c10f6[5];
  ::S19656C4_nt s19656c10f7[5];
  virtual void  v6(); // _ZN12S19656C10_nt2v6Ev
  ~S19656C10_nt(); // tgen
  S19656C10_nt(); // tgen
};
//SIG(-1 S19656C10_nt) C1{ v1 FC2{ v2 v3 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC2[2] Fp Fi FC3{ vd m Fp FL Fp[7]} FC2[5] Fp[5] FC2[5]}


void  S19656C10_nt ::v6(){vfunc_called(this, "_ZN12S19656C10_nt2v6Ev");}
S19656C10_nt ::~S19656C10_nt(){ note_dtor("S19656C10_nt", this);} // tgen
S19656C10_nt ::S19656C10_nt(){ note_ctor("S19656C10_nt", this);} // tgen

//skip512 S19656C10_nt

#else // __cplusplus

extern void _ZN12S19656C10_ntC1Ev();
extern void _ZN12S19656C10_ntD1Ev();
Name_Map name_map_S19656C10_nt[] = {
  NSPAIR(_ZN12S19656C10_ntC1Ev),
  NSPAIR(_ZN12S19656C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY vtc_S19656C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19656C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
VTBL_ENTRY *P__ZTI12S19656C10_nt = _ZTI12S19656C10_nt; 
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
Class_Descriptor cd_S19656C10_nt = {  "S19656C10_nt", // class name
  0,0,//no base classes
  &(vtc_S19656C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6240,4076), // object size
  NSPAIRA(_ZTI12S19656C10_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19656C10_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  S19656C9  : S19656C4_nt , virtual S19656C10_nt , S19656C11_nt , virtual S19656C6_nt {
  int s19656c9f0:2;
  long double s19656c9f1[7];
  void *s19656c9f2;
  ::S19656C10_nt s19656c9f3;
  void *s19656c9f4;
  int s19656c9f5;
  void *s19656c9f6;
  void *s19656c9f7;
  ::S19656C11_nt s19656c9f8;
  ::S19656C4_nt s19656c9f9;
  long double s19656c9f10[8];
  virtual void  v9(); // _ZN8S19656C92v9Ev
  ~S19656C9(); // tgen
  S19656C9(); // tgen
};
//SIG(-1 S19656C9) C1{ BC2{ v2 v3 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} VBC3{ v4 FC2[8] FC2[2] Fp Fi FC4{ vd m Fp FL Fp[7]} FC2[5] Fp[5] FC2[5]} BC4 VBC5{ v5 v6 Fc FL[10] FD FC2 Fp Fs Fp Fi} v1 Fi:2 FD[7] Fp FC3 Fp Fi Fp[2] FC4 FC2 FD[8]}


void  S19656C9 ::v9(){vfunc_called(this, "_ZN8S19656C92v9Ev");}
S19656C9 ::~S19656C9(){ note_dtor("S19656C9", this);} // tgen
S19656C9 ::S19656C9(){ note_ctor("S19656C9", this);} // tgen

static void Test_S19656C9()
{
  extern Class_Descriptor cd_S19656C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(875,2291)];
    init_test(&cd_S19656C9, buf);
    S19656C9 *dp, &lv = *(dp=new (buf) S19656C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13984,9160), "sizeof(S19656C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C9)");
    check_base_class_offset(lv, (S19656C4_nt*), 0, "S19656C9");
    check_base_class_offset(lv, (S19656C10_nt*), ABISELECT(7296,4768), "S19656C9");
    check_base_class_offset(lv, (S19656C11_nt*), ABISELECT(296,200), "S19656C9");
    check_base_class_offset(lv, (S19656C6_nt*), ABISELECT(13536,8844), "S19656C9");
    set_bf_and_test(lv, s19656c9f0, ABISELECT(376,244), 0, 2, 1, "S19656C9");
    set_bf_and_test(lv, s19656c9f0, ABISELECT(376,244), 0, 2, hide_sll(1LL<<1), "S19656C9");
    check_field_offset(lv, s19656c9f1, ABISELECT(384,248), "S19656C9.s19656c9f1");
    check_field_offset(lv, s19656c9f2, ABISELECT(496,332), "S19656C9.s19656c9f2");
    check_field_offset(lv, s19656c9f3, ABISELECT(512,336), "S19656C9.s19656c9f3");
    check_field_offset(lv, s19656c9f4, ABISELECT(6752,4412), "S19656C9.s19656c9f4");
    check_field_offset(lv, s19656c9f5, ABISELECT(6760,4416), "S19656C9.s19656c9f5");
    check_field_offset(lv, s19656c9f6, ABISELECT(6768,4420), "S19656C9.s19656c9f6");
    check_field_offset(lv, s19656c9f7, ABISELECT(6776,4424), "S19656C9.s19656c9f7");
    check_field_offset(lv, s19656c9f8, ABISELECT(6784,4428), "S19656C9.s19656c9f8");
    check_field_offset(lv, s19656c9f9, ABISELECT(6864,4472), "S19656C9.s19656c9f9");
    check_field_offset(lv, s19656c9f10, ABISELECT(7168,4672), "S19656C9.s19656c9f10");
    test_class_info(&lv, &cd_S19656C9);
    dp->~S19656C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C9(Test_S19656C9, "S19656C9", ABISELECT(13984,9160));

#else // __cplusplus

extern void _ZN8S19656C9C1Ev();
extern void _ZN8S19656C9D1Ev();
Name_Map name_map_S19656C9[] = {
  NSPAIR(_ZN8S19656C9C1Ev),
  NSPAIR(_ZN8S19656C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
static Base_Class bases_S19656C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19656C10_nt,    ABISELECT(7296,4768), //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_S19656C11_nt,    ABISELECT(296,200), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C6_nt,    ABISELECT(13536,8844), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C9[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
extern void ABISELECT(_ZThn296_N8S19656C9D1Ev,_ZThn200_N8S19656C9D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C9D0Ev,_ZThn200_N8S19656C9D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S19656C9[] = {
  ABISELECT(13536,8844),
  ABISELECT(7296,4768),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C9D1Ev,_ZThn200_N8S19656C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C9D0Ev,_ZThn200_N8S19656C9D0Ev),
  0,
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-13536,-8844),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTV8S19656C9[];
static  VTT_ENTRY vtt_S19656C9[] = {
  {&(_ZTV8S19656C9[4]),  4,23},
  {&(_ZTV8S19656C9[16]),  16,23},
  {&(_ZTV8S19656C9[21]),  21,23},
};
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
Class_Descriptor cd_S19656C9 = {  "S19656C9", // class name
  bases_S19656C9, 4,
  &(vtc_S19656C9[0]), // expected_vtbl_contents
  &(vtt_S19656C9[0]), // expected_vtt_contents
  ABISELECT(13984,9160), // object size
  NSPAIRA(_ZTI8S19656C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19656C9),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C9),3, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C8  : S19656C9 , S19656C6_nt , S19656C11_nt , S19656C10_nt , virtual S19656C4_nt {
  ::S19656C11_nt s19656c8f0;
  int s19656c8f1;
  void *s19656c8f2;
  void *s19656c8f3;
  __tsi64 s19656c8f4;
  __tsi64 s19656c8f5;
  int s19656c8f6;
  int s19656c8f7;
  void *s19656c8f8;
  int s19656c8f9;
  ::S19656C6_nt s19656c8f10;
  int s19656c8f11;
  virtual  ~S19656C8(); // _ZN8S19656C8D2Ev
  virtual void  v10(); // _ZN8S19656C83v10Ev
  virtual void  v11(); // _ZN8S19656C83v11Ev
  S19656C8(); // tgen
};
//SIG(-1 S19656C8) C1{ BC2{ BC3{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} VBC4{ v5 FC3[8] FC3[2] Fp Fi FC5{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} BC5 VBC6{ v6 v7 Fc FL[10] FD FC3 Fp Fs Fp Fi} v8 Fi:2 FD[7] Fp FC4 Fp Fi Fp[2] FC5 FC3 FD[8]} BC6 BC5 BC4 VBC3 vd v1 v2 FC5 Fi Fp[2] FL[2] Fi[2] Fp Fi FC6 Fi}


 S19656C8 ::~S19656C8(){ note_dtor("S19656C8", this);}
void  S19656C8 ::v10(){vfunc_called(this, "_ZN8S19656C83v10Ev");}
void  S19656C8 ::v11(){vfunc_called(this, "_ZN8S19656C83v11Ev");}
S19656C8 ::S19656C8(){ note_ctor("S19656C8", this);} // tgen

static void Test_S19656C8()
{
  extern Class_Descriptor cd_S19656C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1355,3552)];
    init_test(&cd_S19656C8, buf);
    S19656C8 *dp, &lv = *(dp=new (buf) S19656C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(21664,14204), "sizeof(S19656C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C8)");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), 0, "S19656C8");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(14672,9612), "S19656C8");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(296,200), "S19656C8");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(20912,13688), "S19656C8");
    check_base_class_offset(lv, (S19656C9*), 0, "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C6_nt */ AMB_check_base_class_offset(lv, (S19656C6_nt*), ABISELECT(7296,4768), "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*), ABISELECT(7744,5084), "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C10_nt */ AMB_check_base_class_offset(lv, (S19656C10_nt*), ABISELECT(7824,5128), "S19656C8");
    /*is_ambiguous_... S19656C8::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*), ABISELECT(21360,14004), "S19656C8");
    check_field_offset(lv, s19656c8f0, ABISELECT(14064,9204), "S19656C8.s19656c8f0");
    check_field_offset(lv, s19656c8f1, ABISELECT(14144,9248), "S19656C8.s19656c8f1");
    check_field_offset(lv, s19656c8f2, ABISELECT(14152,9252), "S19656C8.s19656c8f2");
    check_field_offset(lv, s19656c8f3, ABISELECT(14160,9256), "S19656C8.s19656c8f3");
    check_field_offset(lv, s19656c8f4, ABISELECT(14168,9260), "S19656C8.s19656c8f4");
    check_field_offset(lv, s19656c8f5, ABISELECT(14176,9268), "S19656C8.s19656c8f5");
    check_field_offset(lv, s19656c8f6, ABISELECT(14184,9276), "S19656C8.s19656c8f6");
    check_field_offset(lv, s19656c8f7, ABISELECT(14188,9280), "S19656C8.s19656c8f7");
    check_field_offset(lv, s19656c8f8, ABISELECT(14192,9284), "S19656C8.s19656c8f8");
    check_field_offset(lv, s19656c8f9, ABISELECT(14200,9288), "S19656C8.s19656c8f9");
    check_field_offset(lv, s19656c8f10, ABISELECT(14208,9292), "S19656C8.s19656c8f10");
    check_field_offset(lv, s19656c8f11, ABISELECT(14656,9608), "S19656C8.s19656c8f11");
    test_class_info(&lv, &cd_S19656C8);
    dp->~S19656C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C8(Test_S19656C8, "S19656C8", ABISELECT(21664,14204));

#else // __cplusplus

extern void _ZN8S19656C8C1Ev();
extern void _ZN8S19656C8D2Ev();
Name_Map name_map_S19656C8[] = {
  NSPAIR(_ZN8S19656C8C1Ev),
  NSPAIR(_ZN8S19656C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
static Base_Class bases_S19656C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19656C10_nt,    ABISELECT(14672,9612), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(20912,13688), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C9,    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_S19656C6_nt,    ABISELECT(7296,4768), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C11_nt,    ABISELECT(7744,5084), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C10_nt,    ABISELECT(7824,5128), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(21360,14004), //bcp->offset
    37, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C8[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void ABISELECT(_ZThn296_N8S19656C8D1Ev,_ZThn200_N8S19656C8D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C8D0Ev,_ZThn200_N8S19656C8D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19656C8D1Ev,_ZThn5084_N8S19656C8D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19656C8D0Ev,_ZThn5084_N8S19656C8D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S19656C8[] = {
  ABISELECT(21360,14004),
  ABISELECT(20912,13688),
  ABISELECT(14672,9612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C8D1Ev,_ZThn200_N8S19656C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C8D0Ev,_ZThn200_N8S19656C8D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C8D1Ev,_ZThn5084_N8S19656C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C8D0Ev,_ZThn5084_N8S19656C8D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-20912,-13688),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-21360,-14004),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S19656C8[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__8S19656C8[] = {
  ABISELECT(20912,13688),
  ABISELECT(14672,9612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__8S19656C8[] = {
  0,
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__8S19656C8[] = {
  0,
  0,
  ABISELECT(-20912,-13688),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C8[] = {
  {&(_ZTV8S19656C8[5]),  5,43},
  {&(_tg__ZTV8S19656C9__8S19656C8[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__8S19656C8[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__8S19656C8[4]),  4,6},
  {&(_ZTV8S19656C8[30]),  30,43},
  {&(_ZTV8S19656C8[35]),  35,43},
  {&(_ZTV8S19656C8[41]),  41,43},
};
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
Class_Descriptor cd_S19656C8 = {  "S19656C8", // class name
  bases_S19656C8, 9,
  &(vtc_S19656C8[0]), // expected_vtbl_contents
  &(vtt_S19656C8[0]), // expected_vtt_contents
  ABISELECT(21664,14204), // object size
  NSPAIRA(_ZTI8S19656C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19656C8),43, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C8),7, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C13  : virtual S19656C10_nt , virtual S19656C6_nt , virtual S19656C9 , S19656C11_nt {
  void *s19656c13f0;
  ::S19656C11_nt s19656c13f1;
  ::S19656C4_nt s19656c13f2;
  short s19656c13f3;
  ~S19656C13(); // tgen
  S19656C13(); // tgen
};
//SIG(-1 S19656C13) C1{ VBC2{ v1 FC3{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC3[2] Fp Fi FC4{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} VBC5{ v2 v3 Fc FL[10] FD FC3 Fp Fs Fp Fi} VBC6{ BC3 VBC2 BC4 VBC5 v6 Fi:2 FD[7] Fp FC2 Fp Fi Fp[2] FC4 FC3 FD[8]} BC4 Fp FC4 FC3 Fs}


S19656C13 ::~S19656C13(){ note_dtor("S19656C13", this);} // tgen
S19656C13 ::S19656C13(){ note_ctor("S19656C13", this);} // tgen

static void Test_S19656C13()
{
  extern Class_Descriptor cd_S19656C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(906,2365)];
    init_test(&cd_S19656C13, buf);
    S19656C13 *dp, &lv = *(dp=new (buf) S19656C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(14480,9456), "sizeof(S19656C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C13)");
    check_base_class_offset(lv, (S19656C10_nt*), ABISELECT(496,296), "S19656C13");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(496,296), "S19656C13");
    check_base_class_offset(lv, (S19656C6_nt*), ABISELECT(6736,4372), "S19656C13");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(6736,4372), "S19656C13");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(7184,4688), "S19656C13");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(7480,4888), "S19656C13");
    check_base_class_offset(lv, (S19656C9*), ABISELECT(7184,4688), "S19656C13");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*), 0, "S19656C13");
    check_field_offset(lv, s19656c13f0, ABISELECT(80,44), "S19656C13.s19656c13f0");
    check_field_offset(lv, s19656c13f1, ABISELECT(88,48), "S19656C13.s19656c13f1");
    check_field_offset(lv, s19656c13f2, ABISELECT(176,92), "S19656C13.s19656c13f2");
    check_field_offset(lv, s19656c13f3, ABISELECT(480,292), "S19656C13.s19656c13f3");
    test_class_info(&lv, &cd_S19656C13);
    dp->~S19656C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C13(Test_S19656C13, "S19656C13", ABISELECT(14480,9456));

#else // __cplusplus

extern void _ZN9S19656C13C1Ev();
extern void _ZN9S19656C13D1Ev();
Name_Map name_map_S19656C13[] = {
  NSPAIR(_ZN9S19656C13C1Ev),
  NSPAIR(_ZN9S19656C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
static Base_Class bases_S19656C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C10_nt,    ABISELECT(496,296), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C6_nt,    ABISELECT(6736,4372), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C4_nt,    ABISELECT(7184,4688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19656C11_nt,    ABISELECT(7480,4888), //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_S19656C9,    ABISELECT(7184,4688), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S19656C13[];
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn7184_N9S19656C13D1Ev,_ZThn4688_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn7184_N9S19656C13D0Ev,_ZThn4688_N9S19656C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY vtc_S19656C13[] = {
  ABISELECT(7184,4688),
  ABISELECT(6736,4372),
  ABISELECT(496,296),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
  0,
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-6736,-4372),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7184,-4688),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-7184,-4688),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
  ABISELECT(-7480,-4888),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19656C13[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C13[] = {
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__9S19656C13[] = {
  0,
  ABISELECT(6688,4392),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__9S19656C13[] = {
  0,
  0,
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C13[] = {
  {&(_ZTV9S19656C13[5]),  5,34},
  {&(_ZTV9S19656C13[10]),  10,34},
  {&(_ZTV9S19656C13[15]),  15,34},
  {&(_ZTV9S19656C13[25]),  25,34},
  {&(_ZTV9S19656C13[32]),  32,34},
  {&(_tg__ZTV8S19656C9__9S19656C13[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__9S19656C13[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__9S19656C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7184_N9S19656C13D0Ev,_ZThn4688_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7184_N9S19656C13D1Ev,_ZThn4688_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C13 = {  "S19656C13", // class name
  bases_S19656C13, 6,
  &(vtc_S19656C13[0]), // expected_vtbl_contents
  &(vtt_S19656C13[0]), // expected_vtt_contents
  ABISELECT(14480,9456), // object size
  NSPAIRA(_ZTI9S19656C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19656C13),34, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19656C13),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C12  : S19656C13 , S19656C4_nt , S19656C3_nt {
  ::S19656C8 s19656c12f0;
  ~S19656C12(); // tgen
  S19656C12(); // tgen
};
//SIG(-1 S19656C12) C1{ BC2{ VBC3{ v1 FC4{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC4[2] Fp Fi FC5{ vd m Fp FL Fp[7]} FC4[5] Fp[5] FC4[5]} VBC6{ v2 v3 Fc FL[10] FD FC4 Fp Fs Fp Fi} VBC7{ BC4 VBC3 BC5 VBC6 v6 Fi:2 FD[7] Fp FC3 Fp Fi Fp[2] FC5 FC4 FD[8]} BC5 Fp FC5 FC4 Fs} BC4 BC8{ vd v7 v8 Fi FC4 Fi[2] FU9{ m FL FD[10] FD Fs:0} FD Fi Fi FC6 FL Fi FC6} FC10{ BC7 BC6 BC5 BC3 VBC4 vd v9 v10 FC5 Fi Fp Fp FL FL Fi Fi Fp Fi FC6 Fi}}


S19656C12 ::~S19656C12(){ note_dtor("S19656C12", this);} // tgen
S19656C12 ::S19656C12(){ note_ctor("S19656C12", this);} // tgen

static void Test_S19656C12()
{
  extern Class_Descriptor cd_S19656C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2369,6216)];
    init_test(&cd_S19656C12, buf);
    S19656C12 *dp, &lv = *(dp=new (buf) S19656C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(37888,24860), "sizeof(S19656C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C12)");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C13*), ABISELECT(23904,15700), "S19656C12");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(23904,15700), "S19656C12");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C13*), ABISELECT(30144,19776), "S19656C12");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(30144,19776), "S19656C12");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(30592,20092), "S19656C12");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(30888,20292), "S19656C12");
    check_base_class_offset(lv, (S19656C9*)(S19656C13*), ABISELECT(30592,20092), "S19656C12");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C13*), 0, "S19656C12");
    check_base_class_offset(lv, (S19656C13*), 0, "S19656C12");
    /*is_ambiguous_... S19656C12::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*), ABISELECT(496,296), "S19656C12");
    check_base_class_offset(lv, (S19656C3_nt*), ABISELECT(800,496), "S19656C12");
    check_field_offset(lv, s19656c12f0, ABISELECT(2240,1496), "S19656C12.s19656c12f0");
    test_class_info(&lv, &cd_S19656C12);
    dp->~S19656C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C12(Test_S19656C12, "S19656C12", ABISELECT(37888,24860));

#else // __cplusplus

extern void _ZN9S19656C12C1Ev();
extern void _ZN9S19656C12D1Ev();
Name_Map name_map_S19656C12[] = {
  NSPAIR(_ZN9S19656C12C1Ev),
  NSPAIR(_ZN9S19656C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C13;
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
static Base_Class bases_S19656C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C10_nt,    ABISELECT(23904,15700), //bcp->offset
    17, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19656C6_nt,    ABISELECT(30144,19776), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19656C4_nt,    ABISELECT(30592,20092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19656C11_nt,    ABISELECT(30888,20292), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(30592,20092), //bcp->offset
    27, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19656C13,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(496,296), //bcp->offset
    7, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C3_nt,    ABISELECT(800,496), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19656C12[];
extern void _ZN9S19656C12D1Ev();
extern void _ZN9S19656C12D0Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void ABISELECT(_ZThn800_N9S19656C12D1Ev,_ZThn496_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn800_N9S19656C12D0Ev,_ZThn496_N9S19656C12D0Ev)();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C12D1Ev,_ZThn20092_N9S19656C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C12D0Ev,_ZThn20092_N9S19656C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev)();
static  VTBL_ENTRY vtc_S19656C12[] = {
  ABISELECT(30592,20092),
  ABISELECT(30144,19776),
  ABISELECT(23904,15700),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN9S19656C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C12D0Ev,
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-800,-496),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N9S19656C12D1Ev,_ZThn496_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N9S19656C12D0Ev,_ZThn496_N9S19656C12D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  ABISELECT(-23904,-15700),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-30144,-19776),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-30592,-20092),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-30592,-20092),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev),
  ABISELECT(-30888,-20292),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19656C12[];
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C13__9S19656C12[] = {
  ABISELECT(30592,20092),
  ABISELECT(30144,19776),
  ABISELECT(23904,15700),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C13__9S19656C12[] = {
  0,
  ABISELECT(-23904,-15700),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C13__9S19656C12[] = {
  0,
  0,
  ABISELECT(-30144,-19776),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C13D1Ev,_ZThn20092_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn30592_N9S19656C13D0Ev,_ZThn20092_N9S19656C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C13__9S19656C12[] = {
  ABISELECT(-30592,-20092),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-30592,-20092),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C13__9S19656C12[] = {
  ABISELECT(-30888,-20292),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C12[] = {
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__9S19656C12[] = {
  0,
  ABISELECT(6688,4392),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__9S19656C12[] = {
  0,
  0,
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C12[] = {
  {&(_ZTV9S19656C12[5]),  5,44},
  {&(_tg__ZTV9S19656C13__9S19656C12[5]),  5,7},
  {&(_tg__ZTV12S19656C10_nt__9S19656C13__9S19656C12[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C13__9S19656C12[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C13__9S19656C12[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C13__9S19656C12[2]),  2,4},
  {&(_ZTV9S19656C12[20]),  20,44},
  {&(_ZTV9S19656C12[25]),  25,44},
  {&(_ZTV9S19656C12[35]),  35,44},
  {&(_ZTV9S19656C12[42]),  42,44},
  {&(_tg__ZTV8S19656C9__9S19656C12[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__9S19656C12[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__9S19656C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19656C12[];
extern  VTBL_ENTRY _ZTV9S19656C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C12[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C13D0Ev,_ZThn20092_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C13D1Ev,_ZThn20092_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C12D0Ev,_ZThn20092_N9S19656C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19656C12D1Ev,_ZThn20092_N9S19656C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C12 = {  "S19656C12", // class name
  bases_S19656C12, 9,
  &(vtc_S19656C12[0]), // expected_vtbl_contents
  &(vtt_S19656C12[0]), // expected_vtt_contents
  ABISELECT(37888,24860), // object size
  NSPAIRA(_ZTI9S19656C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19656C12),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19656C12),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C7  : virtual S19656C3_nt , S19656C8 , S19656C12 {
  void *s19656c7f0;
  ::S19656C8 s19656c7f1;
  void *s19656c7f2[7];
  virtual  ~S19656C7(); // _ZN8S19656C7D2Ev
  S19656C7(); // tgen
};
//SIG(-1 S19656C7) C1{ VBC2{ vd v1 v2 Fi FC3{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU4{ m FL FD[10] FD Fs:0} FD Fi Fi FC5{ v6 v7 Fc FL[10] FD FC3 Fp Fs Fp Fi} FL Fi FC5} BC6{ BC7{ BC3 VBC8{ v5 FC3[8] FC3[2] Fp Fi FC9{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} BC9 VBC5 v8 Fi:2 FD[7] Fp FC8 Fp Fi Fp Fp FC9 FC3 FD[8]} BC5 BC9 BC8 VBC3 vd v9 v10 FC9 Fi Fp Fp FL FL Fi Fi Fp Fi FC5 Fi} BC10{ BC11{ VBC8 VBC5 VBC7 BC9 Fp FC9 FC3 Fs} BC3 BC2 FC6} vd Fp FC6 Fp[7]}


 S19656C7 ::~S19656C7(){ note_dtor("S19656C7", this);}
S19656C7 ::S19656C7(){ note_ctor("S19656C7", this);} // tgen

static void Test_S19656C7()
{
  extern Class_Descriptor cd_S19656C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4754,12478)];
    init_test(&cd_S19656C7, buf);
    S19656C7 *dp, &lv = *(dp=new (buf) S19656C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(76048,49908), "sizeof(S19656C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C7)");
    /*is_ambiguous_... S19656C7::S19656C3_nt */ AMB_check_base_class_offset(lv, (S19656C3_nt*), ABISELECT(60320,39548), "S19656C7");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*)(S19656C8*), 0, "S19656C7");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*)(S19656C8*), ABISELECT(61760,40548), "S19656C7");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C13*)(S19656C12*), ABISELECT(61760,40548), "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(61760,40548), "S19656C7");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*)(S19656C8*), ABISELECT(296,200), "S19656C7");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*)(S19656C8*), ABISELECT(68000,44624), "S19656C7");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C13*)(S19656C12*), ABISELECT(68000,44624), "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(68000,44624), "S19656C7");
    check_base_class_offset(lv, (S19656C9*)(S19656C8*), 0, "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C6_nt */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C8*), ABISELECT(7296,4768), "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C8*), ABISELECT(7744,5084), "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C10_nt */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C8*), ABISELECT(7824,5128), "S19656C7");
    /*is_ambiguous_... S19656C8::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C8*), ABISELECT(68448,44940), "S19656C7");
    check_base_class_offset(lv, (S19656C8*), 0, "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(68752,45140), "S19656C7");
    /*is_ambiguous_... S19656C7::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(69048,45340), "S19656C7");
    check_base_class_offset(lv, (S19656C9*)(S19656C13*)(S19656C12*), ABISELECT(68752,45140), "S19656C7");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C13*)(S19656C12*), ABISELECT(14672,9612), "S19656C7");
    check_base_class_offset(lv, (S19656C13*)(S19656C12*), ABISELECT(14672,9612), "S19656C7");
    /*is_ambiguous_... S19656C12::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C12*), ABISELECT(15168,9908), "S19656C7");
    check_base_class_offset(lv, (S19656C3_nt*)(S19656C12*), ABISELECT(15472,10108), "S19656C7");
    check_base_class_offset(lv, (S19656C12*), ABISELECT(14672,9612), "S19656C7");
    check_field_offset(lv, s19656c7f0, ABISELECT(38576,25312), "S19656C7.s19656c7f0");
    check_field_offset(lv, s19656c7f1, ABISELECT(38592,25316), "S19656C7.s19656c7f1");
    check_field_offset(lv, s19656c7f2, ABISELECT(60256,39520), "S19656C7.s19656c7f2");
    test_class_info(&lv, &cd_S19656C7);
    dp->~S19656C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C7(Test_S19656C7, "S19656C7", ABISELECT(76048,49908));

#else // __cplusplus

extern void _ZN8S19656C7C1Ev();
extern void _ZN8S19656C7D2Ev();
Name_Map name_map_S19656C7[] = {
  NSPAIR(_ZN8S19656C7C1Ev),
  NSPAIR(_ZN8S19656C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C8;
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C13;
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C12;
extern VTBL_ENTRY _ZTI9S19656C12[];
extern  VTBL_ENTRY _ZTV9S19656C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C12[];
static Base_Class bases_S19656C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C3_nt,    ABISELECT(60320,39548), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    5, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(61760,40548), //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //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
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(68000,44624), //bcp->offset
    59, //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
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19656C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(7296,4768), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(7744,5084), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(7824,5128), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(68448,44940), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19656C8,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(68752,45140), //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(69048,45340), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(68752,45140), //bcp->offset
    71, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19656C13,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(15168,9908), //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
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19656C3_nt,    ABISELECT(15472,10108), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19656C12,    ABISELECT(14672,9612), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //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 _ZTI8S19656C7[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C7D1Ev();
extern void _ZN8S19656C7D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void ABISELECT(_ZThn296_N8S19656C7D1Ev,_ZThn200_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C7D0Ev,_ZThn200_N8S19656C7D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19656C7D1Ev,_ZThn5084_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19656C7D0Ev,_ZThn5084_N8S19656C7D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev)();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void ABISELECT(_ZThn15472_N8S19656C7D1Ev,_ZThn10108_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn15472_N8S19656C7D0Ev,_ZThn10108_N8S19656C7D0Ev)();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn60320_N8S19656C7D1Ev,_ZThn39548_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn60320_N8S19656C7D0Ev,_ZThn39548_N8S19656C7D0Ev)() __attribute__((weak));
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn68752_N8S19656C7D1Ev,_ZThn45140_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn68752_N8S19656C7D0Ev,_ZThn45140_N8S19656C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev)();
static  VTBL_ENTRY vtc_S19656C7[] = {
  ABISELECT(68752,45140),
  ABISELECT(60320,39548),
  ABISELECT(68448,44940),
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C7D1Ev,_ZThn200_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C7D0Ev,_ZThn200_N8S19656C7D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C7D1Ev,_ZThn5084_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C7D0Ev,_ZThn5084_N8S19656C7D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev),
  ABISELECT(-15168,-9908),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-15472,-10108),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C7D1Ev,_ZThn10108_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C7D0Ev,_ZThn10108_N8S19656C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  0,
  ABISELECT(-60320,-39548),
  ABISELECT(-60320,-39548),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-68448,-44940),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-68752,-45140),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68752,-45140),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev),
  ABISELECT(-69048,-45340),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19656C7[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C8__8S19656C7[] = {
  ABISELECT(68448,44940),
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C98S19656C8__8S19656C7[] = {
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C98S19656C8__8S19656C7[] = {
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C98S19656C8__8S19656C7[] = {
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C8__8S19656C7[] = {
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C8__8S19656C7[] = {
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C8__8S19656C7[] = {
  0,
  0,
  ABISELECT(-68448,-44940),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void _ZN9S19656C12D1Ev();
extern void _ZN9S19656C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C12__8S19656C7[] = {
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN9S19656C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C12D0Ev,
};
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C139S19656C12__8S19656C7[] = {
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C139S19656C12__8S19656C7[] = {
  0,
  ABISELECT(-47088,-30936),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C139S19656C12__8S19656C7[] = {
  0,
  0,
  ABISELECT(-53328,-35012),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C13D1Ev,_ZThn35528_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C13D0Ev,_ZThn35528_N9S19656C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C139S19656C12__8S19656C7[] = {
  ABISELECT(-54080,-35528),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-54080,-35528),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C12__8S19656C7[] = {
  ABISELECT(-54376,-35728),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C12__8S19656C7[] = {
  0,
  ABISELECT(-47088,-30936),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C12__8S19656C7[] = {
  0,
  0,
  ABISELECT(-53328,-35012),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C12D1Ev,_ZThn35528_N9S19656C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev)();
extern void ABISELECT(_ZThn54080_N9S19656C12D0Ev,_ZThn35528_N9S19656C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C12__8S19656C7[] = {
  ABISELECT(-54080,-35528),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-54080,-35528),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C12__8S19656C7[] = {
  ABISELECT(-54376,-35728),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__A1__8S19656C7[] = {
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C7[] = {
  0,
  ABISELECT(6992,4592),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C7[] = {
  0,
  0,
  ABISELECT(752,516),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C7[] = {
  {&(_ZTV8S19656C7[7]),  7,88},
  {&(_tg__ZTV8S19656C8__8S19656C7[5]),  5,12},
  {&(_tg__ZTV8S19656C98S19656C8__8S19656C7[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C98S19656C8__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C98S19656C8__8S19656C7[4]),  4,6},
  {&(_tg__ZTV12S19656C10_nt__8S19656C8__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C8__8S19656C7[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C8__8S19656C7[4]),  4,6},
  {&(_tg__ZTV9S19656C12__8S19656C7[5]),  5,7},
  {&(_tg__ZTV9S19656C139S19656C12__8S19656C7[5]),  5,7},
  {&(_tg__ZTV12S19656C10_nt__9S19656C139S19656C12__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C139S19656C12__8S19656C7[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C139S19656C12__8S19656C7[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C12__8S19656C7[2]),  2,4},
  {&(_tg__ZTV12S19656C10_nt__9S19656C12__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C12__8S19656C7[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C12__8S19656C7[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C12__8S19656C7[2]),  2,4},
  {&(_ZTV8S19656C7[51]),  51,88},
  {&(_ZTV8S19656C7[58]),  58,88},
  {&(_ZTV8S19656C7[63]),  63,88},
  {&(_ZTV8S19656C7[69]),  69,88},
  {&(_ZTV8S19656C7[34]),  34,88},
  {&(_ZTV8S19656C7[79]),  79,88},
  {&(_ZTV8S19656C7[86]),  86,88},
  {&(_tg__ZTV8S19656C9__A1__8S19656C7[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C7[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19656C7[];
extern  VTBL_ENTRY _ZTV8S19656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C7[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C12D0Ev,_ZThn35528_N9S19656C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C12D1Ev,_ZThn35528_N9S19656C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C13D0Ev,_ZThn35528_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19656C13D1Ev,_ZThn35528_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68752_N8S19656C7D0Ev,_ZThn45140_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68752_N8S19656C7D1Ev,_ZThn45140_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60320_N8S19656C7D0Ev,_ZThn39548_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60320_N8S19656C7D1Ev,_ZThn39548_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C7 = {  "S19656C7", // class name
  bases_S19656C7, 19,
  &(vtc_S19656C7[0]), // expected_vtbl_contents
  &(vtt_S19656C7[0]), // expected_vtt_contents
  ABISELECT(76048,49908), // object size
  NSPAIRA(_ZTI8S19656C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19656C7),88, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C7),28, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19656C1  : virtual S19656C2_nt , virtual S19656C3_nt , S19656C7 , S19656C8 {
  short s19656c1f0:5;
  void *s19656c1f1;
  long s19656c1f2;
  long s19656c1f3;
  char s19656c1f4[2];
  int s19656c1f5;
  ::S19656C2_nt s19656c1f6[10];
  int s19656c1f7;
  int s19656c1f8:5;
  virtual  ~S19656C1(); // _ZN8S19656C1D2Ev
  virtual void  v1(); // _ZN8S19656C12v1Ev
  S19656C1(); // tgen
};
//SIG(1 S19656C1) C1{ VBC2{ m Fc} VBC3{ vd v2 v3 Fi FC4{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU5{ m FL FD[10] FD Fs:0} FD Fi Fi FC6{ v7 v8 Fc FL[10] FD FC4 Fp Fs Fp Fi} FL Fi FC6} BC7{ VBC3 BC8{ BC9{ BC4 VBC10{ v6 FC4[8] FC4[2] Fp Fi FC11{ vd m Fp FL Fp[7]} FC4[5] Fp[5] FC4[5]} BC11 VBC6 v9 Fi:2 FD[7] Fp FC10 Fp Fi Fp Fp FC11 FC4 FD[8]} BC6 BC11 BC10 VBC4 vd v10 v11 FC11 Fi Fp Fp FL FL Fi Fi Fp Fi FC6 Fi} BC12{ BC13{ VBC10 VBC6 VBC9 BC11 Fp FC11 FC4 Fs} BC4 BC3 FC8} vd Fp FC8 Fp[7]} BC8 vd v1 Fs:5 Fp Fl Fl Fc[2] Fi FC2[10] Fi Fi:5}


 S19656C1 ::~S19656C1(){ note_dtor("S19656C1", this);}
void  S19656C1 ::v1(){vfunc_called(this, "_ZN8S19656C12v1Ev");}
S19656C1 ::S19656C1(){ note_ctor("S19656C1", this);} // tgen

static void Test_S19656C1()
{
  extern Class_Descriptor cd_S19656C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5674,14892)];
    init_test(&cd_S19656C1, buf);
    S19656C1 *dp, &lv = *(dp=new (buf) S19656C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(90768,59564), "sizeof(S19656C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19656C1)");
    check_base_class_offset(lv, (S19656C2_nt*), ABISELECT(75033,49201), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C3_nt */ AMB_check_base_class_offset(lv, (S19656C3_nt*), ABISELECT(75040,49204), "S19656C1");
    /*is_ambiguous_... S19656C7::S19656C3_nt */ AMB_check_base_class_offset(lv, (S19656C3_nt*)(S19656C7*), ABISELECT(75040,49204), "S19656C1");
    check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*)(S19656C8*)(S19656C7*), 0, "S19656C1");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*)(S19656C8*)(S19656C7*), ABISELECT(76480,50204), "S19656C1");
    check_base_class_offset(lv, (S19656C10_nt*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(76480,50204), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*), ABISELECT(76480,50204), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C9*)(S19656C8*), ABISELECT(76480,50204), "S19656C1");
    check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*)(S19656C8*)(S19656C7*), ABISELECT(296,200), "S19656C1");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*)(S19656C8*)(S19656C7*), ABISELECT(82720,54280), "S19656C1");
    check_base_class_offset(lv, (S19656C6_nt*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(82720,54280), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*), ABISELECT(82720,54280), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C9*)(S19656C8*), ABISELECT(82720,54280), "S19656C1");
    check_base_class_offset(lv, (S19656C9*)(S19656C8*)(S19656C7*), 0, "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C6_nt */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C8*)(S19656C7*), ABISELECT(7296,4768), "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C8*)(S19656C7*), ABISELECT(7744,5084), "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C10_nt */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C8*)(S19656C7*), ABISELECT(7824,5128), "S19656C1");
    /*is_ambiguous_... S19656C8::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C8*)(S19656C7*), ABISELECT(83168,54596), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C8*), ABISELECT(83168,54596), "S19656C1");
    check_base_class_offset(lv, (S19656C8*)(S19656C7*), 0, "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*), ABISELECT(83472,54796), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C9 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*), ABISELECT(83768,54996), "S19656C1");
    check_base_class_offset(lv, (S19656C9*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(83472,54796), "S19656C1");
    /*is_ambiguous_... S19656C13::S19656C11_nt */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(14672,9612), "S19656C1");
    check_base_class_offset(lv, (S19656C13*)(S19656C12*)(S19656C7*), ABISELECT(14672,9612), "S19656C1");
    /*is_ambiguous_... S19656C12::S19656C4_nt */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C12*)(S19656C7*), ABISELECT(15168,9908), "S19656C1");
    check_base_class_offset(lv, (S19656C3_nt*)(S19656C12*)(S19656C7*), ABISELECT(15472,10108), "S19656C1");
    check_base_class_offset(lv, (S19656C12*)(S19656C7*), ABISELECT(14672,9612), "S19656C1");
    check_base_class_offset(lv, (S19656C7*), 0, "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C4_nt*)(S19656C9*)(S19656C8*), ABISELECT(60320,39548), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C9*)(S19656C8*), ABISELECT(60616,39748), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C9*)(S19656C8*), ABISELECT(60320,39548), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C6_nt*)(S19656C8*), ABISELECT(67616,44316), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C11_nt*)(S19656C8*), ABISELECT(68064,44632), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C10_nt*)(S19656C8*), ABISELECT(68144,44676), "S19656C1");
    /*is_ambiguous_... S19656C1::S19656C8 */ AMB_check_base_class_offset(lv, (S19656C8*), ABISELECT(60320,39548), "S19656C1");
    set_bf_and_test(lv, s19656c1f0, ABISELECT(74980,49160), 0, 5, 1, "S19656C1");
    set_bf_and_test(lv, s19656c1f0, ABISELECT(74980,49160), 0, 5, hide_sll(1LL<<4), "S19656C1");
    check_field_offset(lv, s19656c1f1, ABISELECT(74984,49164), "S19656C1.s19656c1f1");
    check_field_offset(lv, s19656c1f2, ABISELECT(74992,49168), "S19656C1.s19656c1f2");
    check_field_offset(lv, s19656c1f3, ABISELECT(75000,49172), "S19656C1.s19656c1f3");
    check_field_offset(lv, s19656c1f4, ABISELECT(75008,49176), "S19656C1.s19656c1f4");
    check_field_offset(lv, s19656c1f5, ABISELECT(75012,49180), "S19656C1.s19656c1f5");
    check_field_offset(lv, s19656c1f6, ABISELECT(75016,49184), "S19656C1.s19656c1f6");
    check_field_offset(lv, s19656c1f7, ABISELECT(75028,49196), "S19656C1.s19656c1f7");
    set_bf_and_test(lv, s19656c1f8, ABISELECT(75032,49200), 0, 5, 1, "S19656C1");
    set_bf_and_test(lv, s19656c1f8, ABISELECT(75032,49200), 0, 5, hide_sll(1LL<<4), "S19656C1");
    test_class_info(&lv, &cd_S19656C1);
    dp->~S19656C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19656C1(Test_S19656C1, "S19656C1", ABISELECT(90768,59564));

#else // __cplusplus

extern void _ZN8S19656C1C1Ev();
extern void _ZN8S19656C1D2Ev();
Name_Map name_map_S19656C1[] = {
  NSPAIR(_ZN8S19656C1C1Ev),
  NSPAIR(_ZN8S19656C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19656C2_nt;
extern VTBL_ENTRY _ZTI11S19656C2_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C8;
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C13;
extern VTBL_ENTRY _ZTI9S19656C13[];
extern  VTBL_ENTRY _ZTV9S19656C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C13[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C3_nt;
extern VTBL_ENTRY _ZTI11S19656C3_nt[];
extern  VTBL_ENTRY _ZTV11S19656C3_nt[];
extern Class_Descriptor cd_S19656C12;
extern VTBL_ENTRY _ZTI9S19656C12[];
extern  VTBL_ENTRY _ZTV9S19656C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19656C12[];
extern Class_Descriptor cd_S19656C7;
extern VTBL_ENTRY _ZTI8S19656C7[];
extern  VTBL_ENTRY _ZTV8S19656C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C7[];
extern Class_Descriptor cd_S19656C4_nt;
extern VTBL_ENTRY _ZTI11S19656C4_nt[];
extern  VTBL_ENTRY _ZTV11S19656C4_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C9;
extern VTBL_ENTRY _ZTI8S19656C9[];
extern  VTBL_ENTRY _ZTV8S19656C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C9[];
extern Class_Descriptor cd_S19656C6_nt;
extern VTBL_ENTRY _ZTI11S19656C6_nt[];
extern  VTBL_ENTRY _ZTV11S19656C6_nt[];
extern Class_Descriptor cd_S19656C11_nt;
extern VTBL_ENTRY _ZTI12S19656C11_nt[];
extern  VTBL_ENTRY _ZTV12S19656C11_nt[];
extern Class_Descriptor cd_S19656C10_nt;
extern VTBL_ENTRY _ZTI12S19656C10_nt[];
extern  VTBL_ENTRY _ZTV12S19656C10_nt[];
extern Class_Descriptor cd_S19656C8;
extern VTBL_ENTRY _ZTI8S19656C8[];
extern  VTBL_ENTRY _ZTV8S19656C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C8[];
static Base_Class bases_S19656C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19656C2_nt,    ABISELECT(75033,49201), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19656C3_nt,    ABISELECT(75040,49204), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19656C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(76480,50204), //bcp->offset
    84, //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(296,200), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(82720,54280), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19656C9,    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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(7296,4768), //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
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(7744,5084), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(7824,5128), //bcp->offset
    28, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(83168,54596), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19656C8,    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
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(83472,54796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(83768,54996), //bcp->offset
    113, //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
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(83472,54796), //bcp->offset
    100, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19656C11_nt,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19656C13,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19656C4_nt,    ABISELECT(15168,9908), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19656C3_nt,    ABISELECT(15472,10108), //bcp->offset
    42, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S19656C12,    ABISELECT(14672,9612), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19656C7,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19656C4_nt,    ABISELECT(60320,39548), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(60616,39748), //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
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19656C9,    ABISELECT(60320,39548), //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
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C6_nt,    ABISELECT(67616,44316), //bcp->offset
    64, //bcp->virtual_function_table_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
    27, //immediately_derived
  0, 0},
  {&cd_S19656C11_nt,    ABISELECT(68064,44632), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C10_nt,    ABISELECT(68144,44676), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19656C8,    ABISELECT(60320,39548), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19656C1[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C1D1Ev();
extern void _ZN8S19656C1D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void _ZN8S19656C12v1Ev();
extern void ABISELECT(_ZThn296_N8S19656C1D1Ev,_ZThn200_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn296_N8S19656C1D0Ev,_ZThn200_N8S19656C1D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19656C1D1Ev,_ZThn5084_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19656C1D0Ev,_ZThn5084_N8S19656C1D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void ABISELECT(_ZThn14672_N8S19656C1D1Ev,_ZThn9612_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19656C1D0Ev,_ZThn9612_N8S19656C1D0Ev)();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void ABISELECT(_ZThn15472_N8S19656C1D1Ev,_ZThn10108_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn15472_N8S19656C1D0Ev,_ZThn10108_N8S19656C1D0Ev)();
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZThn60320_N8S19656C1D1Ev,_ZThn39548_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn60320_N8S19656C1D0Ev,_ZThn39548_N8S19656C1D0Ev)();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
extern void ABISELECT(_ZThn60616_N8S19656C1D1Ev,_ZThn39748_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn60616_N8S19656C1D0Ev,_ZThn39748_N8S19656C1D0Ev)();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void ABISELECT(_ZThn68064_N8S19656C1D1Ev,_ZThn44632_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn68064_N8S19656C1D0Ev,_ZThn44632_N8S19656C1D0Ev)();
extern void _ZN12S19656C10_nt2v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S19656C1D1Ev,_ZTv0_n12_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C1D1Ev,_ZThn49204_N8S19656C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19656C1D0Ev,_ZTv0_n12_N8S19656C1D0Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C1D0Ev,_ZThn49204_N8S19656C1D0Ev)() __attribute__((weak));
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
extern void _ZN12S19656C10_nt2v6Ev();
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19656C1D1Ev,_ZTv0_n32_N8S19656C1D1Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C1D1Ev,_ZThn54796_N8S19656C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19656C1D0Ev,_ZTv0_n32_N8S19656C1D0Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C1D0Ev,_ZThn54796_N8S19656C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N8S19656C1D1Ev,_ZTvn200_n32_N8S19656C1D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19656C1D0Ev,_ZTvn200_n32_N8S19656C1D0Ev)();
static  VTBL_ENTRY vtc_S19656C1[] = {
  ABISELECT(75033,49201),
  ABISELECT(83472,54796),
  ABISELECT(75040,49204),
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  (VTBL_ENTRY)&_ZN8S19656C12v1Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C1D1Ev,_ZThn200_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19656C1D0Ev,_ZThn200_N8S19656C1D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C1D1Ev,_ZThn5084_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19656C1D0Ev,_ZThn5084_N8S19656C1D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C1D1Ev,_ZThn9612_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C1D0Ev,_ZThn9612_N8S19656C1D0Ev),
  ABISELECT(-15168,-9908),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-15472,-10108),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C1D1Ev,_ZThn10108_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19656C1D0Ev,_ZThn10108_N8S19656C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  ABISELECT(22848,15048),
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  ABISELECT(-60320,-39548),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn60320_N8S19656C1D1Ev,_ZThn39548_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn60320_N8S19656C1D0Ev,_ZThn39548_N8S19656C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
  ABISELECT(-60616,-39748),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn60616_N8S19656C1D1Ev,_ZThn39748_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn60616_N8S19656C1D0Ev,_ZThn39748_N8S19656C1D0Ev),
  ABISELECT(-67616,-44316),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  ABISELECT(-68064,-44632),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn68064_N8S19656C1D1Ev,_ZThn44632_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn68064_N8S19656C1D0Ev,_ZThn44632_N8S19656C1D0Ev),
  ABISELECT(-68144,-44676),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-75040,-49204),
  ABISELECT(-75040,-49204),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C1D1Ev,_ZTv0_n12_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C1D0Ev,_ZTv0_n12_N8S19656C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  ABISELECT(-83472,-54796),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-83472,-54796),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C1D1Ev,_ZTv0_n32_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C1D0Ev,_ZTv0_n32_N8S19656C1D0Ev),
  ABISELECT(-83768,-54996),
  (VTBL_ENTRY)&(_ZTI8S19656C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C1D1Ev,_ZTvn200_n32_N8S19656C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C1D0Ev,_ZTvn200_n32_N8S19656C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19656C1[];
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C7D1Ev();
extern void _ZN8S19656C7D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C7__8S19656C1[] = {
  ABISELECT(83472,54796),
  ABISELECT(75040,49204),
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C88S19656C7__8S19656C1[] = {
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C98S19656C88S19656C7__8S19656C1[] = {
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C98S19656C88S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C98S19656C88S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C88S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C88S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C88S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void _ZN9S19656C12D1Ev();
extern void _ZN9S19656C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN9S19656C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C12D0Ev,
};
extern void _ZN9S19656C13D1Ev();
extern void _ZN9S19656C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19656C139S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN9S19656C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19656C13D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-61808,-40592),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-68048,-44668),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C13D1Ev,_ZThn45184_N9S19656C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C13D0Ev,_ZThn45184_N9S19656C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-68800,-45184),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68800,-45184),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-69096,-45384),
  (VTBL_ENTRY)&(_ZTI9S19656C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D1Ev,_ZTvn200_n32_N9S19656C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C13D0Ev,_ZTvn200_n32_N9S19656C13D0Ev),
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__9S19656C128S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-61808,-40592),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__9S19656C128S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-68048,-44668),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C12D1Ev,_ZThn45184_N9S19656C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev)();
extern void ABISELECT(_ZThn68800_N9S19656C12D0Ev,_ZThn45184_N9S19656C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__9S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-68800,-45184),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68800,-45184),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__9S19656C128S19656C7__8S19656C1[] = {
  ABISELECT(-69096,-45384),
  (VTBL_ENTRY)&(_ZTI9S19656C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D1Ev,_ZTvn200_n32_N9S19656C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19656C12D0Ev,_ZTvn200_n32_N9S19656C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C7D1Ev,_ZThn49204_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn75040_N8S19656C7D0Ev,_ZThn49204_N8S19656C7D0Ev)() __attribute__((weak));
extern void _ZN11S19656C3_nt2v2Ev();
extern void _ZN11S19656C3_nt2v3Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C3_nt__8S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-75040,-49204),
  ABISELECT(-75040,-49204),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19656C3_nt2v3Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C7__8S19656C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C7__8S19656C1[] = {
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19656C12__8S19656C7__8S19656C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D1Ev,_ZThn9612_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19656C7D0Ev,_ZThn9612_N8S19656C7D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C7D1Ev,_ZThn54796_N8S19656C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev)();
extern void ABISELECT(_ZThn83472_N8S19656C7D0Ev,_ZThn54796_N8S19656C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19656C9__A1__8S19656C7__8S19656C1[] = {
  ABISELECT(-83472,-54796),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-83472,-54796),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19656C11_nt8S19656C9__A2__8S19656C7__8S19656C1[] = {
  ABISELECT(-83768,-54996),
  (VTBL_ENTRY)&(_ZTI8S19656C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D1Ev,_ZTvn200_n32_N8S19656C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19656C7D0Ev,_ZTvn200_n32_N8S19656C7D0Ev),
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C8D1Ev();
extern void _ZN8S19656C8D0Ev();
extern void _ZN8S19656C83v10Ev();
extern void _ZN8S19656C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C8__A1__8S19656C1[] = {
  ABISELECT(22848,15048),
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19656C83v11Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C98S19656C8__A2__8S19656C1[] = {
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C98S19656C8__A2__8S19656C1[] = {
  0,
  ABISELECT(-16160,-10656),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C98S19656C8__A2__8S19656C1[] = {
  0,
  0,
  ABISELECT(-22400,-14732),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C8__A1__8S19656C1[] = {
  0,
  ABISELECT(-16160,-10656),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C8__A1__8S19656C1[] = {
  0,
  0,
  ABISELECT(-22400,-14732),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C4_nt__A1__8S19656C8__A1__8S19656C1[] = {
  0,
  0,
  ABISELECT(-22848,-15048),
  (VTBL_ENTRY)&(_ZTI8S19656C8[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
};
extern void _ZN11S19656C4_nt2v4Ev();
extern void _ZN11S19656C4_nt2v5Ev();
extern void _ZN8S19656C92v9Ev();
extern void _ZN8S19656C9D1Ev();
extern void _ZN8S19656C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19656C9__A1__8S19656C1[] = {
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19656C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19656C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19656C9D0Ev,
};
extern void _ZN12S19656C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C1[] = {
  0,
  ABISELECT(6992,4592),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN12S19656C10_nt2v6Ev,
};
extern void _ZN11S19656C6_nt2v7Ev();
extern void _ZN11S19656C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C1[] = {
  0,
  0,
  ABISELECT(752,516),
  (VTBL_ENTRY)&(_ZTI8S19656C9[0]),
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19656C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19656C1[] = {
  {&(_ZTV8S19656C1[8]),  8,117},
  {&(_tg__ZTV8S19656C7__8S19656C1[7]),  7,14},
  {&(_tg__ZTV8S19656C88S19656C7__8S19656C1[5]),  5,12},
  {&(_tg__ZTV8S19656C98S19656C88S19656C7__8S19656C1[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C98S19656C88S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C98S19656C88S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV12S19656C10_nt__8S19656C88S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C88S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C88S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV9S19656C128S19656C7__8S19656C1[5]),  5,7},
  {&(_tg__ZTV9S19656C139S19656C128S19656C7__8S19656C1[5]),  5,7},
  {&(_tg__ZTV12S19656C10_nt__9S19656C139S19656C128S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C139S19656C128S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C139S19656C128S19656C7__8S19656C1[2]),  2,4},
  {&(_tg__ZTV12S19656C10_nt__9S19656C128S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__9S19656C128S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV8S19656C9__9S19656C128S19656C7__8S19656C1[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__9S19656C128S19656C7__8S19656C1[2]),  2,4},
  {&(_tg__ZTV11S19656C3_nt__8S19656C7__8S19656C1[5]),  5,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C7__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C7__8S19656C1[4]),  4,6},
  {&(_tg__ZTV9S19656C12__8S19656C7__8S19656C1[5]),  5,7},
  {&(_tg__ZTV8S19656C9__A1__8S19656C7__8S19656C1[8]),  8,13},
  {&(_tg__ZTV12S19656C11_nt8S19656C9__A2__8S19656C7__8S19656C1[2]),  2,4},
  {&(_tg__ZTV8S19656C8__A1__8S19656C1[5]),  5,12},
  {&(_tg__ZTV8S19656C98S19656C8__A2__8S19656C1[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C98S19656C8__A2__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C98S19656C8__A2__8S19656C1[4]),  4,6},
  {&(_tg__ZTV12S19656C10_nt__8S19656C8__A1__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C8__A1__8S19656C1[4]),  4,6},
  {&(_tg__ZTV11S19656C4_nt__A1__8S19656C8__A1__8S19656C1[4]),  4,6},
  {&(_ZTV8S19656C1[80]),  80,117},
  {&(_ZTV8S19656C1[87]),  87,117},
  {&(_ZTV8S19656C1[92]),  92,117},
  {&(_ZTV8S19656C1[98]),  98,117},
  {&(_ZTV8S19656C1[36]),  36,117},
  {&(_ZTV8S19656C1[108]),  108,117},
  {&(_ZTV8S19656C1[115]),  115,117},
  {&(_ZTV8S19656C1[53]),  53,117},
  {&(_tg__ZTV8S19656C9__A1__8S19656C1[4]),  4,9},
  {&(_tg__ZTV12S19656C10_nt__8S19656C9__A1__8S19656C1[3]),  3,4},
  {&(_tg__ZTV11S19656C6_nt__8S19656C9__A1__8S19656C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19656C1[];
extern  VTBL_ENTRY _ZTV8S19656C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19656C1[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D0Ev,_ZTv0_n32_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C7D0Ev,_ZThn54796_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C7D1Ev,_ZTv0_n32_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C7D1Ev,_ZThn54796_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D0Ev,_ZTv0_n12_N8S19656C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C7D0Ev,_ZThn49204_N8S19656C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C7D1Ev,_ZTv0_n12_N8S19656C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C7D1Ev,_ZThn49204_N8S19656C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D0Ev,_ZTv0_n32_N9S19656C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C12D0Ev,_ZThn45184_N9S19656C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C12D1Ev,_ZTv0_n32_N9S19656C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C12D1Ev,_ZThn45184_N9S19656C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D0Ev,_ZTv0_n32_N9S19656C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C13D0Ev,_ZThn45184_N9S19656C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19656C13D1Ev,_ZTv0_n32_N9S19656C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19656C13D1Ev,_ZThn45184_N9S19656C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C1D0Ev,_ZTv0_n32_N8S19656C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C1D0Ev,_ZThn54796_N8S19656C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19656C1D1Ev,_ZTv0_n32_N8S19656C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19656C1D1Ev,_ZThn54796_N8S19656C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C1D0Ev,_ZTv0_n12_N8S19656C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C1D0Ev,_ZThn49204_N8S19656C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19656C1D1Ev,_ZTv0_n12_N8S19656C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19656C1D1Ev,_ZThn49204_N8S19656C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19656C1 = {  "S19656C1", // class name
  bases_S19656C1, 28,
  &(vtc_S19656C1[0]), // expected_vtbl_contents
  &(vtt_S19656C1[0]), // expected_vtt_contents
  ABISELECT(90768,59564), // object size
  NSPAIRA(_ZTI8S19656C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19656C1),117, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19656C1),44, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C4  {
  int s1532c4f0;
  __tsi64 s1532c4f1;
  void *s1532c4f2[4];
  int s1532c4f3[2];
  void *s1532c4f4;
  ::S3423C4_nt s1532c4f5;
  void *s1532c4f6[2];
  virtual  ~S1532C4(); // _ZN7S1532C4D1Ev
  virtual void  v6(); // _ZN7S1532C42v6Ev
  virtual void  v7(); // _ZN7S1532C42v7Ev
  virtual void  v8(); // _ZN7S1532C42v8Ev
  virtual void  v9(); // _ZN7S1532C42v9Ev
  virtual void  v10(); // _ZN7S1532C43v10Ev
  virtual void  v11(); // _ZN7S1532C43v11Ev
  virtual void  v12(); // _ZN7S1532C43v12Ev
  virtual void  v13(); // _ZN7S1532C43v13Ev
  virtual void  v14(); // _ZN7S1532C43v14Ev
  virtual void  v15(); // _ZN7S1532C43v15Ev
  virtual void  v16(); // _ZN7S1532C43v16Ev
  virtual void  v17(); // _ZN7S1532C43v17Ev
  virtual void  v18(); // _ZN7S1532C43v18Ev
  virtual void  v19(); // _ZN7S1532C43v19Ev
  virtual void  v20(); // _ZN7S1532C43v20Ev
  virtual void  v21(); // _ZN7S1532C43v21Ev
  virtual void  v22(); // _ZN7S1532C43v22Ev
  virtual void  v23(); // _ZN7S1532C43v23Ev
  virtual void  v24(); // _ZN7S1532C43v24Ev
  virtual void  v25(); // _ZN7S1532C43v25Ev
  virtual void  v26(); // _ZN7S1532C43v26Ev
  virtual void  v27(); // _ZN7S1532C43v27Ev
  virtual void  v28(); // _ZN7S1532C43v28Ev
  virtual void  v29(); // _ZN7S1532C43v29Ev
  virtual void  v30(); // _ZN7S1532C43v30Ev
  virtual void  v31(); // _ZN7S1532C43v31Ev
  virtual void  v32(); // _ZN7S1532C43v32Ev
  virtual void  v33(); // _ZN7S1532C43v33Ev
  virtual void  v34(); // _ZN7S1532C43v34Ev
  virtual void  v35(); // _ZN7S1532C43v35Ev
  virtual void  v36(); // _ZN7S1532C43v36Ev
  virtual void  v37(); // _ZN7S1532C43v37Ev
  virtual void  v38(); // _ZN7S1532C43v38Ev
  virtual void  v39(); // _ZN7S1532C43v39Ev
  virtual void  v40(); // _ZN7S1532C43v40Ev
  virtual void  v41(); // _ZN7S1532C43v41Ev
  virtual void  v42(); // _ZN7S1532C43v42Ev
  virtual void  v43(); // _ZN7S1532C43v43Ev
  virtual void  v44(); // _ZN7S1532C43v44Ev
  virtual void  v45(); // _ZN7S1532C43v45Ev
  virtual void  v46(); // _ZN7S1532C43v46Ev
  virtual void  v47(); // _ZN7S1532C43v47Ev
  virtual void  v48(); // _ZN7S1532C43v48Ev
  virtual void  v49(); // _ZN7S1532C43v49Ev
  virtual void  v50(); // _ZN7S1532C43v50Ev
  virtual void  v51(); // _ZN7S1532C43v51Ev
  virtual void  v52(); // _ZN7S1532C43v52Ev
  virtual void  v53(); // _ZN7S1532C43v53Ev
  virtual void  v54(); // _ZN7S1532C43v54Ev
  virtual void  v55(); // _ZN7S1532C43v55Ev
  virtual void  v56(); // _ZN7S1532C43v56Ev
  virtual void  v57(); // _ZN7S1532C43v57Ev
  virtual void  v58(); // _ZN7S1532C43v58Ev
  virtual void  v59(); // _ZN7S1532C43v59Ev
  virtual void  v60(); // _ZN7S1532C43v60Ev
  virtual void  v61(); // _ZN7S1532C43v61Ev
  virtual void  v62(); // _ZN7S1532C43v62Ev
  virtual void  v63(); // _ZN7S1532C43v63Ev
  virtual void  v64(); // _ZN7S1532C43v64Ev
  virtual void  v65(); // _ZN7S1532C43v65Ev
  virtual void  v66(); // _ZN7S1532C43v66Ev
  virtual void  v67(); // _ZN7S1532C43v67Ev
  virtual void  v68(); // _ZN7S1532C43v68Ev
  virtual void  v69(); // _ZN7S1532C43v69Ev
  S1532C4(); // tgen
};
//SIG(-1 S1532C4) 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]}


 S1532C4 ::~S1532C4(){ note_dtor("S1532C4", this);}
void  S1532C4 ::v6(){vfunc_called(this, "_ZN7S1532C42v6Ev");}
void  S1532C4 ::v7(){vfunc_called(this, "_ZN7S1532C42v7Ev");}
void  S1532C4 ::v8(){vfunc_called(this, "_ZN7S1532C42v8Ev");}
void  S1532C4 ::v9(){vfunc_called(this, "_ZN7S1532C42v9Ev");}
void  S1532C4 ::v10(){vfunc_called(this, "_ZN7S1532C43v10Ev");}
void  S1532C4 ::v11(){vfunc_called(this, "_ZN7S1532C43v11Ev");}
void  S1532C4 ::v12(){vfunc_called(this, "_ZN7S1532C43v12Ev");}
void  S1532C4 ::v13(){vfunc_called(this, "_ZN7S1532C43v13Ev");}
void  S1532C4 ::v14(){vfunc_called(this, "_ZN7S1532C43v14Ev");}
void  S1532C4 ::v15(){vfunc_called(this, "_ZN7S1532C43v15Ev");}
void  S1532C4 ::v16(){vfunc_called(this, "_ZN7S1532C43v16Ev");}
void  S1532C4 ::v17(){vfunc_called(this, "_ZN7S1532C43v17Ev");}
void  S1532C4 ::v18(){vfunc_called(this, "_ZN7S1532C43v18Ev");}
void  S1532C4 ::v19(){vfunc_called(this, "_ZN7S1532C43v19Ev");}
void  S1532C4 ::v20(){vfunc_called(this, "_ZN7S1532C43v20Ev");}
void  S1532C4 ::v21(){vfunc_called(this, "_ZN7S1532C43v21Ev");}
void  S1532C4 ::v22(){vfunc_called(this, "_ZN7S1532C43v22Ev");}
void  S1532C4 ::v23(){vfunc_called(this, "_ZN7S1532C43v23Ev");}
void  S1532C4 ::v24(){vfunc_called(this, "_ZN7S1532C43v24Ev");}
void  S1532C4 ::v25(){vfunc_called(this, "_ZN7S1532C43v25Ev");}
void  S1532C4 ::v26(){vfunc_called(this, "_ZN7S1532C43v26Ev");}
void  S1532C4 ::v27(){vfunc_called(this, "_ZN7S1532C43v27Ev");}
void  S1532C4 ::v28(){vfunc_called(this, "_ZN7S1532C43v28Ev");}
void  S1532C4 ::v29(){vfunc_called(this, "_ZN7S1532C43v29Ev");}
void  S1532C4 ::v30(){vfunc_called(this, "_ZN7S1532C43v30Ev");}
void  S1532C4 ::v31(){vfunc_called(this, "_ZN7S1532C43v31Ev");}
void  S1532C4 ::v32(){vfunc_called(this, "_ZN7S1532C43v32Ev");}
void  S1532C4 ::v33(){vfunc_called(this, "_ZN7S1532C43v33Ev");}
void  S1532C4 ::v34(){vfunc_called(this, "_ZN7S1532C43v34Ev");}
void  S1532C4 ::v35(){vfunc_called(this, "_ZN7S1532C43v35Ev");}
void  S1532C4 ::v36(){vfunc_called(this, "_ZN7S1532C43v36Ev");}
void  S1532C4 ::v37(){vfunc_called(this, "_ZN7S1532C43v37Ev");}
void  S1532C4 ::v38(){vfunc_called(this, "_ZN7S1532C43v38Ev");}
void  S1532C4 ::v39(){vfunc_called(this, "_ZN7S1532C43v39Ev");}
void  S1532C4 ::v40(){vfunc_called(this, "_ZN7S1532C43v40Ev");}
void  S1532C4 ::v41(){vfunc_called(this, "_ZN7S1532C43v41Ev");}
void  S1532C4 ::v42(){vfunc_called(this, "_ZN7S1532C43v42Ev");}
void  S1532C4 ::v43(){vfunc_called(this, "_ZN7S1532C43v43Ev");}
void  S1532C4 ::v44(){vfunc_called(this, "_ZN7S1532C43v44Ev");}
void  S1532C4 ::v45(){vfunc_called(this, "_ZN7S1532C43v45Ev");}
void  S1532C4 ::v46(){vfunc_called(this, "_ZN7S1532C43v46Ev");}
void  S1532C4 ::v47(){vfunc_called(this, "_ZN7S1532C43v47Ev");}
void  S1532C4 ::v48(){vfunc_called(this, "_ZN7S1532C43v48Ev");}
void  S1532C4 ::v49(){vfunc_called(this, "_ZN7S1532C43v49Ev");}
void  S1532C4 ::v50(){vfunc_called(this, "_ZN7S1532C43v50Ev");}
void  S1532C4 ::v51(){vfunc_called(this, "_ZN7S1532C43v51Ev");}
void  S1532C4 ::v52(){vfunc_called(this, "_ZN7S1532C43v52Ev");}
void  S1532C4 ::v53(){vfunc_called(this, "_ZN7S1532C43v53Ev");}
void  S1532C4 ::v54(){vfunc_called(this, "_ZN7S1532C43v54Ev");}
void  S1532C4 ::v55(){vfunc_called(this, "_ZN7S1532C43v55Ev");}
void  S1532C4 ::v56(){vfunc_called(this, "_ZN7S1532C43v56Ev");}
void  S1532C4 ::v57(){vfunc_called(this, "_ZN7S1532C43v57Ev");}
void  S1532C4 ::v58(){vfunc_called(this, "_ZN7S1532C43v58Ev");}
void  S1532C4 ::v59(){vfunc_called(this, "_ZN7S1532C43v59Ev");}
void  S1532C4 ::v60(){vfunc_called(this, "_ZN7S1532C43v60Ev");}
void  S1532C4 ::v61(){vfunc_called(this, "_ZN7S1532C43v61Ev");}
void  S1532C4 ::v62(){vfunc_called(this, "_ZN7S1532C43v62Ev");}
void  S1532C4 ::v63(){vfunc_called(this, "_ZN7S1532C43v63Ev");}
void  S1532C4 ::v64(){vfunc_called(this, "_ZN7S1532C43v64Ev");}
void  S1532C4 ::v65(){vfunc_called(this, "_ZN7S1532C43v65Ev");}
void  S1532C4 ::v66(){vfunc_called(this, "_ZN7S1532C43v66Ev");}
void  S1532C4 ::v67(){vfunc_called(this, "_ZN7S1532C43v67Ev");}
void  S1532C4 ::v68(){vfunc_called(this, "_ZN7S1532C43v68Ev");}
void  S1532C4 ::v69(){vfunc_called(this, "_ZN7S1532C43v69Ev");}
S1532C4 ::S1532C4(){ note_ctor("S1532C4", this);} // tgen

static void Test_S1532C4()
{
  extern Class_Descriptor cd_S1532C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1532C4, buf);
    S1532C4 *dp, &lv = *(dp=new (buf) S1532C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1532C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1532C4)");
    check_field_offset(lv, s1532c4f0, ABISELECT(8,4), "S1532C4.s1532c4f0");
    check_field_offset(lv, s1532c4f1, ABISELECT(16,8), "S1532C4.s1532c4f1");
    check_field_offset(lv, s1532c4f2, ABISELECT(24,16), "S1532C4.s1532c4f2");
    check_field_offset(lv, s1532c4f3, ABISELECT(56,32), "S1532C4.s1532c4f3");
    check_field_offset(lv, s1532c4f4, ABISELECT(64,40), "S1532C4.s1532c4f4");
    check_field_offset(lv, s1532c4f5, ABISELECT(72,44), "S1532C4.s1532c4f5");
    check_field_offset(lv, s1532c4f6, ABISELECT(80,52), "S1532C4.s1532c4f6");
    test_class_info(&lv, &cd_S1532C4);
    dp->~S1532C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1532C4(Test_S1532C4, "S1532C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1532C4C1Ev();
extern void _ZN7S1532C4D1Ev();
Name_Map name_map_S1532C4[] = {
  NSPAIR(_ZN7S1532C4C1Ev),
  NSPAIR(_ZN7S1532C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1532C4[];
extern void _ZN7S1532C4D1Ev();
extern void _ZN7S1532C4D0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
static  VTBL_ENTRY vtc_S1532C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1532C4[0]),
  (VTBL_ENTRY)&_ZN7S1532C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1532C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
Class_Descriptor cd_S1532C4 = {  "S1532C4", // class name
  0,0,//no base classes
  &(vtc_S1532C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1532C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1532C4),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  S1532C3_nt  : S1532C4 {
  virtual  ~S1532C3_nt(); // _ZN10S1532C3_ntD1Ev
  virtual void  v70(); // _ZN10S1532C3_nt3v70Ev
  virtual void  v71(); // _ZN10S1532C3_nt3v71Ev
  S1532C3_nt(); // tgen
};
//SIG(-1 S1532C3_nt) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1532C3_nt ::~S1532C3_nt(){ note_dtor("S1532C3_nt", this);}
void  S1532C3_nt ::v70(){vfunc_called(this, "_ZN10S1532C3_nt3v70Ev");}
void  S1532C3_nt ::v71(){vfunc_called(this, "_ZN10S1532C3_nt3v71Ev");}
S1532C3_nt ::S1532C3_nt(){ note_ctor("S1532C3_nt", this);} // tgen

//skip512 S1532C3_nt

#else // __cplusplus

extern void _ZN10S1532C3_ntC1Ev();
extern void _ZN10S1532C3_ntD1Ev();
Name_Map name_map_S1532C3_nt[] = {
  NSPAIR(_ZN10S1532C3_ntC1Ev),
  NSPAIR(_ZN10S1532C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1532C4;
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
static Base_Class bases_S1532C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
extern void _ZN10S1532C3_ntD1Ev();
extern void _ZN10S1532C3_ntD0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
extern void _ZN10S1532C3_nt3v70Ev();
extern void _ZN10S1532C3_nt3v71Ev();
static  VTBL_ENTRY vtc_S1532C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1532C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1532C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v71Ev,
};
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
VTBL_ENTRY *P__ZTI10S1532C3_nt = _ZTI10S1532C3_nt; 
extern  VTBL_ENTRY _ZTV10S1532C3_nt[];
Class_Descriptor cd_S1532C3_nt = {  "S1532C3_nt", // class name
  bases_S1532C3_nt, 1,
  &(vtc_S1532C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S1532C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1532C3_nt),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C10_nt  {
  int s1532c10f0[4];
  void  mf1532c10(); // _ZN11S1532C10_nt9mf1532c10Ev
};
//SIG(-1 S1532C10_nt) C1{ m Fi[4]}


void  S1532C10_nt ::mf1532c10(){}

//skip512 S1532C10_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C2  : S1532C3_nt {
  ::S205C8_nt s1532c2f0;
  ::S1532C10_nt s1532c2f1;
  int s1532c2f2[2];
  unsigned int s1532c2f3:1;
  unsigned int s1532c2f4:1;
  virtual  ~S1532C2(); // _ZN7S1532C2D1Ev
  virtual void  v72(); // _ZN7S1532C23v72Ev
  virtual void  v73(); // _ZN7S1532C23v73Ev
  virtual void  v74(); // _ZN7S1532C23v74Ev
  virtual void  v75(); // _ZN7S1532C23v75Ev
  virtual void  v76(); // _ZN7S1532C23v76Ev
  virtual void  v77(); // _ZN7S1532C23v77Ev
  virtual void  v78(); // _ZN7S1532C23v78Ev
  virtual void  v79(); // _ZN7S1532C23v79Ev
  virtual void  v80(); // _ZN7S1532C23v80Ev
  S1532C2(); // tgen
};
//SIG(-1 S1532C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC9{ m Fi[4]} Fi[2] Fi:1 Fi:1}


 S1532C2 ::~S1532C2(){ note_dtor("S1532C2", this);}
void  S1532C2 ::v72(){vfunc_called(this, "_ZN7S1532C23v72Ev");}
void  S1532C2 ::v73(){vfunc_called(this, "_ZN7S1532C23v73Ev");}
void  S1532C2 ::v74(){vfunc_called(this, "_ZN7S1532C23v74Ev");}
void  S1532C2 ::v75(){vfunc_called(this, "_ZN7S1532C23v75Ev");}
void  S1532C2 ::v76(){vfunc_called(this, "_ZN7S1532C23v76Ev");}
void  S1532C2 ::v77(){vfunc_called(this, "_ZN7S1532C23v77Ev");}
void  S1532C2 ::v78(){vfunc_called(this, "_ZN7S1532C23v78Ev");}
void  S1532C2 ::v79(){vfunc_called(this, "_ZN7S1532C23v79Ev");}
void  S1532C2 ::v80(){vfunc_called(this, "_ZN7S1532C23v80Ev");}
S1532C2 ::S1532C2(){ note_ctor("S1532C2", this);} // tgen

static void Test_S1532C2()
{
  extern Class_Descriptor cd_S1532C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S1532C2, buf);
    S1532C2 *dp, &lv = *(dp=new (buf) S1532C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S1532C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1532C2)");
    check_base_class_offset(lv, (S1532C4*)(S1532C3_nt*), 0, "S1532C2");
    check_base_class_offset(lv, (S1532C3_nt*), 0, "S1532C2");
    check_field_offset(lv, s1532c2f0, ABISELECT(96,60), "S1532C2.s1532c2f0");
    check_field_offset(lv, s1532c2f1, ABISELECT(112,72), "S1532C2.s1532c2f1");
    check_field_offset(lv, s1532c2f2, ABISELECT(128,88), "S1532C2.s1532c2f2");
    set_bf_and_test(lv, s1532c2f3, ABISELECT(136,96), 0, 1, 1, "S1532C2");
    set_bf_and_test(lv, s1532c2f4, ABISELECT(136,96), 1, 1, 1, "S1532C2");
    test_class_info(&lv, &cd_S1532C2);
    dp->~S1532C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1532C2(Test_S1532C2, "S1532C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S1532C2C1Ev();
extern void _ZN7S1532C2D1Ev();
Name_Map name_map_S1532C2[] = {
  NSPAIR(_ZN7S1532C2C1Ev),
  NSPAIR(_ZN7S1532C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1532C4;
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
extern Class_Descriptor cd_S1532C3_nt;
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
extern  VTBL_ENTRY _ZTV10S1532C3_nt[];
static Base_Class bases_S1532C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1532C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1532C2[];
extern void _ZN7S1532C2D1Ev();
extern void _ZN7S1532C2D0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
extern void _ZN10S1532C3_nt3v70Ev();
extern void _ZN10S1532C3_nt3v71Ev();
extern void _ZN7S1532C23v72Ev();
extern void _ZN7S1532C23v73Ev();
extern void _ZN7S1532C23v74Ev();
extern void _ZN7S1532C23v75Ev();
extern void _ZN7S1532C23v76Ev();
extern void _ZN7S1532C23v77Ev();
extern void _ZN7S1532C23v78Ev();
extern void _ZN7S1532C23v79Ev();
extern void _ZN7S1532C23v80Ev();
static  VTBL_ENTRY vtc_S1532C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1532C2[0]),
  (VTBL_ENTRY)&_ZN7S1532C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1532C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v80Ev,
};
extern VTBL_ENTRY _ZTI7S1532C2[];
extern  VTBL_ENTRY _ZTV7S1532C2[];
Class_Descriptor cd_S1532C2 = {  "S1532C2", // class name
  bases_S1532C2, 2,
  &(vtc_S1532C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S1532C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1532C2),79, //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  S1532C11_nt  {
  unsigned int s1532c11f0:1;
  unsigned int s1532c11f1:1;
  unsigned int s1532c11f2:1;
  unsigned int s1532c11f3:1;
  unsigned int s1532c11f4:1;
  void  mf1532c11(); // _ZN11S1532C11_nt9mf1532c11Ev
};
//SIG(-1 S1532C11_nt) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}


void  S1532C11_nt ::mf1532c11(){}

//skip512 S1532C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C12_nt  {
  int s1532c12f0;
  char s1532c12f1;
  void  mf1532c12(); // _ZN11S1532C12_nt9mf1532c12Ev
};
//SIG(-1 S1532C12_nt) C1{ m Fi Fc}


void  S1532C12_nt ::mf1532c12(){}

//skip512 S1532C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C13_nt  {
  int s1532c13f0[2];
  void  mf1532c13(); // _ZN11S1532C13_nt9mf1532c13Ev
};
//SIG(-1 S1532C13_nt) C1{ m Fi[2]}


void  S1532C13_nt ::mf1532c13(){}

//skip512 S1532C13_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1532C1  : S1532C2 {
  void *s1532c1f0;
  ::S1532C11_nt s1532c1f1;
  char s1532c1f2[4];
  ::S1532C12_nt s1532c1f3;
  ::S1532C13_nt s1532c1f4;
  ::S1532C13_nt s1532c1f5;
  virtual  ~S1532C1(); // _ZN7S1532C1D1Ev
  virtual void  v1(); // _ZN7S1532C12v1Ev
  virtual void  v2(); // _ZN7S1532C12v2Ev
  virtual void  v3(); // _ZN7S1532C12v3Ev
  virtual void  v4(); // _ZN7S1532C12v4Ev
  virtual void  v5(); // _ZN7S1532C12v5Ev
  S1532C1(); // tgen
};
//SIG(1 S1532C1) C1{ BC2{ BC3{ BC4{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v70 v71} vd v72 v73 v74 v75 v76 v77 v78 v79 v80 FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC10{ m Fi[4]} Fi[2] Fi:1 Fi:1} vd v1 v2 v3 v4 v5 Fp FC11{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1} Fc[4] FC12{ m Fi Fc} FC13{ m Fi[2]} FC13}


 S1532C1 ::~S1532C1(){ note_dtor("S1532C1", this);}
void  S1532C1 ::v1(){vfunc_called(this, "_ZN7S1532C12v1Ev");}
void  S1532C1 ::v2(){vfunc_called(this, "_ZN7S1532C12v2Ev");}
void  S1532C1 ::v3(){vfunc_called(this, "_ZN7S1532C12v3Ev");}
void  S1532C1 ::v4(){vfunc_called(this, "_ZN7S1532C12v4Ev");}
void  S1532C1 ::v5(){vfunc_called(this, "_ZN7S1532C12v5Ev");}
S1532C1 ::S1532C1(){ note_ctor("S1532C1", this);} // tgen

static void Test_S1532C1()
{
  extern Class_Descriptor cd_S1532C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,35)];
    init_test(&cd_S1532C1, buf);
    S1532C1 *dp, &lv = *(dp=new (buf) S1532C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,136), "sizeof(S1532C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1532C1)");
    check_base_class_offset(lv, (S1532C4*)(S1532C3_nt*)(S1532C2*), 0, "S1532C1");
    check_base_class_offset(lv, (S1532C3_nt*)(S1532C2*), 0, "S1532C1");
    check_base_class_offset(lv, (S1532C2*), 0, "S1532C1");
    check_field_offset(lv, s1532c1f0, ABISELECT(144,100), "S1532C1.s1532c1f0");
    check_field_offset(lv, s1532c1f1, ABISELECT(152,104), "S1532C1.s1532c1f1");
    check_field_offset(lv, s1532c1f2, ABISELECT(156,108), "S1532C1.s1532c1f2");
    check_field_offset(lv, s1532c1f3, ABISELECT(160,112), "S1532C1.s1532c1f3");
    check_field_offset(lv, s1532c1f4, ABISELECT(168,120), "S1532C1.s1532c1f4");
    check_field_offset(lv, s1532c1f5, ABISELECT(176,128), "S1532C1.s1532c1f5");
    test_class_info(&lv, &cd_S1532C1);
    dp->~S1532C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1532C1(Test_S1532C1, "S1532C1", ABISELECT(184,136));

#else // __cplusplus

extern void _ZN7S1532C1C1Ev();
extern void _ZN7S1532C1D1Ev();
Name_Map name_map_S1532C1[] = {
  NSPAIR(_ZN7S1532C1C1Ev),
  NSPAIR(_ZN7S1532C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1532C4;
extern VTBL_ENTRY _ZTI7S1532C4[];
extern  VTBL_ENTRY _ZTV7S1532C4[];
extern Class_Descriptor cd_S1532C3_nt;
extern VTBL_ENTRY _ZTI10S1532C3_nt[];
extern  VTBL_ENTRY _ZTV10S1532C3_nt[];
extern Class_Descriptor cd_S1532C2;
extern VTBL_ENTRY _ZTI7S1532C2[];
extern  VTBL_ENTRY _ZTV7S1532C2[];
static Base_Class bases_S1532C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1532C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1532C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1532C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1532C1[];
extern void _ZN7S1532C1D1Ev();
extern void _ZN7S1532C1D0Ev();
extern void _ZN7S1532C42v6Ev();
extern void _ZN7S1532C42v7Ev();
extern void _ZN7S1532C42v8Ev();
extern void _ZN7S1532C42v9Ev();
extern void _ZN7S1532C43v10Ev();
extern void _ZN7S1532C43v11Ev();
extern void _ZN7S1532C43v12Ev();
extern void _ZN7S1532C43v13Ev();
extern void _ZN7S1532C43v14Ev();
extern void _ZN7S1532C43v15Ev();
extern void _ZN7S1532C43v16Ev();
extern void _ZN7S1532C43v17Ev();
extern void _ZN7S1532C43v18Ev();
extern void _ZN7S1532C43v19Ev();
extern void _ZN7S1532C43v20Ev();
extern void _ZN7S1532C43v21Ev();
extern void _ZN7S1532C43v22Ev();
extern void _ZN7S1532C43v23Ev();
extern void _ZN7S1532C43v24Ev();
extern void _ZN7S1532C43v25Ev();
extern void _ZN7S1532C43v26Ev();
extern void _ZN7S1532C43v27Ev();
extern void _ZN7S1532C43v28Ev();
extern void _ZN7S1532C43v29Ev();
extern void _ZN7S1532C43v30Ev();
extern void _ZN7S1532C43v31Ev();
extern void _ZN7S1532C43v32Ev();
extern void _ZN7S1532C43v33Ev();
extern void _ZN7S1532C43v34Ev();
extern void _ZN7S1532C43v35Ev();
extern void _ZN7S1532C43v36Ev();
extern void _ZN7S1532C43v37Ev();
extern void _ZN7S1532C43v38Ev();
extern void _ZN7S1532C43v39Ev();
extern void _ZN7S1532C43v40Ev();
extern void _ZN7S1532C43v41Ev();
extern void _ZN7S1532C43v42Ev();
extern void _ZN7S1532C43v43Ev();
extern void _ZN7S1532C43v44Ev();
extern void _ZN7S1532C43v45Ev();
extern void _ZN7S1532C43v46Ev();
extern void _ZN7S1532C43v47Ev();
extern void _ZN7S1532C43v48Ev();
extern void _ZN7S1532C43v49Ev();
extern void _ZN7S1532C43v50Ev();
extern void _ZN7S1532C43v51Ev();
extern void _ZN7S1532C43v52Ev();
extern void _ZN7S1532C43v53Ev();
extern void _ZN7S1532C43v54Ev();
extern void _ZN7S1532C43v55Ev();
extern void _ZN7S1532C43v56Ev();
extern void _ZN7S1532C43v57Ev();
extern void _ZN7S1532C43v58Ev();
extern void _ZN7S1532C43v59Ev();
extern void _ZN7S1532C43v60Ev();
extern void _ZN7S1532C43v61Ev();
extern void _ZN7S1532C43v62Ev();
extern void _ZN7S1532C43v63Ev();
extern void _ZN7S1532C43v64Ev();
extern void _ZN7S1532C43v65Ev();
extern void _ZN7S1532C43v66Ev();
extern void _ZN7S1532C43v67Ev();
extern void _ZN7S1532C43v68Ev();
extern void _ZN7S1532C43v69Ev();
extern void _ZN10S1532C3_nt3v70Ev();
extern void _ZN10S1532C3_nt3v71Ev();
extern void _ZN7S1532C23v72Ev();
extern void _ZN7S1532C23v73Ev();
extern void _ZN7S1532C23v74Ev();
extern void _ZN7S1532C23v75Ev();
extern void _ZN7S1532C23v76Ev();
extern void _ZN7S1532C23v77Ev();
extern void _ZN7S1532C23v78Ev();
extern void _ZN7S1532C23v79Ev();
extern void _ZN7S1532C23v80Ev();
extern void _ZN7S1532C12v1Ev();
extern void _ZN7S1532C12v2Ev();
extern void _ZN7S1532C12v3Ev();
extern void _ZN7S1532C12v4Ev();
extern void _ZN7S1532C12v5Ev();
static  VTBL_ENTRY vtc_S1532C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1532C1[0]),
  (VTBL_ENTRY)&_ZN7S1532C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1532C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1532C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1532C43v69Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1532C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1532C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1532C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1532C1[];
extern  VTBL_ENTRY _ZTV7S1532C1[];
Class_Descriptor cd_S1532C1 = {  "S1532C1", // class name
  bases_S1532C1, 3,
  &(vtc_S1532C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,136), // object size
  NSPAIRA(_ZTI7S1532C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1532C1),84, //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  S1305C4  {
  int s1305c4f0;
  __tsi64 s1305c4f1;
  void *s1305c4f2[4];
  int s1305c4f3[2];
  void *s1305c4f4;
  ::S3423C4_nt s1305c4f5;
  void *s1305c4f6[2];
  virtual  ~S1305C4(); // _ZN7S1305C4D1Ev
  virtual void  v11(); // _ZN7S1305C43v11Ev
  virtual void  v12(); // _ZN7S1305C43v12Ev
  virtual void  v13(); // _ZN7S1305C43v13Ev
  virtual void  v14(); // _ZN7S1305C43v14Ev
  virtual void  v15(); // _ZN7S1305C43v15Ev
  virtual void  v16(); // _ZN7S1305C43v16Ev
  virtual void  v17(); // _ZN7S1305C43v17Ev
  virtual void  v18(); // _ZN7S1305C43v18Ev
  virtual void  v19(); // _ZN7S1305C43v19Ev
  virtual void  v20(); // _ZN7S1305C43v20Ev
  virtual void  v21(); // _ZN7S1305C43v21Ev
  virtual void  v22(); // _ZN7S1305C43v22Ev
  virtual void  v23(); // _ZN7S1305C43v23Ev
  virtual void  v24(); // _ZN7S1305C43v24Ev
  virtual void  v25(); // _ZN7S1305C43v25Ev
  virtual void  v26(); // _ZN7S1305C43v26Ev
  virtual void  v27(); // _ZN7S1305C43v27Ev
  virtual void  v28(); // _ZN7S1305C43v28Ev
  virtual void  v29(); // _ZN7S1305C43v29Ev
  virtual void  v30(); // _ZN7S1305C43v30Ev
  virtual void  v31(); // _ZN7S1305C43v31Ev
  virtual void  v32(); // _ZN7S1305C43v32Ev
  virtual void  v33(); // _ZN7S1305C43v33Ev
  virtual void  v34(); // _ZN7S1305C43v34Ev
  virtual void  v35(); // _ZN7S1305C43v35Ev
  virtual void  v36(); // _ZN7S1305C43v36Ev
  virtual void  v37(); // _ZN7S1305C43v37Ev
  virtual void  v38(); // _ZN7S1305C43v38Ev
  virtual void  v39(); // _ZN7S1305C43v39Ev
  virtual void  v40(); // _ZN7S1305C43v40Ev
  virtual void  v41(); // _ZN7S1305C43v41Ev
  virtual void  v42(); // _ZN7S1305C43v42Ev
  virtual void  v43(); // _ZN7S1305C43v43Ev
  virtual void  v44(); // _ZN7S1305C43v44Ev
  virtual void  v45(); // _ZN7S1305C43v45Ev
  virtual void  v46(); // _ZN7S1305C43v46Ev
  virtual void  v47(); // _ZN7S1305C43v47Ev
  virtual void  v48(); // _ZN7S1305C43v48Ev
  virtual void  v49(); // _ZN7S1305C43v49Ev
  virtual void  v50(); // _ZN7S1305C43v50Ev
  virtual void  v51(); // _ZN7S1305C43v51Ev
  virtual void  v52(); // _ZN7S1305C43v52Ev
  virtual void  v53(); // _ZN7S1305C43v53Ev
  virtual void  v54(); // _ZN7S1305C43v54Ev
  virtual void  v55(); // _ZN7S1305C43v55Ev
  virtual void  v56(); // _ZN7S1305C43v56Ev
  virtual void  v57(); // _ZN7S1305C43v57Ev
  virtual void  v58(); // _ZN7S1305C43v58Ev
  virtual void  v59(); // _ZN7S1305C43v59Ev
  virtual void  v60(); // _ZN7S1305C43v60Ev
  virtual void  v61(); // _ZN7S1305C43v61Ev
  virtual void  v62(); // _ZN7S1305C43v62Ev
  virtual void  v63(); // _ZN7S1305C43v63Ev
  virtual void  v64(); // _ZN7S1305C43v64Ev
  virtual void  v65(); // _ZN7S1305C43v65Ev
  virtual void  v66(); // _ZN7S1305C43v66Ev
  virtual void  v67(); // _ZN7S1305C43v67Ev
  virtual void  v68(); // _ZN7S1305C43v68Ev
  virtual void  v69(); // _ZN7S1305C43v69Ev
  virtual void  v70(); // _ZN7S1305C43v70Ev
  virtual void  v71(); // _ZN7S1305C43v71Ev
  virtual void  v72(); // _ZN7S1305C43v72Ev
  virtual void  v73(); // _ZN7S1305C43v73Ev
  virtual void  v74(); // _ZN7S1305C43v74Ev
  S1305C4(); // tgen
};
//SIG(-1 S1305C4) 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]}


 S1305C4 ::~S1305C4(){ note_dtor("S1305C4", this);}
void  S1305C4 ::v11(){vfunc_called(this, "_ZN7S1305C43v11Ev");}
void  S1305C4 ::v12(){vfunc_called(this, "_ZN7S1305C43v12Ev");}
void  S1305C4 ::v13(){vfunc_called(this, "_ZN7S1305C43v13Ev");}
void  S1305C4 ::v14(){vfunc_called(this, "_ZN7S1305C43v14Ev");}
void  S1305C4 ::v15(){vfunc_called(this, "_ZN7S1305C43v15Ev");}
void  S1305C4 ::v16(){vfunc_called(this, "_ZN7S1305C43v16Ev");}
void  S1305C4 ::v17(){vfunc_called(this, "_ZN7S1305C43v17Ev");}
void  S1305C4 ::v18(){vfunc_called(this, "_ZN7S1305C43v18Ev");}
void  S1305C4 ::v19(){vfunc_called(this, "_ZN7S1305C43v19Ev");}
void  S1305C4 ::v20(){vfunc_called(this, "_ZN7S1305C43v20Ev");}
void  S1305C4 ::v21(){vfunc_called(this, "_ZN7S1305C43v21Ev");}
void  S1305C4 ::v22(){vfunc_called(this, "_ZN7S1305C43v22Ev");}
void  S1305C4 ::v23(){vfunc_called(this, "_ZN7S1305C43v23Ev");}
void  S1305C4 ::v24(){vfunc_called(this, "_ZN7S1305C43v24Ev");}
void  S1305C4 ::v25(){vfunc_called(this, "_ZN7S1305C43v25Ev");}
void  S1305C4 ::v26(){vfunc_called(this, "_ZN7S1305C43v26Ev");}
void  S1305C4 ::v27(){vfunc_called(this, "_ZN7S1305C43v27Ev");}
void  S1305C4 ::v28(){vfunc_called(this, "_ZN7S1305C43v28Ev");}
void  S1305C4 ::v29(){vfunc_called(this, "_ZN7S1305C43v29Ev");}
void  S1305C4 ::v30(){vfunc_called(this, "_ZN7S1305C43v30Ev");}
void  S1305C4 ::v31(){vfunc_called(this, "_ZN7S1305C43v31Ev");}
void  S1305C4 ::v32(){vfunc_called(this, "_ZN7S1305C43v32Ev");}
void  S1305C4 ::v33(){vfunc_called(this, "_ZN7S1305C43v33Ev");}
void  S1305C4 ::v34(){vfunc_called(this, "_ZN7S1305C43v34Ev");}
void  S1305C4 ::v35(){vfunc_called(this, "_ZN7S1305C43v35Ev");}
void  S1305C4 ::v36(){vfunc_called(this, "_ZN7S1305C43v36Ev");}
void  S1305C4 ::v37(){vfunc_called(this, "_ZN7S1305C43v37Ev");}
void  S1305C4 ::v38(){vfunc_called(this, "_ZN7S1305C43v38Ev");}
void  S1305C4 ::v39(){vfunc_called(this, "_ZN7S1305C43v39Ev");}
void  S1305C4 ::v40(){vfunc_called(this, "_ZN7S1305C43v40Ev");}
void  S1305C4 ::v41(){vfunc_called(this, "_ZN7S1305C43v41Ev");}
void  S1305C4 ::v42(){vfunc_called(this, "_ZN7S1305C43v42Ev");}
void  S1305C4 ::v43(){vfunc_called(this, "_ZN7S1305C43v43Ev");}
void  S1305C4 ::v44(){vfunc_called(this, "_ZN7S1305C43v44Ev");}
void  S1305C4 ::v45(){vfunc_called(this, "_ZN7S1305C43v45Ev");}
void  S1305C4 ::v46(){vfunc_called(this, "_ZN7S1305C43v46Ev");}
void  S1305C4 ::v47(){vfunc_called(this, "_ZN7S1305C43v47Ev");}
void  S1305C4 ::v48(){vfunc_called(this, "_ZN7S1305C43v48Ev");}
void  S1305C4 ::v49(){vfunc_called(this, "_ZN7S1305C43v49Ev");}
void  S1305C4 ::v50(){vfunc_called(this, "_ZN7S1305C43v50Ev");}
void  S1305C4 ::v51(){vfunc_called(this, "_ZN7S1305C43v51Ev");}
void  S1305C4 ::v52(){vfunc_called(this, "_ZN7S1305C43v52Ev");}
void  S1305C4 ::v53(){vfunc_called(this, "_ZN7S1305C43v53Ev");}
void  S1305C4 ::v54(){vfunc_called(this, "_ZN7S1305C43v54Ev");}
void  S1305C4 ::v55(){vfunc_called(this, "_ZN7S1305C43v55Ev");}
void  S1305C4 ::v56(){vfunc_called(this, "_ZN7S1305C43v56Ev");}
void  S1305C4 ::v57(){vfunc_called(this, "_ZN7S1305C43v57Ev");}
void  S1305C4 ::v58(){vfunc_called(this, "_ZN7S1305C43v58Ev");}
void  S1305C4 ::v59(){vfunc_called(this, "_ZN7S1305C43v59Ev");}
void  S1305C4 ::v60(){vfunc_called(this, "_ZN7S1305C43v60Ev");}
void  S1305C4 ::v61(){vfunc_called(this, "_ZN7S1305C43v61Ev");}
void  S1305C4 ::v62(){vfunc_called(this, "_ZN7S1305C43v62Ev");}
void  S1305C4 ::v63(){vfunc_called(this, "_ZN7S1305C43v63Ev");}
void  S1305C4 ::v64(){vfunc_called(this, "_ZN7S1305C43v64Ev");}
void  S1305C4 ::v65(){vfunc_called(this, "_ZN7S1305C43v65Ev");}
void  S1305C4 ::v66(){vfunc_called(this, "_ZN7S1305C43v66Ev");}
void  S1305C4 ::v67(){vfunc_called(this, "_ZN7S1305C43v67Ev");}
void  S1305C4 ::v68(){vfunc_called(this, "_ZN7S1305C43v68Ev");}
void  S1305C4 ::v69(){vfunc_called(this, "_ZN7S1305C43v69Ev");}
void  S1305C4 ::v70(){vfunc_called(this, "_ZN7S1305C43v70Ev");}
void  S1305C4 ::v71(){vfunc_called(this, "_ZN7S1305C43v71Ev");}
void  S1305C4 ::v72(){vfunc_called(this, "_ZN7S1305C43v72Ev");}
void  S1305C4 ::v73(){vfunc_called(this, "_ZN7S1305C43v73Ev");}
void  S1305C4 ::v74(){vfunc_called(this, "_ZN7S1305C43v74Ev");}
S1305C4 ::S1305C4(){ note_ctor("S1305C4", this);} // tgen

static void Test_S1305C4()
{
  extern Class_Descriptor cd_S1305C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1305C4, buf);
    S1305C4 *dp, &lv = *(dp=new (buf) S1305C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1305C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C4)");
    check_field_offset(lv, s1305c4f0, ABISELECT(8,4), "S1305C4.s1305c4f0");
    check_field_offset(lv, s1305c4f1, ABISELECT(16,8), "S1305C4.s1305c4f1");
    check_field_offset(lv, s1305c4f2, ABISELECT(24,16), "S1305C4.s1305c4f2");
    check_field_offset(lv, s1305c4f3, ABISELECT(56,32), "S1305C4.s1305c4f3");
    check_field_offset(lv, s1305c4f4, ABISELECT(64,40), "S1305C4.s1305c4f4");
    check_field_offset(lv, s1305c4f5, ABISELECT(72,44), "S1305C4.s1305c4f5");
    check_field_offset(lv, s1305c4f6, ABISELECT(80,52), "S1305C4.s1305c4f6");
    test_class_info(&lv, &cd_S1305C4);
    dp->~S1305C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C4(Test_S1305C4, "S1305C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1305C4C1Ev();
extern void _ZN7S1305C4D1Ev();
Name_Map name_map_S1305C4[] = {
  NSPAIR(_ZN7S1305C4C1Ev),
  NSPAIR(_ZN7S1305C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1305C4[];
extern void _ZN7S1305C4D1Ev();
extern void _ZN7S1305C4D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
static  VTBL_ENTRY vtc_S1305C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C4[0]),
  (VTBL_ENTRY)&_ZN7S1305C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
};
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
Class_Descriptor cd_S1305C4 = {  "S1305C4", // class name
  0,0,//no base classes
  &(vtc_S1305C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1305C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1305C4),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  S1305C3  : S1305C4 {
  virtual  ~S1305C3(); // _ZN7S1305C3D1Ev
  virtual void  v75(); // _ZN7S1305C33v75Ev
  virtual void  v76(); // _ZN7S1305C33v76Ev
  S1305C3(); // tgen
};
//SIG(-1 S1305C3) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1305C3 ::~S1305C3(){ note_dtor("S1305C3", this);}
void  S1305C3 ::v75(){vfunc_called(this, "_ZN7S1305C33v75Ev");}
void  S1305C3 ::v76(){vfunc_called(this, "_ZN7S1305C33v76Ev");}
S1305C3 ::S1305C3(){ note_ctor("S1305C3", this);} // tgen

static void Test_S1305C3()
{
  extern Class_Descriptor cd_S1305C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1305C3, buf);
    S1305C3 *dp, &lv = *(dp=new (buf) S1305C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1305C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C3)");
    check_base_class_offset(lv, (S1305C4*), 0, "S1305C3");
    test_class_info(&lv, &cd_S1305C3);
    dp->~S1305C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C3(Test_S1305C3, "S1305C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1305C3C1Ev();
extern void _ZN7S1305C3D1Ev();
Name_Map name_map_S1305C3[] = {
  NSPAIR(_ZN7S1305C3C1Ev),
  NSPAIR(_ZN7S1305C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1305C4;
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
static Base_Class bases_S1305C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1305C3[];
extern void _ZN7S1305C3D1Ev();
extern void _ZN7S1305C3D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
extern void _ZN7S1305C33v75Ev();
extern void _ZN7S1305C33v76Ev();
static  VTBL_ENTRY vtc_S1305C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C3[0]),
  (VTBL_ENTRY)&_ZN7S1305C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v76Ev,
};
extern VTBL_ENTRY _ZTI7S1305C3[];
extern  VTBL_ENTRY _ZTV7S1305C3[];
Class_Descriptor cd_S1305C3 = {  "S1305C3", // class name
  bases_S1305C3, 1,
  &(vtc_S1305C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1305C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1305C3),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C2  : S1305C3 {
  ::S205C8_nt s1305c2f0;
  ::S1532C10_nt s1305c2f1;
  int s1305c2f2[2];
  unsigned int s1305c2f3:1;
  unsigned int s1305c2f4:1;
  virtual  ~S1305C2(); // _ZN7S1305C2D1Ev
  virtual void  v77(); // _ZN7S1305C23v77Ev
  virtual void  v78(); // _ZN7S1305C23v78Ev
  virtual void  v79(); // _ZN7S1305C23v79Ev
  virtual void  v80(); // _ZN7S1305C23v80Ev
  virtual void  v81(); // _ZN7S1305C23v81Ev
  virtual void  v82(); // _ZN7S1305C23v82Ev
  virtual void  v83(); // _ZN7S1305C23v83Ev
  virtual void  v84(); // _ZN7S1305C23v84Ev
  virtual void  v85(); // _ZN7S1305C23v85Ev
  S1305C2(); // tgen
};
//SIG(-1 S1305C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC9{ m Fi[4]} Fi[2] Fi:1 Fi:1}


 S1305C2 ::~S1305C2(){ note_dtor("S1305C2", this);}
void  S1305C2 ::v77(){vfunc_called(this, "_ZN7S1305C23v77Ev");}
void  S1305C2 ::v78(){vfunc_called(this, "_ZN7S1305C23v78Ev");}
void  S1305C2 ::v79(){vfunc_called(this, "_ZN7S1305C23v79Ev");}
void  S1305C2 ::v80(){vfunc_called(this, "_ZN7S1305C23v80Ev");}
void  S1305C2 ::v81(){vfunc_called(this, "_ZN7S1305C23v81Ev");}
void  S1305C2 ::v82(){vfunc_called(this, "_ZN7S1305C23v82Ev");}
void  S1305C2 ::v83(){vfunc_called(this, "_ZN7S1305C23v83Ev");}
void  S1305C2 ::v84(){vfunc_called(this, "_ZN7S1305C23v84Ev");}
void  S1305C2 ::v85(){vfunc_called(this, "_ZN7S1305C23v85Ev");}
S1305C2 ::S1305C2(){ note_ctor("S1305C2", this);} // tgen

static void Test_S1305C2()
{
  extern Class_Descriptor cd_S1305C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S1305C2, buf);
    S1305C2 *dp, &lv = *(dp=new (buf) S1305C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S1305C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C2)");
    check_base_class_offset(lv, (S1305C4*)(S1305C3*), 0, "S1305C2");
    check_base_class_offset(lv, (S1305C3*), 0, "S1305C2");
    check_field_offset(lv, s1305c2f0, ABISELECT(96,60), "S1305C2.s1305c2f0");
    check_field_offset(lv, s1305c2f1, ABISELECT(112,72), "S1305C2.s1305c2f1");
    check_field_offset(lv, s1305c2f2, ABISELECT(128,88), "S1305C2.s1305c2f2");
    set_bf_and_test(lv, s1305c2f3, ABISELECT(136,96), 0, 1, 1, "S1305C2");
    set_bf_and_test(lv, s1305c2f4, ABISELECT(136,96), 1, 1, 1, "S1305C2");
    test_class_info(&lv, &cd_S1305C2);
    dp->~S1305C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C2(Test_S1305C2, "S1305C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S1305C2C1Ev();
extern void _ZN7S1305C2D1Ev();
Name_Map name_map_S1305C2[] = {
  NSPAIR(_ZN7S1305C2C1Ev),
  NSPAIR(_ZN7S1305C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1305C4;
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
extern Class_Descriptor cd_S1305C3;
extern VTBL_ENTRY _ZTI7S1305C3[];
extern  VTBL_ENTRY _ZTV7S1305C3[];
static Base_Class bases_S1305C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1305C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1305C2[];
extern void _ZN7S1305C2D1Ev();
extern void _ZN7S1305C2D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
extern void _ZN7S1305C33v75Ev();
extern void _ZN7S1305C33v76Ev();
extern void _ZN7S1305C23v77Ev();
extern void _ZN7S1305C23v78Ev();
extern void _ZN7S1305C23v79Ev();
extern void _ZN7S1305C23v80Ev();
extern void _ZN7S1305C23v81Ev();
extern void _ZN7S1305C23v82Ev();
extern void _ZN7S1305C23v83Ev();
extern void _ZN7S1305C23v84Ev();
extern void _ZN7S1305C23v85Ev();
static  VTBL_ENTRY vtc_S1305C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C2[0]),
  (VTBL_ENTRY)&_ZN7S1305C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v83Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v84Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v85Ev,
};
extern VTBL_ENTRY _ZTI7S1305C2[];
extern  VTBL_ENTRY _ZTV7S1305C2[];
Class_Descriptor cd_S1305C2 = {  "S1305C2", // class name
  bases_S1305C2, 2,
  &(vtc_S1305C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S1305C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1305C2),79, //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  S1305C13_nt  {
  int s1305c13f0[4];
  void  mf1305c13(); // _ZN11S1305C13_nt9mf1305c13Ev
};
//SIG(-1 S1305C13_nt) C1{ m Fi[4]}


void  S1305C13_nt ::mf1305c13(){}

//skip512 S1305C13_nt

#else // __cplusplus

Class_Descriptor cd_S1305C13_nt = {  "S1305C13_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C12_nt  : S1305C13_nt {
};
//SIG(-1 S1305C12_nt) C1{ BC2{ m Fi[4]}}



//skip512 S1305C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S1305C13_nt;
static Base_Class bases_S1305C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1305C11  {
  void *s1305c11f0;
  ::S1305C12_nt s1305c11f1;
  void *s1305c11f2[3];
  void  mf1305c11(); // _ZN8S1305C119mf1305c11Ev
};
//SIG(-1 S1305C11) C1{ m Fp FC2{ BC3{ m Fi[4]}} Fp[3]}


void  S1305C11 ::mf1305c11(){}

static void Test_S1305C11()
{
  {
    init_simple_test("S1305C11");
    S1305C11 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S1305C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C11)");
    check_field_offset(lv, s1305c11f0, 0, "S1305C11.s1305c11f0");
    check_field_offset(lv, s1305c11f1, ABISELECT(8,4), "S1305C11.s1305c11f1");
    check_field_offset(lv, s1305c11f2, ABISELECT(24,20), "S1305C11.s1305c11f2");
  }
}
static Arrange_To_Call_Me vS1305C11(Test_S1305C11, "S1305C11", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1305C1  : S1305C2 {
  ::S1305C11 s1305c1f0;
  ::S1305C11 s1305c1f1;
  virtual  ~S1305C1(); // _ZN7S1305C1D1Ev
  virtual void  v1(); // _ZN7S1305C12v1Ev
  virtual void  v2(); // _ZN7S1305C12v2Ev
  virtual void  v3(); // _ZN7S1305C12v3Ev
  virtual void  v4(); // _ZN7S1305C12v4Ev
  virtual void  v5(); // _ZN7S1305C12v5Ev
  virtual void  v6(); // _ZN7S1305C12v6Ev
  virtual void  v7(); // _ZN7S1305C12v7Ev
  virtual void  v8(); // _ZN7S1305C12v8Ev
  virtual void  v9(); // _ZN7S1305C12v9Ev
  virtual void  v10(); // _ZN7S1305C13v10Ev
  S1305C1(); // tgen
};
//SIG(1 S1305C1) 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} vd v77 v78 v79 v80 v81 v82 v83 v84 v85 FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC10{ m Fi[4]} Fi[2] Fi:1 Fi:1} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC11{ m Fp FC12{ BC13{ m Fi[4]}} Fp[3]} FC11}


 S1305C1 ::~S1305C1(){ note_dtor("S1305C1", this);}
void  S1305C1 ::v1(){vfunc_called(this, "_ZN7S1305C12v1Ev");}
void  S1305C1 ::v2(){vfunc_called(this, "_ZN7S1305C12v2Ev");}
void  S1305C1 ::v3(){vfunc_called(this, "_ZN7S1305C12v3Ev");}
void  S1305C1 ::v4(){vfunc_called(this, "_ZN7S1305C12v4Ev");}
void  S1305C1 ::v5(){vfunc_called(this, "_ZN7S1305C12v5Ev");}
void  S1305C1 ::v6(){vfunc_called(this, "_ZN7S1305C12v6Ev");}
void  S1305C1 ::v7(){vfunc_called(this, "_ZN7S1305C12v7Ev");}
void  S1305C1 ::v8(){vfunc_called(this, "_ZN7S1305C12v8Ev");}
void  S1305C1 ::v9(){vfunc_called(this, "_ZN7S1305C12v9Ev");}
void  S1305C1 ::v10(){vfunc_called(this, "_ZN7S1305C13v10Ev");}
S1305C1 ::S1305C1(){ note_ctor("S1305C1", this);} // tgen

static void Test_S1305C1()
{
  extern Class_Descriptor cd_S1305C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,42)];
    init_test(&cd_S1305C1, buf);
    S1305C1 *dp, &lv = *(dp=new (buf) S1305C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,164), "sizeof(S1305C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1305C1)");
    check_base_class_offset(lv, (S1305C4*)(S1305C3*)(S1305C2*), 0, "S1305C1");
    check_base_class_offset(lv, (S1305C3*)(S1305C2*), 0, "S1305C1");
    check_base_class_offset(lv, (S1305C2*), 0, "S1305C1");
    check_field_offset(lv, s1305c1f0, ABISELECT(144,100), "S1305C1.s1305c1f0");
    check_field_offset(lv, s1305c1f1, ABISELECT(192,132), "S1305C1.s1305c1f1");
    test_class_info(&lv, &cd_S1305C1);
    dp->~S1305C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1305C1(Test_S1305C1, "S1305C1", ABISELECT(240,164));

#else // __cplusplus

extern void _ZN7S1305C1C1Ev();
extern void _ZN7S1305C1D1Ev();
Name_Map name_map_S1305C1[] = {
  NSPAIR(_ZN7S1305C1C1Ev),
  NSPAIR(_ZN7S1305C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1305C4;
extern VTBL_ENTRY _ZTI7S1305C4[];
extern  VTBL_ENTRY _ZTV7S1305C4[];
extern Class_Descriptor cd_S1305C3;
extern VTBL_ENTRY _ZTI7S1305C3[];
extern  VTBL_ENTRY _ZTV7S1305C3[];
extern Class_Descriptor cd_S1305C2;
extern VTBL_ENTRY _ZTI7S1305C2[];
extern  VTBL_ENTRY _ZTV7S1305C2[];
static Base_Class bases_S1305C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1305C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1305C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1305C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1305C1[];
extern void _ZN7S1305C1D1Ev();
extern void _ZN7S1305C1D0Ev();
extern void _ZN7S1305C43v11Ev();
extern void _ZN7S1305C43v12Ev();
extern void _ZN7S1305C43v13Ev();
extern void _ZN7S1305C43v14Ev();
extern void _ZN7S1305C43v15Ev();
extern void _ZN7S1305C43v16Ev();
extern void _ZN7S1305C43v17Ev();
extern void _ZN7S1305C43v18Ev();
extern void _ZN7S1305C43v19Ev();
extern void _ZN7S1305C43v20Ev();
extern void _ZN7S1305C43v21Ev();
extern void _ZN7S1305C43v22Ev();
extern void _ZN7S1305C43v23Ev();
extern void _ZN7S1305C43v24Ev();
extern void _ZN7S1305C43v25Ev();
extern void _ZN7S1305C43v26Ev();
extern void _ZN7S1305C43v27Ev();
extern void _ZN7S1305C43v28Ev();
extern void _ZN7S1305C43v29Ev();
extern void _ZN7S1305C43v30Ev();
extern void _ZN7S1305C43v31Ev();
extern void _ZN7S1305C43v32Ev();
extern void _ZN7S1305C43v33Ev();
extern void _ZN7S1305C43v34Ev();
extern void _ZN7S1305C43v35Ev();
extern void _ZN7S1305C43v36Ev();
extern void _ZN7S1305C43v37Ev();
extern void _ZN7S1305C43v38Ev();
extern void _ZN7S1305C43v39Ev();
extern void _ZN7S1305C43v40Ev();
extern void _ZN7S1305C43v41Ev();
extern void _ZN7S1305C43v42Ev();
extern void _ZN7S1305C43v43Ev();
extern void _ZN7S1305C43v44Ev();
extern void _ZN7S1305C43v45Ev();
extern void _ZN7S1305C43v46Ev();
extern void _ZN7S1305C43v47Ev();
extern void _ZN7S1305C43v48Ev();
extern void _ZN7S1305C43v49Ev();
extern void _ZN7S1305C43v50Ev();
extern void _ZN7S1305C43v51Ev();
extern void _ZN7S1305C43v52Ev();
extern void _ZN7S1305C43v53Ev();
extern void _ZN7S1305C43v54Ev();
extern void _ZN7S1305C43v55Ev();
extern void _ZN7S1305C43v56Ev();
extern void _ZN7S1305C43v57Ev();
extern void _ZN7S1305C43v58Ev();
extern void _ZN7S1305C43v59Ev();
extern void _ZN7S1305C43v60Ev();
extern void _ZN7S1305C43v61Ev();
extern void _ZN7S1305C43v62Ev();
extern void _ZN7S1305C43v63Ev();
extern void _ZN7S1305C43v64Ev();
extern void _ZN7S1305C43v65Ev();
extern void _ZN7S1305C43v66Ev();
extern void _ZN7S1305C43v67Ev();
extern void _ZN7S1305C43v68Ev();
extern void _ZN7S1305C43v69Ev();
extern void _ZN7S1305C43v70Ev();
extern void _ZN7S1305C43v71Ev();
extern void _ZN7S1305C43v72Ev();
extern void _ZN7S1305C43v73Ev();
extern void _ZN7S1305C43v74Ev();
extern void _ZN7S1305C33v75Ev();
extern void _ZN7S1305C33v76Ev();
extern void _ZN7S1305C23v77Ev();
extern void _ZN7S1305C23v78Ev();
extern void _ZN7S1305C23v79Ev();
extern void _ZN7S1305C23v80Ev();
extern void _ZN7S1305C23v81Ev();
extern void _ZN7S1305C23v82Ev();
extern void _ZN7S1305C23v83Ev();
extern void _ZN7S1305C23v84Ev();
extern void _ZN7S1305C23v85Ev();
extern void _ZN7S1305C12v1Ev();
extern void _ZN7S1305C12v2Ev();
extern void _ZN7S1305C12v3Ev();
extern void _ZN7S1305C12v4Ev();
extern void _ZN7S1305C12v5Ev();
extern void _ZN7S1305C12v6Ev();
extern void _ZN7S1305C12v7Ev();
extern void _ZN7S1305C12v8Ev();
extern void _ZN7S1305C12v9Ev();
extern void _ZN7S1305C13v10Ev();
static  VTBL_ENTRY vtc_S1305C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1305C1[0]),
  (VTBL_ENTRY)&_ZN7S1305C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1305C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v71Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v72Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v73Ev,
  (VTBL_ENTRY)&_ZN7S1305C43v74Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v75Ev,
  (VTBL_ENTRY)&_ZN7S1305C33v76Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v79Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v80Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v81Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v82Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v83Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v84Ev,
  (VTBL_ENTRY)&_ZN7S1305C23v85Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1305C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1305C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S1305C1[];
extern  VTBL_ENTRY _ZTV7S1305C1[];
Class_Descriptor cd_S1305C1 = {  "S1305C1", // class name
  bases_S1305C1, 3,
  &(vtc_S1305C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,164), // object size
  NSPAIRA(_ZTI7S1305C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1305C1),89, //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  S1439C4  {
  int s1439c4f0;
  __tsi64 s1439c4f1;
  void *s1439c4f2[4];
  int s1439c4f3[2];
  void *s1439c4f4;
  ::S3423C4_nt s1439c4f5;
  void *s1439c4f6[2];
  virtual  ~S1439C4(); // _ZN7S1439C4D1Ev
  virtual void  v4(); // _ZN7S1439C42v4Ev
  virtual void  v5(); // _ZN7S1439C42v5Ev
  virtual void  v6(); // _ZN7S1439C42v6Ev
  virtual void  v7(); // _ZN7S1439C42v7Ev
  virtual void  v8(); // _ZN7S1439C42v8Ev
  virtual void  v9(); // _ZN7S1439C42v9Ev
  virtual void  v10(); // _ZN7S1439C43v10Ev
  virtual void  v11(); // _ZN7S1439C43v11Ev
  virtual void  v12(); // _ZN7S1439C43v12Ev
  virtual void  v13(); // _ZN7S1439C43v13Ev
  virtual void  v14(); // _ZN7S1439C43v14Ev
  virtual void  v15(); // _ZN7S1439C43v15Ev
  virtual void  v16(); // _ZN7S1439C43v16Ev
  virtual void  v17(); // _ZN7S1439C43v17Ev
  virtual void  v18(); // _ZN7S1439C43v18Ev
  virtual void  v19(); // _ZN7S1439C43v19Ev
  virtual void  v20(); // _ZN7S1439C43v20Ev
  virtual void  v21(); // _ZN7S1439C43v21Ev
  virtual void  v22(); // _ZN7S1439C43v22Ev
  virtual void  v23(); // _ZN7S1439C43v23Ev
  virtual void  v24(); // _ZN7S1439C43v24Ev
  virtual void  v25(); // _ZN7S1439C43v25Ev
  virtual void  v26(); // _ZN7S1439C43v26Ev
  virtual void  v27(); // _ZN7S1439C43v27Ev
  virtual void  v28(); // _ZN7S1439C43v28Ev
  virtual void  v29(); // _ZN7S1439C43v29Ev
  virtual void  v30(); // _ZN7S1439C43v30Ev
  virtual void  v31(); // _ZN7S1439C43v31Ev
  virtual void  v32(); // _ZN7S1439C43v32Ev
  virtual void  v33(); // _ZN7S1439C43v33Ev
  virtual void  v34(); // _ZN7S1439C43v34Ev
  virtual void  v35(); // _ZN7S1439C43v35Ev
  virtual void  v36(); // _ZN7S1439C43v36Ev
  virtual void  v37(); // _ZN7S1439C43v37Ev
  virtual void  v38(); // _ZN7S1439C43v38Ev
  virtual void  v39(); // _ZN7S1439C43v39Ev
  virtual void  v40(); // _ZN7S1439C43v40Ev
  virtual void  v41(); // _ZN7S1439C43v41Ev
  virtual void  v42(); // _ZN7S1439C43v42Ev
  virtual void  v43(); // _ZN7S1439C43v43Ev
  virtual void  v44(); // _ZN7S1439C43v44Ev
  virtual void  v45(); // _ZN7S1439C43v45Ev
  virtual void  v46(); // _ZN7S1439C43v46Ev
  virtual void  v47(); // _ZN7S1439C43v47Ev
  virtual void  v48(); // _ZN7S1439C43v48Ev
  virtual void  v49(); // _ZN7S1439C43v49Ev
  virtual void  v50(); // _ZN7S1439C43v50Ev
  virtual void  v51(); // _ZN7S1439C43v51Ev
  virtual void  v52(); // _ZN7S1439C43v52Ev
  virtual void  v53(); // _ZN7S1439C43v53Ev
  virtual void  v54(); // _ZN7S1439C43v54Ev
  virtual void  v55(); // _ZN7S1439C43v55Ev
  virtual void  v56(); // _ZN7S1439C43v56Ev
  virtual void  v57(); // _ZN7S1439C43v57Ev
  virtual void  v58(); // _ZN7S1439C43v58Ev
  virtual void  v59(); // _ZN7S1439C43v59Ev
  virtual void  v60(); // _ZN7S1439C43v60Ev
  virtual void  v61(); // _ZN7S1439C43v61Ev
  virtual void  v62(); // _ZN7S1439C43v62Ev
  virtual void  v63(); // _ZN7S1439C43v63Ev
  virtual void  v64(); // _ZN7S1439C43v64Ev
  virtual void  v65(); // _ZN7S1439C43v65Ev
  virtual void  v66(); // _ZN7S1439C43v66Ev
  virtual void  v67(); // _ZN7S1439C43v67Ev
  S1439C4(); // tgen
};
//SIG(-1 S1439C4) 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]}


 S1439C4 ::~S1439C4(){ note_dtor("S1439C4", this);}
void  S1439C4 ::v4(){vfunc_called(this, "_ZN7S1439C42v4Ev");}
void  S1439C4 ::v5(){vfunc_called(this, "_ZN7S1439C42v5Ev");}
void  S1439C4 ::v6(){vfunc_called(this, "_ZN7S1439C42v6Ev");}
void  S1439C4 ::v7(){vfunc_called(this, "_ZN7S1439C42v7Ev");}
void  S1439C4 ::v8(){vfunc_called(this, "_ZN7S1439C42v8Ev");}
void  S1439C4 ::v9(){vfunc_called(this, "_ZN7S1439C42v9Ev");}
void  S1439C4 ::v10(){vfunc_called(this, "_ZN7S1439C43v10Ev");}
void  S1439C4 ::v11(){vfunc_called(this, "_ZN7S1439C43v11Ev");}
void  S1439C4 ::v12(){vfunc_called(this, "_ZN7S1439C43v12Ev");}
void  S1439C4 ::v13(){vfunc_called(this, "_ZN7S1439C43v13Ev");}
void  S1439C4 ::v14(){vfunc_called(this, "_ZN7S1439C43v14Ev");}
void  S1439C4 ::v15(){vfunc_called(this, "_ZN7S1439C43v15Ev");}
void  S1439C4 ::v16(){vfunc_called(this, "_ZN7S1439C43v16Ev");}
void  S1439C4 ::v17(){vfunc_called(this, "_ZN7S1439C43v17Ev");}
void  S1439C4 ::v18(){vfunc_called(this, "_ZN7S1439C43v18Ev");}
void  S1439C4 ::v19(){vfunc_called(this, "_ZN7S1439C43v19Ev");}
void  S1439C4 ::v20(){vfunc_called(this, "_ZN7S1439C43v20Ev");}
void  S1439C4 ::v21(){vfunc_called(this, "_ZN7S1439C43v21Ev");}
void  S1439C4 ::v22(){vfunc_called(this, "_ZN7S1439C43v22Ev");}
void  S1439C4 ::v23(){vfunc_called(this, "_ZN7S1439C43v23Ev");}
void  S1439C4 ::v24(){vfunc_called(this, "_ZN7S1439C43v24Ev");}
void  S1439C4 ::v25(){vfunc_called(this, "_ZN7S1439C43v25Ev");}
void  S1439C4 ::v26(){vfunc_called(this, "_ZN7S1439C43v26Ev");}
void  S1439C4 ::v27(){vfunc_called(this, "_ZN7S1439C43v27Ev");}
void  S1439C4 ::v28(){vfunc_called(this, "_ZN7S1439C43v28Ev");}
void  S1439C4 ::v29(){vfunc_called(this, "_ZN7S1439C43v29Ev");}
void  S1439C4 ::v30(){vfunc_called(this, "_ZN7S1439C43v30Ev");}
void  S1439C4 ::v31(){vfunc_called(this, "_ZN7S1439C43v31Ev");}
void  S1439C4 ::v32(){vfunc_called(this, "_ZN7S1439C43v32Ev");}
void  S1439C4 ::v33(){vfunc_called(this, "_ZN7S1439C43v33Ev");}
void  S1439C4 ::v34(){vfunc_called(this, "_ZN7S1439C43v34Ev");}
void  S1439C4 ::v35(){vfunc_called(this, "_ZN7S1439C43v35Ev");}
void  S1439C4 ::v36(){vfunc_called(this, "_ZN7S1439C43v36Ev");}
void  S1439C4 ::v37(){vfunc_called(this, "_ZN7S1439C43v37Ev");}
void  S1439C4 ::v38(){vfunc_called(this, "_ZN7S1439C43v38Ev");}
void  S1439C4 ::v39(){vfunc_called(this, "_ZN7S1439C43v39Ev");}
void  S1439C4 ::v40(){vfunc_called(this, "_ZN7S1439C43v40Ev");}
void  S1439C4 ::v41(){vfunc_called(this, "_ZN7S1439C43v41Ev");}
void  S1439C4 ::v42(){vfunc_called(this, "_ZN7S1439C43v42Ev");}
void  S1439C4 ::v43(){vfunc_called(this, "_ZN7S1439C43v43Ev");}
void  S1439C4 ::v44(){vfunc_called(this, "_ZN7S1439C43v44Ev");}
void  S1439C4 ::v45(){vfunc_called(this, "_ZN7S1439C43v45Ev");}
void  S1439C4 ::v46(){vfunc_called(this, "_ZN7S1439C43v46Ev");}
void  S1439C4 ::v47(){vfunc_called(this, "_ZN7S1439C43v47Ev");}
void  S1439C4 ::v48(){vfunc_called(this, "_ZN7S1439C43v48Ev");}
void  S1439C4 ::v49(){vfunc_called(this, "_ZN7S1439C43v49Ev");}
void  S1439C4 ::v50(){vfunc_called(this, "_ZN7S1439C43v50Ev");}
void  S1439C4 ::v51(){vfunc_called(this, "_ZN7S1439C43v51Ev");}
void  S1439C4 ::v52(){vfunc_called(this, "_ZN7S1439C43v52Ev");}
void  S1439C4 ::v53(){vfunc_called(this, "_ZN7S1439C43v53Ev");}
void  S1439C4 ::v54(){vfunc_called(this, "_ZN7S1439C43v54Ev");}
void  S1439C4 ::v55(){vfunc_called(this, "_ZN7S1439C43v55Ev");}
void  S1439C4 ::v56(){vfunc_called(this, "_ZN7S1439C43v56Ev");}
void  S1439C4 ::v57(){vfunc_called(this, "_ZN7S1439C43v57Ev");}
void  S1439C4 ::v58(){vfunc_called(this, "_ZN7S1439C43v58Ev");}
void  S1439C4 ::v59(){vfunc_called(this, "_ZN7S1439C43v59Ev");}
void  S1439C4 ::v60(){vfunc_called(this, "_ZN7S1439C43v60Ev");}
void  S1439C4 ::v61(){vfunc_called(this, "_ZN7S1439C43v61Ev");}
void  S1439C4 ::v62(){vfunc_called(this, "_ZN7S1439C43v62Ev");}
void  S1439C4 ::v63(){vfunc_called(this, "_ZN7S1439C43v63Ev");}
void  S1439C4 ::v64(){vfunc_called(this, "_ZN7S1439C43v64Ev");}
void  S1439C4 ::v65(){vfunc_called(this, "_ZN7S1439C43v65Ev");}
void  S1439C4 ::v66(){vfunc_called(this, "_ZN7S1439C43v66Ev");}
void  S1439C4 ::v67(){vfunc_called(this, "_ZN7S1439C43v67Ev");}
S1439C4 ::S1439C4(){ note_ctor("S1439C4", this);} // tgen

static void Test_S1439C4()
{
  extern Class_Descriptor cd_S1439C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1439C4, buf);
    S1439C4 *dp, &lv = *(dp=new (buf) S1439C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1439C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C4)");
    check_field_offset(lv, s1439c4f0, ABISELECT(8,4), "S1439C4.s1439c4f0");
    check_field_offset(lv, s1439c4f1, ABISELECT(16,8), "S1439C4.s1439c4f1");
    check_field_offset(lv, s1439c4f2, ABISELECT(24,16), "S1439C4.s1439c4f2");
    check_field_offset(lv, s1439c4f3, ABISELECT(56,32), "S1439C4.s1439c4f3");
    check_field_offset(lv, s1439c4f4, ABISELECT(64,40), "S1439C4.s1439c4f4");
    check_field_offset(lv, s1439c4f5, ABISELECT(72,44), "S1439C4.s1439c4f5");
    check_field_offset(lv, s1439c4f6, ABISELECT(80,52), "S1439C4.s1439c4f6");
    test_class_info(&lv, &cd_S1439C4);
    dp->~S1439C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C4(Test_S1439C4, "S1439C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1439C4C1Ev();
extern void _ZN7S1439C4D1Ev();
Name_Map name_map_S1439C4[] = {
  NSPAIR(_ZN7S1439C4C1Ev),
  NSPAIR(_ZN7S1439C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1439C4[];
extern void _ZN7S1439C4D1Ev();
extern void _ZN7S1439C4D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
static  VTBL_ENTRY vtc_S1439C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C4[0]),
  (VTBL_ENTRY)&_ZN7S1439C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
};
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
Class_Descriptor cd_S1439C4 = {  "S1439C4", // class name
  0,0,//no base classes
  &(vtc_S1439C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1439C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1439C4),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  S1439C3  : S1439C4 {
  virtual  ~S1439C3(); // _ZN7S1439C3D1Ev
  virtual void  v68(); // _ZN7S1439C33v68Ev
  virtual void  v69(); // _ZN7S1439C33v69Ev
  S1439C3(); // tgen
};
//SIG(-1 S1439C3) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2}


 S1439C3 ::~S1439C3(){ note_dtor("S1439C3", this);}
void  S1439C3 ::v68(){vfunc_called(this, "_ZN7S1439C33v68Ev");}
void  S1439C3 ::v69(){vfunc_called(this, "_ZN7S1439C33v69Ev");}
S1439C3 ::S1439C3(){ note_ctor("S1439C3", this);} // tgen

static void Test_S1439C3()
{
  extern Class_Descriptor cd_S1439C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1439C3, buf);
    S1439C3 *dp, &lv = *(dp=new (buf) S1439C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1439C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C3)");
    check_base_class_offset(lv, (S1439C4*), 0, "S1439C3");
    test_class_info(&lv, &cd_S1439C3);
    dp->~S1439C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C3(Test_S1439C3, "S1439C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1439C3C1Ev();
extern void _ZN7S1439C3D1Ev();
Name_Map name_map_S1439C3[] = {
  NSPAIR(_ZN7S1439C3C1Ev),
  NSPAIR(_ZN7S1439C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1439C4;
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
static Base_Class bases_S1439C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1439C3[];
extern void _ZN7S1439C3D1Ev();
extern void _ZN7S1439C3D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
extern void _ZN7S1439C33v68Ev();
extern void _ZN7S1439C33v69Ev();
static  VTBL_ENTRY vtc_S1439C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C3[0]),
  (VTBL_ENTRY)&_ZN7S1439C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v69Ev,
};
extern VTBL_ENTRY _ZTI7S1439C3[];
extern  VTBL_ENTRY _ZTV7S1439C3[];
Class_Descriptor cd_S1439C3 = {  "S1439C3", // class name
  bases_S1439C3, 1,
  &(vtc_S1439C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1439C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1439C3),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C2  : S1439C3 {
  ::S205C8_nt s1439c2f0;
  ::S1532C10_nt s1439c2f1;
  int s1439c2f2[2];
  unsigned int s1439c2f3:1;
  unsigned int s1439c2f4:1;
  virtual  ~S1439C2(); // _ZN7S1439C2D1Ev
  virtual void  v70(); // _ZN7S1439C23v70Ev
  virtual void  v71(); // _ZN7S1439C23v71Ev
  virtual void  v72(); // _ZN7S1439C23v72Ev
  virtual void  v73(); // _ZN7S1439C23v73Ev
  virtual void  v74(); // _ZN7S1439C23v74Ev
  virtual void  v75(); // _ZN7S1439C23v75Ev
  virtual void  v76(); // _ZN7S1439C23v76Ev
  virtual void  v77(); // _ZN7S1439C23v77Ev
  virtual void  v78(); // _ZN7S1439C23v78Ev
  S1439C2(); // tgen
};
//SIG(-1 S1439C2) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v74 v75} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC9{ m Fi[4]} Fi[2] Fi:1 Fi:1}


 S1439C2 ::~S1439C2(){ note_dtor("S1439C2", this);}
void  S1439C2 ::v70(){vfunc_called(this, "_ZN7S1439C23v70Ev");}
void  S1439C2 ::v71(){vfunc_called(this, "_ZN7S1439C23v71Ev");}
void  S1439C2 ::v72(){vfunc_called(this, "_ZN7S1439C23v72Ev");}
void  S1439C2 ::v73(){vfunc_called(this, "_ZN7S1439C23v73Ev");}
void  S1439C2 ::v74(){vfunc_called(this, "_ZN7S1439C23v74Ev");}
void  S1439C2 ::v75(){vfunc_called(this, "_ZN7S1439C23v75Ev");}
void  S1439C2 ::v76(){vfunc_called(this, "_ZN7S1439C23v76Ev");}
void  S1439C2 ::v77(){vfunc_called(this, "_ZN7S1439C23v77Ev");}
void  S1439C2 ::v78(){vfunc_called(this, "_ZN7S1439C23v78Ev");}
S1439C2 ::S1439C2(){ note_ctor("S1439C2", this);} // tgen

static void Test_S1439C2()
{
  extern Class_Descriptor cd_S1439C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S1439C2, buf);
    S1439C2 *dp, &lv = *(dp=new (buf) S1439C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S1439C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C2)");
    check_base_class_offset(lv, (S1439C4*)(S1439C3*), 0, "S1439C2");
    check_base_class_offset(lv, (S1439C3*), 0, "S1439C2");
    check_field_offset(lv, s1439c2f0, ABISELECT(96,60), "S1439C2.s1439c2f0");
    check_field_offset(lv, s1439c2f1, ABISELECT(112,72), "S1439C2.s1439c2f1");
    check_field_offset(lv, s1439c2f2, ABISELECT(128,88), "S1439C2.s1439c2f2");
    set_bf_and_test(lv, s1439c2f3, ABISELECT(136,96), 0, 1, 1, "S1439C2");
    set_bf_and_test(lv, s1439c2f4, ABISELECT(136,96), 1, 1, 1, "S1439C2");
    test_class_info(&lv, &cd_S1439C2);
    dp->~S1439C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C2(Test_S1439C2, "S1439C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S1439C2C1Ev();
extern void _ZN7S1439C2D1Ev();
Name_Map name_map_S1439C2[] = {
  NSPAIR(_ZN7S1439C2C1Ev),
  NSPAIR(_ZN7S1439C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1439C4;
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
extern Class_Descriptor cd_S1439C3;
extern VTBL_ENTRY _ZTI7S1439C3[];
extern  VTBL_ENTRY _ZTV7S1439C3[];
static Base_Class bases_S1439C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1439C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1439C2[];
extern void _ZN7S1439C2D1Ev();
extern void _ZN7S1439C2D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
extern void _ZN7S1439C33v68Ev();
extern void _ZN7S1439C33v69Ev();
extern void _ZN7S1439C23v70Ev();
extern void _ZN7S1439C23v71Ev();
extern void _ZN7S1439C23v72Ev();
extern void _ZN7S1439C23v73Ev();
extern void _ZN7S1439C23v74Ev();
extern void _ZN7S1439C23v75Ev();
extern void _ZN7S1439C23v76Ev();
extern void _ZN7S1439C23v77Ev();
extern void _ZN7S1439C23v78Ev();
static  VTBL_ENTRY vtc_S1439C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C2[0]),
  (VTBL_ENTRY)&_ZN7S1439C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v70Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v71Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v78Ev,
};
extern VTBL_ENTRY _ZTI7S1439C2[];
extern  VTBL_ENTRY _ZTV7S1439C2[];
Class_Descriptor cd_S1439C2 = {  "S1439C2", // class name
  bases_S1439C2, 2,
  &(vtc_S1439C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S1439C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1439C2),79, //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  S1439C14_nt  {
  int s1439c14f0[2];
  char s1439c14f1[2];
  void  mf1439c14(); // _ZN11S1439C14_nt9mf1439c14Ev
};
//SIG(-1 S1439C14_nt) C1{ m Fi[2] Fc[2]}


void  S1439C14_nt ::mf1439c14(){}

//skip512 S1439C14_nt

#else // __cplusplus

Class_Descriptor cd_S1439C14_nt = {  "S1439C14_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  S1439C13_nt  : S1439C14_nt {
};
//SIG(-1 S1439C13_nt) C1{ BC2{ m Fi[2] Fc[2]}}



//skip512 S1439C13_nt

#else // __cplusplus

extern Class_Descriptor cd_S1439C14_nt;
static Base_Class bases_S1439C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1439C12_nt  {
  ::S1439C13_nt s1439c12f0;
  char s1439c12f1[2];
  void  mf1439c12(); // _ZN11S1439C12_nt9mf1439c12Ev
};
//SIG(1 S1439C12_nt) C1{ m FC2{ BC3{ m Fi[2] Fc[2]}} Fc[2]}


void  S1439C12_nt ::mf1439c12(){}

//skip512 S1439C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1439C1  : S1439C2 {
  void *s1439c1f0;
  ::S1305C13_nt s1439c1f1;
  ::S1439C12_nt s1439c1f2[2];
  virtual  ~S1439C1(); // _ZN7S1439C1D1Ev
  virtual void  v1(); // _ZN7S1439C12v1Ev
  virtual void  v2(); // _ZN7S1439C12v2Ev
  virtual void  v3(); // _ZN7S1439C12v3Ev
  S1439C1(); // tgen
};
//SIG(1 S1439C1) C1{ BC2{ BC3{ BC4{ 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 FC5{ m Fi[2]} Fp[2]} vd v68 v69} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC10{ m Fi[4]} Fi[2] Fi:1 Fi:1} vd v1 v2 v3 Fp FC11{ m Fi[4]} FC12{ m FC13{ BC14{ m Fi[2] Fc[2]}} Fc[2]}[2]}


 S1439C1 ::~S1439C1(){ note_dtor("S1439C1", this);}
void  S1439C1 ::v1(){vfunc_called(this, "_ZN7S1439C12v1Ev");}
void  S1439C1 ::v2(){vfunc_called(this, "_ZN7S1439C12v2Ev");}
void  S1439C1 ::v3(){vfunc_called(this, "_ZN7S1439C12v3Ev");}
S1439C1 ::S1439C1(){ note_ctor("S1439C1", this);} // tgen

static void Test_S1439C1()
{
  extern Class_Descriptor cd_S1439C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,39)];
    init_test(&cd_S1439C1, buf);
    S1439C1 *dp, &lv = *(dp=new (buf) S1439C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,152), "sizeof(S1439C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1439C1)");
    check_base_class_offset(lv, (S1439C4*)(S1439C3*)(S1439C2*), 0, "S1439C1");
    check_base_class_offset(lv, (S1439C3*)(S1439C2*), 0, "S1439C1");
    check_base_class_offset(lv, (S1439C2*), 0, "S1439C1");
    check_field_offset(lv, s1439c1f0, ABISELECT(144,100), "S1439C1.s1439c1f0");
    check_field_offset(lv, s1439c1f1, ABISELECT(152,104), "S1439C1.s1439c1f1");
    check_field_offset(lv, s1439c1f2, ABISELECT(168,120), "S1439C1.s1439c1f2");
    test_class_info(&lv, &cd_S1439C1);
    dp->~S1439C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1439C1(Test_S1439C1, "S1439C1", ABISELECT(200,152));

#else // __cplusplus

extern void _ZN7S1439C1C1Ev();
extern void _ZN7S1439C1D1Ev();
Name_Map name_map_S1439C1[] = {
  NSPAIR(_ZN7S1439C1C1Ev),
  NSPAIR(_ZN7S1439C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1439C4;
extern VTBL_ENTRY _ZTI7S1439C4[];
extern  VTBL_ENTRY _ZTV7S1439C4[];
extern Class_Descriptor cd_S1439C3;
extern VTBL_ENTRY _ZTI7S1439C3[];
extern  VTBL_ENTRY _ZTV7S1439C3[];
extern Class_Descriptor cd_S1439C2;
extern VTBL_ENTRY _ZTI7S1439C2[];
extern  VTBL_ENTRY _ZTV7S1439C2[];
static Base_Class bases_S1439C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1439C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1439C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1439C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1439C1[];
extern void _ZN7S1439C1D1Ev();
extern void _ZN7S1439C1D0Ev();
extern void _ZN7S1439C42v4Ev();
extern void _ZN7S1439C42v5Ev();
extern void _ZN7S1439C42v6Ev();
extern void _ZN7S1439C42v7Ev();
extern void _ZN7S1439C42v8Ev();
extern void _ZN7S1439C42v9Ev();
extern void _ZN7S1439C43v10Ev();
extern void _ZN7S1439C43v11Ev();
extern void _ZN7S1439C43v12Ev();
extern void _ZN7S1439C43v13Ev();
extern void _ZN7S1439C43v14Ev();
extern void _ZN7S1439C43v15Ev();
extern void _ZN7S1439C43v16Ev();
extern void _ZN7S1439C43v17Ev();
extern void _ZN7S1439C43v18Ev();
extern void _ZN7S1439C43v19Ev();
extern void _ZN7S1439C43v20Ev();
extern void _ZN7S1439C43v21Ev();
extern void _ZN7S1439C43v22Ev();
extern void _ZN7S1439C43v23Ev();
extern void _ZN7S1439C43v24Ev();
extern void _ZN7S1439C43v25Ev();
extern void _ZN7S1439C43v26Ev();
extern void _ZN7S1439C43v27Ev();
extern void _ZN7S1439C43v28Ev();
extern void _ZN7S1439C43v29Ev();
extern void _ZN7S1439C43v30Ev();
extern void _ZN7S1439C43v31Ev();
extern void _ZN7S1439C43v32Ev();
extern void _ZN7S1439C43v33Ev();
extern void _ZN7S1439C43v34Ev();
extern void _ZN7S1439C43v35Ev();
extern void _ZN7S1439C43v36Ev();
extern void _ZN7S1439C43v37Ev();
extern void _ZN7S1439C43v38Ev();
extern void _ZN7S1439C43v39Ev();
extern void _ZN7S1439C43v40Ev();
extern void _ZN7S1439C43v41Ev();
extern void _ZN7S1439C43v42Ev();
extern void _ZN7S1439C43v43Ev();
extern void _ZN7S1439C43v44Ev();
extern void _ZN7S1439C43v45Ev();
extern void _ZN7S1439C43v46Ev();
extern void _ZN7S1439C43v47Ev();
extern void _ZN7S1439C43v48Ev();
extern void _ZN7S1439C43v49Ev();
extern void _ZN7S1439C43v50Ev();
extern void _ZN7S1439C43v51Ev();
extern void _ZN7S1439C43v52Ev();
extern void _ZN7S1439C43v53Ev();
extern void _ZN7S1439C43v54Ev();
extern void _ZN7S1439C43v55Ev();
extern void _ZN7S1439C43v56Ev();
extern void _ZN7S1439C43v57Ev();
extern void _ZN7S1439C43v58Ev();
extern void _ZN7S1439C43v59Ev();
extern void _ZN7S1439C43v60Ev();
extern void _ZN7S1439C43v61Ev();
extern void _ZN7S1439C43v62Ev();
extern void _ZN7S1439C43v63Ev();
extern void _ZN7S1439C43v64Ev();
extern void _ZN7S1439C43v65Ev();
extern void _ZN7S1439C43v66Ev();
extern void _ZN7S1439C43v67Ev();
extern void _ZN7S1439C33v68Ev();
extern void _ZN7S1439C33v69Ev();
extern void _ZN7S1439C23v70Ev();
extern void _ZN7S1439C23v71Ev();
extern void _ZN7S1439C23v72Ev();
extern void _ZN7S1439C23v73Ev();
extern void _ZN7S1439C23v74Ev();
extern void _ZN7S1439C23v75Ev();
extern void _ZN7S1439C23v76Ev();
extern void _ZN7S1439C23v77Ev();
extern void _ZN7S1439C23v78Ev();
extern void _ZN7S1439C12v1Ev();
extern void _ZN7S1439C12v2Ev();
extern void _ZN7S1439C12v3Ev();
static  VTBL_ENTRY vtc_S1439C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1439C1[0]),
  (VTBL_ENTRY)&_ZN7S1439C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1439C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1439C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1439C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1439C33v69Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v70Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v71Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1439C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1439C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1439C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1439C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S1439C1[];
extern  VTBL_ENTRY _ZTV7S1439C1[];
Class_Descriptor cd_S1439C1 = {  "S1439C1", // class name
  bases_S1439C1, 3,
  &(vtc_S1439C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,152), // object size
  NSPAIRA(_ZTI7S1439C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1439C1),82, //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  S19245C4  {
  short s19245c4f0:6;
  long s19245c4f1;
  short s19245c4f2:4;
  __tsi64 s19245c4f3[6];
  long s19245c4f4[7];
  void *s19245c4f5;
  virtual void  v6(); // _ZN8S19245C42v6Ev
  ~S19245C4(); // tgen
  S19245C4(); // tgen
};
//SIG(-1 S19245C4) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S19245C4 ::v6(){vfunc_called(this, "_ZN8S19245C42v6Ev");}
S19245C4 ::~S19245C4(){ note_dtor("S19245C4", this);} // tgen
S19245C4 ::S19245C4(){ note_ctor("S19245C4", this);} // tgen

static void Test_S19245C4()
{
  extern Class_Descriptor cd_S19245C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S19245C4, buf);
    S19245C4 *dp, &lv = *(dp=new (buf) S19245C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S19245C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19245C4)");
    set_bf_and_test(lv, s19245c4f0, ABISELECT(8,4), 0, 6, 1, "S19245C4");
    set_bf_and_test(lv, s19245c4f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S19245C4");
    check_field_offset(lv, s19245c4f1, ABISELECT(16,8), "S19245C4.s19245c4f1");
    set_bf_and_test(lv, s19245c4f2, ABISELECT(24,12), 0, 4, 1, "S19245C4");
    set_bf_and_test(lv, s19245c4f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S19245C4");
    check_field_offset(lv, s19245c4f3, ABISELECT(32,16), "S19245C4.s19245c4f3");
    check_field_offset(lv, s19245c4f4, ABISELECT(80,64), "S19245C4.s19245c4f4");
    check_field_offset(lv, s19245c4f5, ABISELECT(136,92), "S19245C4.s19245c4f5");
    test_class_info(&lv, &cd_S19245C4);
    dp->~S19245C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C4(Test_S19245C4, "S19245C4", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN8S19245C4C1Ev();
extern void _ZN8S19245C4D1Ev();
Name_Map name_map_S19245C4[] = {
  NSPAIR(_ZN8S19245C4C1Ev),
  NSPAIR(_ZN8S19245C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19245C4[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C4[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
Class_Descriptor cd_S19245C4 = {  "S19245C4", // class name
  0,0,//no base classes
  &(vtc_S19245C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI8S19245C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19245C4),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  S19245C3  {
  __tsi64 s19245c3f0;
  long double s19245c3f1;
  void *s19245c3f2;
  char s19245c3f3;
  ::S19245C4 s19245c3f4;
  void *s19245c3f5[2];
  long s19245c3f6[8];
  short s19245c3f7;
  void *s19245c3f8;
  __tsi64 s19245c3f9:64;
  virtual void  v1(); // _ZN8S19245C32v1Ev
  ~S19245C3(); // tgen
  S19245C3(); // tgen
};
//SIG(-1 S19245C3) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S19245C3 ::v1(){vfunc_called(this, "_ZN8S19245C32v1Ev");}
S19245C3 ::~S19245C3(){ note_dtor("S19245C3", this);} // tgen
S19245C3 ::S19245C3(){ note_ctor("S19245C3", this);} // tgen

static void Test_S19245C3()
{
  extern Class_Descriptor cd_S19245C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S19245C3, buf);
    S19245C3 *dp, &lv = *(dp=new (buf) S19245C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S19245C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C3)");
    check_field_offset(lv, s19245c3f0, ABISELECT(8,4), "S19245C3.s19245c3f0");
    check_field_offset(lv, s19245c3f1, ABISELECT(16,12), "S19245C3.s19245c3f1");
    check_field_offset(lv, s19245c3f2, ABISELECT(32,24), "S19245C3.s19245c3f2");
    check_field_offset(lv, s19245c3f3, ABISELECT(40,28), "S19245C3.s19245c3f3");
    check_field_offset(lv, s19245c3f4, ABISELECT(48,32), "S19245C3.s19245c3f4");
    check_field_offset(lv, s19245c3f5, ABISELECT(192,128), "S19245C3.s19245c3f5");
    check_field_offset(lv, s19245c3f6, ABISELECT(208,136), "S19245C3.s19245c3f6");
    check_field_offset(lv, s19245c3f7, ABISELECT(272,168), "S19245C3.s19245c3f7");
    check_field_offset(lv, s19245c3f8, ABISELECT(280,172), "S19245C3.s19245c3f8");
    set_bf_and_test(lv, s19245c3f9, ABISELECT(288,176), 0, 64, 1, "S19245C3");
    set_bf_and_test(lv, s19245c3f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S19245C3");
    test_class_info(&lv, &cd_S19245C3);
    dp->~S19245C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C3(Test_S19245C3, "S19245C3", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN8S19245C3C1Ev();
extern void _ZN8S19245C3D1Ev();
Name_Map name_map_S19245C3[] = {
  NSPAIR(_ZN8S19245C3C1Ev),
  NSPAIR(_ZN8S19245C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19245C3[];
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY vtc_S19245C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C3[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
Class_Descriptor cd_S19245C3 = {  "S19245C3", // class name
  0,0,//no base classes
  &(vtc_S19245C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI8S19245C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19245C3),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  S19245C5  : virtual S19245C4 {
  void *s19245c5f0;
  ::S19245C4 s19245c5f1;
  __tsi64 s19245c5f2:3;
  ~S19245C5(); // tgen
  S19245C5(); // tgen
};
//SIG(-1 S19245C5) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S19245C5 ::~S19245C5(){ note_dtor("S19245C5", this);} // tgen
S19245C5 ::S19245C5(){ note_ctor("S19245C5", this);} // tgen

static void Test_S19245C5()
{
  extern Class_Descriptor cd_S19245C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S19245C5, buf);
    S19245C5 *dp, &lv = *(dp=new (buf) S19245C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S19245C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19245C5)");
    check_base_class_offset(lv, (S19245C4*), ABISELECT(168,108), "S19245C5");
    check_field_offset(lv, s19245c5f0, ABISELECT(8,4), "S19245C5.s19245c5f0");
    check_field_offset(lv, s19245c5f1, ABISELECT(16,8), "S19245C5.s19245c5f1");
    set_bf_and_test(lv, s19245c5f2, ABISELECT(160,104), 0, 3, 1, "S19245C5");
    set_bf_and_test(lv, s19245c5f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S19245C5");
    test_class_info(&lv, &cd_S19245C5);
    dp->~S19245C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C5(Test_S19245C5, "S19245C5", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN8S19245C5C1Ev();
extern void _ZN8S19245C5D1Ev();
Name_Map name_map_S19245C5[] = {
  NSPAIR(_ZN8S19245C5C1Ev),
  NSPAIR(_ZN8S19245C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
static Base_Class bases_S19245C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C4,    ABISELECT(168,108), //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 _ZTI8S19245C5[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C5[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTV8S19245C5[];
static  VTT_ENTRY vtt_S19245C5[] = {
  {&(_ZTV8S19245C5[3]),  3,7},
  {&(_ZTV8S19245C5[6]),  6,7},
};
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
Class_Descriptor cd_S19245C5 = {  "S19245C5", // class name
  bases_S19245C5, 1,
  &(vtc_S19245C5[0]), // expected_vtbl_contents
  &(vtt_S19245C5[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI8S19245C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19245C5),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C5),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  S19245C2  : S19245C3 {
  ::S19245C5 s19245c2f0;
  int s19245c2f1;
  void *s19245c2f2;
  int s19245c2f3;
  virtual  ~S19245C2(); // _ZN8S19245C2D1Ev
  virtual void  v2(); // _ZN8S19245C22v2Ev
  S19245C2(); // tgen
};
//SIG(-1 S19245C2) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S19245C2 ::~S19245C2(){ note_dtor("S19245C2", this);}
void  S19245C2 ::v2(){vfunc_called(this, "_ZN8S19245C22v2Ev");}
S19245C2 ::S19245C2(){ note_ctor("S19245C2", this);} // tgen

static void Test_S19245C2()
{
  extern Class_Descriptor cd_S19245C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S19245C2, buf);
    S19245C2 *dp, &lv = *(dp=new (buf) S19245C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S19245C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C2)");
    check_base_class_offset(lv, (S19245C3*), 0, "S19245C2");
    check_field_offset(lv, s19245c2f0, ABISELECT(296,184), "S19245C2.s19245c2f0");
    check_field_offset(lv, s19245c2f1, ABISELECT(608,388), "S19245C2.s19245c2f1");
    check_field_offset(lv, s19245c2f2, ABISELECT(616,392), "S19245C2.s19245c2f2");
    check_field_offset(lv, s19245c2f3, ABISELECT(624,396), "S19245C2.s19245c2f3");
    test_class_info(&lv, &cd_S19245C2);
    dp->~S19245C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C2(Test_S19245C2, "S19245C2", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN8S19245C2C1Ev();
extern void _ZN8S19245C2D1Ev();
Name_Map name_map_S19245C2[] = {
  NSPAIR(_ZN8S19245C2C1Ev),
  NSPAIR(_ZN8S19245C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
static Base_Class bases_S19245C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C2[];
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C2D1Ev();
extern void _ZN8S19245C2D0Ev();
extern void _ZN8S19245C22v2Ev();
static  VTBL_ENTRY vtc_S19245C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C2[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19245C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S19245C2[];
extern  VTBL_ENTRY _ZTV8S19245C2[];
Class_Descriptor cd_S19245C2 = {  "S19245C2", // class name
  bases_S19245C2, 1,
  &(vtc_S19245C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI8S19245C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19245C2),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  S19245C7  {
  int s19245c7f0[2];
  long s19245c7f1[2];
  ::S19245C4 s19245c7f2[3];
  virtual void  v3(); // _ZN8S19245C72v3Ev
  virtual void  v4(); // _ZN8S19245C72v4Ev
  virtual void  v5(); // _ZN8S19245C72v5Ev
  ~S19245C7(); // tgen
  S19245C7(); // tgen
};
//SIG(-1 S19245C7) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S19245C7 ::v3(){vfunc_called(this, "_ZN8S19245C72v3Ev");}
void  S19245C7 ::v4(){vfunc_called(this, "_ZN8S19245C72v4Ev");}
void  S19245C7 ::v5(){vfunc_called(this, "_ZN8S19245C72v5Ev");}
S19245C7 ::~S19245C7(){ note_dtor("S19245C7", this);} // tgen
S19245C7 ::S19245C7(){ note_ctor("S19245C7", this);} // tgen

static void Test_S19245C7()
{
  extern Class_Descriptor cd_S19245C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S19245C7, buf);
    S19245C7 *dp, &lv = *(dp=new (buf) S19245C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S19245C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19245C7)");
    check_field_offset(lv, s19245c7f0, ABISELECT(8,4), "S19245C7.s19245c7f0");
    check_field_offset(lv, s19245c7f1, ABISELECT(16,12), "S19245C7.s19245c7f1");
    check_field_offset(lv, s19245c7f2, ABISELECT(32,20), "S19245C7.s19245c7f2");
    test_class_info(&lv, &cd_S19245C7);
    dp->~S19245C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C7(Test_S19245C7, "S19245C7", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN8S19245C7C1Ev();
extern void _ZN8S19245C7D1Ev();
Name_Map name_map_S19245C7[] = {
  NSPAIR(_ZN8S19245C7C1Ev),
  NSPAIR(_ZN8S19245C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19245C7[];
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY vtc_S19245C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C7[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
Class_Descriptor cd_S19245C7 = {  "S19245C7", // class name
  0,0,//no base classes
  &(vtc_S19245C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI8S19245C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19245C7),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  S19245C10  : S19245C4 , virtual S19245C7 , virtual S19245C5 , virtual S19245C3 {
  ::S19245C3 s19245c10f0;
  short s19245c10f1;
  int s19245c10f2[2];
  ~S19245C10(); // tgen
  S19245C10(); // tgen
};
//SIG(-1 S19245C10) C1{ BC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC3{ v2 v3 v4 Fi[2] Fl[2] FC2[3]} VBC4{ VBC2 Fp FC2 FL:3} VBC5{ v5 FL FD Fp Fc FC2 Fp[2] Fl[8] Fs Fp FL:64} FC5 Fs Fi[2]}


S19245C10 ::~S19245C10(){ note_dtor("S19245C10", this);} // tgen
S19245C10 ::S19245C10(){ note_ctor("S19245C10", this);} // tgen

static void Test_S19245C10()
{
  extern Class_Descriptor cd_S19245C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(98,248)];
    init_test(&cd_S19245C10, buf);
    S19245C10 *dp, &lv = *(dp=new (buf) S19245C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1552,988), "sizeof(S19245C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C10)");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), 0, "S19245C10");
    check_base_class_offset(lv, (S19245C7*), ABISELECT(464,292), "S19245C10");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(1096,708), "S19245C10");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(928,600), "S19245C10");
    check_base_class_offset(lv, (S19245C3*), ABISELECT(1248,804), "S19245C10");
    check_field_offset(lv, s19245c10f0, ABISELECT(144,96), "S19245C10.s19245c10f0");
    check_field_offset(lv, s19245c10f1, ABISELECT(448,280), "S19245C10.s19245c10f1");
    check_field_offset(lv, s19245c10f2, ABISELECT(452,284), "S19245C10.s19245c10f2");
    test_class_info(&lv, &cd_S19245C10);
    dp->~S19245C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C10(Test_S19245C10, "S19245C10", ABISELECT(1552,988));

#else // __cplusplus

extern void _ZN9S19245C10C1Ev();
extern void _ZN9S19245C10D1Ev();
Name_Map name_map_S19245C10[] = {
  NSPAIR(_ZN9S19245C10C1Ev),
  NSPAIR(_ZN9S19245C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
static Base_Class bases_S19245C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19245C7,    ABISELECT(464,292), //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_S19245C4,    ABISELECT(1096,708), //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_S19245C5,    ABISELECT(928,600), //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_S19245C3,    ABISELECT(1248,804), //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 _ZTI9S19245C10[];
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY vtc_S19245C10[] = {
  ABISELECT(1248,804),
  ABISELECT(1096,708),
  ABISELECT(928,600),
  ABISELECT(464,292),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  0,
  0,
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(168,108),
  ABISELECT(-928,-600),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  0,
  ABISELECT(-1096,-708),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern VTBL_ENTRY _ZTV9S19245C10[];
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C10[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C10[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C10[] = {
  {&(_ZTV9S19245C10[6]),  6,26},
  {&(_ZTV9S19245C10[12]),  12,26},
  {&(_ZTV9S19245C10[18]),  18,26},
  {&(_ZTV9S19245C10[21]),  21,26},
  {&(_ZTV9S19245C10[25]),  25,26},
  {&(_tg__ZTV8S19245C5__9S19245C10[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
Class_Descriptor cd_S19245C10 = {  "S19245C10", // class name
  bases_S19245C10, 5,
  &(vtc_S19245C10[0]), // expected_vtbl_contents
  &(vtt_S19245C10[0]), // expected_vtt_contents
  ABISELECT(1552,988), // object size
  NSPAIRA(_ZTI9S19245C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19245C10),26, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C10),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  S19245C9  : S19245C3 , S19245C7 , S19245C4 {
  long s19245c9f0;
  __tsi64 s19245c9f1;
  void *s19245c9f2[8];
  ::S19245C10 s19245c9f3;
  void *s19245c9f4;
  int s19245c9f5;
  ::S19245C10 s19245c9f6;
  int s19245c9f7;
  virtual  ~S19245C9(); // _ZN8S19245C9D1Ev
  virtual void  v7(); // _ZN8S19245C92v7Ev
  S19245C9(); // tgen
};
//SIG(-1 S19245C9) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC3 VBC4 VBC6{ VBC3 Fp FC3 FL:3} VBC2 FC2 Fs Fi[2]} Fp Fi FC5 Fi}


 S19245C9 ::~S19245C9(){ note_dtor("S19245C9", this);}
void  S19245C9 ::v7(){vfunc_called(this, "_ZN8S19245C92v7Ev");}
S19245C9 ::S19245C9(){ note_ctor("S19245C9", this);} // tgen

static void Test_S19245C9()
{
  extern Class_Descriptor cd_S19245C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S19245C9, buf);
    S19245C9 *dp, &lv = *(dp=new (buf) S19245C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S19245C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C9)");
    check_base_class_offset(lv, (S19245C3*), 0, "S19245C9");
    check_base_class_offset(lv, (S19245C7*), ABISELECT(296,184), "S19245C9");
    check_base_class_offset(lv, (S19245C4*), ABISELECT(760,492), "S19245C9");
    check_field_offset(lv, s19245c9f0, ABISELECT(904,588), "S19245C9.s19245c9f0");
    check_field_offset(lv, s19245c9f1, ABISELECT(912,592), "S19245C9.s19245c9f1");
    check_field_offset(lv, s19245c9f2, ABISELECT(920,600), "S19245C9.s19245c9f2");
    check_field_offset(lv, s19245c9f3, ABISELECT(992,632), "S19245C9.s19245c9f3");
    check_field_offset(lv, s19245c9f4, ABISELECT(2544,1620), "S19245C9.s19245c9f4");
    check_field_offset(lv, s19245c9f5, ABISELECT(2552,1624), "S19245C9.s19245c9f5");
    check_field_offset(lv, s19245c9f6, ABISELECT(2560,1628), "S19245C9.s19245c9f6");
    check_field_offset(lv, s19245c9f7, ABISELECT(4112,2616), "S19245C9.s19245c9f7");
    test_class_info(&lv, &cd_S19245C9);
    dp->~S19245C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C9(Test_S19245C9, "S19245C9", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN8S19245C9C1Ev();
extern void _ZN8S19245C9D1Ev();
Name_Map name_map_S19245C9[] = {
  NSPAIR(_ZN8S19245C9C1Ev),
  NSPAIR(_ZN8S19245C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
static Base_Class bases_S19245C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C7,    ABISELECT(296,184), //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_S19245C4,    ABISELECT(760,492), //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 _ZTI8S19245C9[];
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C9D1Ev();
extern void _ZN8S19245C9D0Ev();
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C9[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&_ZN8S19245C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI8S19245C9[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI8S19245C9[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
Class_Descriptor cd_S19245C9 = {  "S19245C9", // class name
  bases_S19245C9, 3,
  &(vtc_S19245C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI8S19245C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19245C9),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  S19245C11  : virtual S19245C3 , virtual S19245C9 , virtual S19245C4 , virtual S19245C5 {
  __tsi64 s19245c11f0:44;
  void *s19245c11f1;
  int s19245c11f2;
  ::S19245C10 s19245c11f3;
  long s19245c11f4[2];
  int s19245c11f5[3];
  ::S19245C9 s19245c11f6;
  char s19245c11f7:7;
  ::S19245C2 s19245c11f8;
  ~S19245C11(); // tgen
  S19245C11(); // tgen
};
//SIG(-1 S19245C11) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC6{ BC3 VBC5 VBC7{ VBC3 Fp FC3 FL: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}}


S19245C11 ::~S19245C11(){ note_dtor("S19245C11", this);} // tgen
S19245C11 ::S19245C11(){ note_ctor("S19245C11", this);} // tgen

static void Test_S19245C11()
{
  extern Class_Descriptor cd_S19245C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S19245C11, buf);
    S19245C11 *dp, &lv = *(dp=new (buf) S19245C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S19245C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C11)");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*), ABISELECT(6400,4052), "S19245C11");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(6704,4236), "S19245C11");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(7000,4420), "S19245C11");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(7464,4728), "S19245C11");
    check_base_class_offset(lv, (S19245C9*), ABISELECT(6704,4236), "S19245C11");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(10824,6856), "S19245C11");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(10824,6856), "S19245C11");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(10968,6952), "S19245C11");
    set_bf_and_test(lv, s19245c11f0, ABISELECT(8,4), 0, 44, 1, "S19245C11");
    set_bf_and_test(lv, s19245c11f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S19245C11");
    check_field_offset(lv, s19245c11f1, ABISELECT(16,12), "S19245C11.s19245c11f1");
    check_field_offset(lv, s19245c11f2, ABISELECT(24,16), "S19245C11.s19245c11f2");
    check_field_offset(lv, s19245c11f3, ABISELECT(32,20), "S19245C11.s19245c11f3");
    check_field_offset(lv, s19245c11f4, ABISELECT(1584,1008), "S19245C11.s19245c11f4");
    check_field_offset(lv, s19245c11f5, ABISELECT(1600,1016), "S19245C11.s19245c11f5");
    check_field_offset(lv, s19245c11f6, ABISELECT(1616,1028), "S19245C11.s19245c11f6");
    set_bf_and_test(lv, s19245c11f7, ABISELECT(5744,3648), 0, 7, 1, "S19245C11");
    set_bf_and_test(lv, s19245c11f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S19245C11");
    check_field_offset(lv, s19245c11f8, ABISELECT(5760,3652), "S19245C11.s19245c11f8");
    test_class_info(&lv, &cd_S19245C11);
    dp->~S19245C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C11(Test_S19245C11, "S19245C11", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN9S19245C11C1Ev();
extern void _ZN9S19245C11D1Ev();
Name_Map name_map_S19245C11[] = {
  NSPAIR(_ZN9S19245C11C1Ev),
  NSPAIR(_ZN9S19245C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
static Base_Class bases_S19245C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(6400,4052), //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_S19245C3,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19245C7,    ABISELECT(7000,4420), //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_S19245C4,    ABISELECT(7464,4728), //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_S19245C9,    ABISELECT(6704,4236), //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_S19245C4,    ABISELECT(10824,6856), //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_S19245C5,    ABISELECT(10968,6952), //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 _ZTI9S19245C11[];
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C11[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
extern VTBL_ENTRY _ZTV9S19245C11[];
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C11[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C11[] = {
  {&(_ZTV9S19245C11[6]),  6,40},
  {&(_ZTV9S19245C11[11]),  11,40},
  {&(_ZTV9S19245C11[21]),  21,40},
  {&(_ZTV9S19245C11[27]),  27,40},
  {&(_ZTV9S19245C11[32]),  32,40},
  {&(_ZTV9S19245C11[36]),  36,40},
  {&(_ZTV9S19245C11[40]),  40,40},
  {&(_tg__ZTV8S19245C5__9S19245C11[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C11 = {  "S19245C11", // class name
  bases_S19245C11, 7,
  &(vtc_S19245C11[0]), // expected_vtbl_contents
  &(vtt_S19245C11[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI9S19245C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19245C11),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C11),9, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C8  : virtual S19245C9 , virtual S19245C4 , virtual S19245C5 , S19245C10 , S19245C11 {
  ::S19245C9 s19245c8f0;
  __tsi64 s19245c8f1;
  char s19245c8f2:7;
  virtual void  v8(); // _ZN8S19245C82v8Ev
  ~S19245C8(); // tgen
  S19245C8(); // tgen
};
//SIG(-1 S19245C8) C1{ VBC2{ BC3{ v2 FL FD Fp Fc FC4{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC5{ v3 v4 v5 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC6{ BC4 VBC5 VBC7{ VBC4 Fp FC4 FL: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  S19245C8 ::v8(){vfunc_called(this, "_ZN8S19245C82v8Ev");}
S19245C8 ::~S19245C8(){ note_dtor("S19245C8", this);} // tgen
S19245C8 ::S19245C8(){ note_ctor("S19245C8", this);} // tgen

static void Test_S19245C8()
{
  extern Class_Descriptor cd_S19245C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1014,2574)];
    init_test(&cd_S19245C8, buf);
    S19245C8 *dp, &lv = *(dp=new (buf) S19245C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16208,10292), "sizeof(S19245C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C8)");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(11008,6976), "S19245C8");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(11304,7160), "S19245C8");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(11768,7468), "S19245C8");
    check_base_class_offset(lv, (S19245C9*), ABISELECT(11008,6976), "S19245C8");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*), ABISELECT(11008,6976), "S19245C8");
    /*is_ambiguous_... S19245C8::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(15128,9596), "S19245C8");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(15128,9596), "S19245C8");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*), ABISELECT(15128,9596), "S19245C8");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(15272,9692), "S19245C8");
    check_base_class_offset(lv, (S19245C5*)(S19245C10*), ABISELECT(15272,9692), "S19245C8");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*), ABISELECT(15272,9692), "S19245C8");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C10*), 0, "S19245C8");
    check_base_class_offset(lv, (S19245C7*)(S19245C10*), ABISELECT(15440,9800), "S19245C8");
    check_base_class_offset(lv, (S19245C3*)(S19245C10*), ABISELECT(15904,10108), "S19245C8");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*), ABISELECT(15904,10108), "S19245C8");
    check_base_class_offset(lv, (S19245C10*), 0, "S19245C8");
    check_base_class_offset(lv, (S19245C11*), ABISELECT(464,292), "S19245C8");
    check_field_offset(lv, s19245c8f0, ABISELECT(6864,4344), "S19245C8.s19245c8f0");
    check_field_offset(lv, s19245c8f1, ABISELECT(10992,6964), "S19245C8.s19245c8f1");
    set_bf_and_test(lv, s19245c8f2, ABISELECT(11000,6972), 0, 7, 1, "S19245C8");
    set_bf_and_test(lv, s19245c8f2, ABISELECT(11000,6972), 0, 7, hide_sll(1LL<<6), "S19245C8");
    test_class_info(&lv, &cd_S19245C8);
    dp->~S19245C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C8(Test_S19245C8, "S19245C8", ABISELECT(16208,10292));

#else // __cplusplus

extern void _ZN8S19245C8C1Ev();
extern void _ZN8S19245C8D1Ev();
Name_Map name_map_S19245C8[] = {
  NSPAIR(_ZN8S19245C8C1Ev),
  NSPAIR(_ZN8S19245C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C10;
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
static Base_Class bases_S19245C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(11008,6976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19245C7,    ABISELECT(11304,7160), //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_S19245C4,    ABISELECT(11768,7468), //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_S19245C9,    ABISELECT(11008,6976), //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_S19245C4,    ABISELECT(15128,9596), //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_S19245C5,    ABISELECT(15272,9692), //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_S19245C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19245C7,    ABISELECT(15440,9800), //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_S19245C3,    ABISELECT(15904,10108), //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_S19245C10,    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_S19245C11,    ABISELECT(464,292), //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 _ZTI8S19245C8[];
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void _ZN8S19245C8D1Ev();
extern void _ZN8S19245C8D0Ev();
extern void ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY vtc_S19245C8[] = {
  ABISELECT(11008,6976),
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D0Ev,
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S19245C8[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C10__8S19245C8[] = {
  ABISELECT(15904,10108),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__9S19245C10__8S19245C8[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C10__8S19245C8[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C10__8S19245C8[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C10__8S19245C8[] = {
  0,
  ABISELECT(-15904,-10108),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C11__8S19245C8[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(15440,9816),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C11__8S19245C8[] = {
  0,
  ABISELECT(-15440,-9816),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C11__8S19245C8[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C11__8S19245C8[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C11__8S19245C8[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C11__8S19245C8[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11__8S19245C8[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C8[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__8S19245C8[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C8[] = {
  {&(_ZTV8S19245C8[7]),  7,59},
  {&(_tg__ZTV9S19245C10__8S19245C8[6]),  6,7},
  {&(_tg__ZTV8S19245C7__9S19245C10__8S19245C8[5]),  5,8},
  {&(_tg__ZTV8S19245C5__9S19245C10__8S19245C8[3]),  3,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C10__8S19245C8[3]),  3,4},
  {&(_tg__ZTV8S19245C3__9S19245C10__8S19245C8[3]),  3,4},
  {&(_tg__ZTV9S19245C11__8S19245C8[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C11__8S19245C8[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C11__8S19245C8[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C11__8S19245C8[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C11__8S19245C8[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C11__8S19245C8[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C11__8S19245C8[3]),  3,3},
  {&(_ZTV8S19245C8[28]),  28,59},
  {&(_ZTV8S19245C8[34]),  34,59},
  {&(_ZTV8S19245C8[39]),  39,59},
  {&(_ZTV8S19245C8[43]),  43,59},
  {&(_ZTV8S19245C8[47]),  47,59},
  {&(_ZTV8S19245C8[52]),  52,59},
  {&(_ZTV8S19245C8[58]),  58,59},
  {&(_ZTV8S19245C8[17]),  17,59},
  {&(_tg__ZTV8S19245C5__8S19245C8[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__8S19245C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19245C8[];
extern  VTBL_ENTRY _ZTV8S19245C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C8[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C8 = {  "S19245C8", // class name
  bases_S19245C8, 11,
  &(vtc_S19245C8[0]), // expected_vtbl_contents
  &(vtt_S19245C8[0]), // expected_vtt_contents
  ABISELECT(16208,10292), // object size
  NSPAIRA(_ZTI8S19245C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19245C8),59, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C8),23, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C6  : virtual S19245C3 , S19245C7 , virtual S19245C8 {
  char s19245c6f0:8;
  int s19245c6f1;
  ~S19245C6(); // tgen
  S19245C6(); // tgen
};
//SIG(-1 S19245C6) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC7{ BC3 VBC4 VBC8{ VBC3 Fp FC3 FL: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}


S19245C6 ::~S19245C6(){ note_dtor("S19245C6", this);} // tgen
S19245C6 ::S19245C6(){ note_ctor("S19245C6", this);} // tgen

static void Test_S19245C6()
{
  extern Class_Descriptor cd_S19245C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1044,2653)];
    init_test(&cd_S19245C6, buf);
    S19245C6 *dp, &lv = *(dp=new (buf) S19245C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16688,10608), "sizeof(S19245C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C6)");
    /*is_ambiguous_... S19245C6::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*), ABISELECT(480,316), "S19245C6");
    check_base_class_offset(lv, (S19245C3*)(S19245C10*)(S19245C8*), ABISELECT(480,316), "S19245C6");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*)(S19245C8*), ABISELECT(480,316), "S19245C6");
    /*is_ambiguous_... S19245C6::S19245C7 */ AMB_check_base_class_offset(lv, (S19245C7*), 0, "S19245C6");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(11792,7476), "S19245C6");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(12088,7660), "S19245C6");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(12552,7968), "S19245C6");
    check_base_class_offset(lv, (S19245C9*)(S19245C8*), ABISELECT(11792,7476), "S19245C6");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*)(S19245C8*), ABISELECT(11792,7476), "S19245C6");
    /*is_ambiguous_... S19245C8::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C8*), ABISELECT(15912,10096), "S19245C6");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(15912,10096), "S19245C6");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*)(S19245C8*), ABISELECT(15912,10096), "S19245C6");
    check_base_class_offset(lv, (S19245C5*)(S19245C8*), ABISELECT(16056,10192), "S19245C6");
    check_base_class_offset(lv, (S19245C5*)(S19245C10*)(S19245C8*), ABISELECT(16056,10192), "S19245C6");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*)(S19245C8*), ABISELECT(16056,10192), "S19245C6");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C10*)(S19245C8*), ABISELECT(784,500), "S19245C6");
    check_base_class_offset(lv, (S19245C7*)(S19245C10*)(S19245C8*), ABISELECT(16224,10300), "S19245C6");
    check_base_class_offset(lv, (S19245C10*)(S19245C8*), ABISELECT(784,500), "S19245C6");
    check_base_class_offset(lv, (S19245C11*)(S19245C8*), ABISELECT(1248,792), "S19245C6");
    check_base_class_offset(lv, (S19245C8*), ABISELECT(784,500), "S19245C6");
    set_bf_and_test(lv, s19245c6f0, ABISELECT(464,308), 0, 8, 1, "S19245C6");
    set_bf_and_test(lv, s19245c6f0, ABISELECT(464,308), 0, 8, hide_sll(1LL<<7), "S19245C6");
    check_field_offset(lv, s19245c6f1, ABISELECT(468,312), "S19245C6.s19245c6f1");
    test_class_info(&lv, &cd_S19245C6);
    dp->~S19245C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C6(Test_S19245C6, "S19245C6", ABISELECT(16688,10608));

#else // __cplusplus

extern void _ZN8S19245C6C1Ev();
extern void _ZN8S19245C6D1Ev();
Name_Map name_map_S19245C6[] = {
  NSPAIR(_ZN8S19245C6C1Ev),
  NSPAIR(_ZN8S19245C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C10;
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
extern Class_Descriptor cd_S19245C8;
extern VTBL_ENTRY _ZTI8S19245C8[];
extern  VTBL_ENTRY _ZTV8S19245C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C8[];
static Base_Class bases_S19245C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(480,316), //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_S19245C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19245C3,    ABISELECT(11792,7476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19245C7,    ABISELECT(12088,7660), //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_S19245C4,    ABISELECT(12552,7968), //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_S19245C9,    ABISELECT(11792,7476), //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_S19245C4,    ABISELECT(15912,10096), //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_S19245C5,    ABISELECT(16056,10192), //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_S19245C4,    ABISELECT(784,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(16224,10300), //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_S19245C10,    ABISELECT(784,500), //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_S19245C11,    ABISELECT(1248,792), //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_S19245C8,    ABISELECT(784,500), //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 _ZTI8S19245C6[];
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C6D1Ev();
extern void _ZN8S19245C6D0Ev();
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn784_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn784_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn11792_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn11792_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY vtc_S19245C6[] = {
  ABISELECT(16224,10300),
  ABISELECT(16056,10192),
  ABISELECT(15912,10096),
  ABISELECT(11792,7476),
  ABISELECT(784,500),
  ABISELECT(480,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D0Ev,
  0,
  ABISELECT(-480,-316),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(-784,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  ABISELECT(-784,-500),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev),
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1248,-792),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11792,-7476),
  0,
  ABISELECT(-11792,-7476),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-12088,-7660),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-12552,-7968),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  0,
  ABISELECT(-15912,-10096),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-144,-96),
  ABISELECT(-16056,-10192),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  0,
  0,
  0,
  ABISELECT(-16224,-10300),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern VTBL_ENTRY _ZTV8S19245C6[];
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void _ZN8S19245C8D1Ev();
extern void _ZN8S19245C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C8__8S19245C6[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D0Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C108S19245C8__8S19245C6[] = {
  ABISELECT(-304,-184),
  ABISELECT(15128,9596),
  ABISELECT(15272,9692),
  ABISELECT(15440,9800),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C6[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C6[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C6[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C6[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C6[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C6[] = {
  0,
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C6[] = {
  ABISELECT(-144,-96),
  ABISELECT(-14808,-9400),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__8S19245C8__8S19245C6[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C6[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C6[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__8S19245C8__8S19245C6[] = {
  0,
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C8__8S19245C6[] = {
  ABISELECT(-144,-96),
  ABISELECT(-15272,-9692),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__A1__8S19245C8__8S19245C6[] = {
  0,
  0,
  0,
  ABISELECT(-15440,-9800),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__A1__8S19245C8__8S19245C6[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19245C11__8S19245C8__8S19245C6[] = {
  ABISELECT(14808,9400),
  ABISELECT(14664,9304),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C6[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__8S19245C6[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C6[] = {
  {&(_ZTV8S19245C6[8]),  8,75},
  {&(_ZTV8S19245C6[16]),  16,75},
  {&(_ZTV8S19245C6[27]),  27,75},
  {&(_ZTV8S19245C6[48]),  48,75},
  {&(_ZTV8S19245C6[54]),  54,75},
  {&(_ZTV8S19245C6[59]),  59,75},
  {&(_ZTV8S19245C6[63]),  63,75},
  {&(_ZTV8S19245C6[67]),  67,75},
  {&(_ZTV8S19245C6[72]),  72,75},
  {&(_ZTV8S19245C6[37]),  37,75},
  {&(_tg__ZTV8S19245C8__8S19245C6[7]),  7,11},
  {&(_tg__ZTV9S19245C108S19245C8__8S19245C6[6]),  6,7},
  {&(_tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C6[5]),  5,8},
  {&(_tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV9S19245C118S19245C8__8S19245C6[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C6[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C6[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C6[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C9__8S19245C8__8S19245C6[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C6[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C6[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__8S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV8S19245C5__8S19245C8__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C7__A1__8S19245C8__8S19245C6[5]),  5,8},
  {&(_tg__ZTV8S19245C3__A1__8S19245C8__8S19245C6[3]),  3,4},
  {&(_tg__ZTV9S19245C11__8S19245C8__8S19245C6[6]),  6,8},
  {&(_tg__ZTV8S19245C5__8S19245C6[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__8S19245C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19245C6[];
extern  VTBL_ENTRY _ZTV8S19245C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C6[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11792_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C6 = {  "S19245C6", // class name
  bases_S19245C6, 13,
  &(vtc_S19245C6[0]), // expected_vtbl_contents
  &(vtt_S19245C6[0]), // expected_vtt_contents
  ABISELECT(16688,10608), // object size
  NSPAIRA(_ZTI8S19245C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19245C6),75, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C6),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C12  : virtual S19245C5 {
  ::S19245C11 s19245c12f0;
  __tsi64 s19245c12f1:6;
  int s19245c12f2;
  long s19245c12f3;
  ~S19245C12(); // tgen
  S19245C12(); // tgen
};
//SIG(-1 S19245C12) C1{ VBC2{ VBC3{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} FC4{ VBC5{ v2 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} VBC6{ BC5 BC7{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v6 Fl FL Fp[8] FC8{ BC3 VBC7 VBC2 VBC5 FC5 Fs Fi[2]} Fp Fi FC8 Fi} VBC3 VBC2 FL:44 Fp Fi FC8 Fl[2] Fi[3] FC6 Fc:7 FC9{ BC5 vd v7 FC2 Fi Fp Fi}} FL:6 Fi Fl}


S19245C12 ::~S19245C12(){ note_dtor("S19245C12", this);} // tgen
S19245C12 ::S19245C12(){ note_ctor("S19245C12", this);} // tgen

static void Test_S19245C12()
{
  extern Class_Descriptor cd_S19245C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(719,1821)];
    init_test(&cd_S19245C12, buf);
    S19245C12 *dp, &lv = *(dp=new (buf) S19245C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11488,7280), "sizeof(S19245C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C12)");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(11336,7184), "S19245C12");
    check_base_class_offset(lv, (S19245C5*), ABISELECT(11168,7076), "S19245C12");
    check_field_offset(lv, s19245c12f0, ABISELECT(16,4), "S19245C12.s19245c12f0");
    set_bf_and_test(lv, s19245c12f1, ABISELECT(11152,7064), 0, 6, 1, "S19245C12");
    set_bf_and_test(lv, s19245c12f1, ABISELECT(11152,7064), 0, 6, hide_sll(1LL<<5), "S19245C12");
    check_field_offset(lv, s19245c12f2, ABISELECT(11156,7068), "S19245C12.s19245c12f2");
    check_field_offset(lv, s19245c12f3, ABISELECT(11160,7072), "S19245C12.s19245c12f3");
    test_class_info(&lv, &cd_S19245C12);
    dp->~S19245C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C12(Test_S19245C12, "S19245C12", ABISELECT(11488,7280));

#else // __cplusplus

extern void _ZN9S19245C12C1Ev();
extern void _ZN9S19245C12D1Ev();
Name_Map name_map_S19245C12[] = {
  NSPAIR(_ZN9S19245C12C1Ev),
  NSPAIR(_ZN9S19245C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
static Base_Class bases_S19245C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C4,    ABISELECT(11336,7184), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(11168,7076), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19245C12[];
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C12[] = {
  ABISELECT(11336,7184),
  ABISELECT(11168,7076),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  ABISELECT(168,108),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  0,
  ABISELECT(-11336,-7184),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S19245C12[];
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C12[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C12[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C12[] = {
  {&(_ZTV9S19245C12[4]),  4,11},
  {&(_ZTV9S19245C12[7]),  7,11},
  {&(_ZTV9S19245C12[10]),  10,11},
  {&(_tg__ZTV8S19245C5__9S19245C12[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C12[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C12[];
extern  VTBL_ENTRY _ZTV9S19245C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C12[];
Class_Descriptor cd_S19245C12 = {  "S19245C12", // class name
  bases_S19245C12, 2,
  &(vtc_S19245C12[0]), // expected_vtbl_contents
  &(vtt_S19245C12[0]), // expected_vtt_contents
  ABISELECT(11488,7280), // object size
  NSPAIRA(_ZTI9S19245C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19245C12),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C13  : virtual S19245C2 , virtual S19245C4 , virtual S19245C11 {
  int s19245c13f0;
  long double s19245c13f1;
  int s19245c13f2;
  void *s19245c13f3;
  long s19245c13f4;
  ::S19763C23 s19245c13f5;
  int s19245c13f6;
  long s19245c13f7;
  virtual  ~S19245C13(); // _ZN9S19245C13D2Ev
  S19245C13(); // tgen
};
//SIG(-1 S19245C13) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC9{ BC4 VBC8 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU10{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl}


 S19245C13 ::~S19245C13(){ note_dtor("S19245C13", this);}
S19245C13 ::S19245C13(){ note_ctor("S19245C13", this);} // tgen

static void Test_S19245C13()
{
  extern Class_Descriptor cd_S19245C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,1878)];
    init_test(&cd_S19245C13, buf);
    S19245C13 *dp, &lv = *(dp=new (buf) S19245C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,7508), "sizeof(S19245C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C13)");
    check_base_class_offset(lv, (S19245C3*)(S19245C2*), ABISELECT(80,48), "S19245C13");
    check_base_class_offset(lv, (S19245C2*), ABISELECT(80,48), "S19245C13");
    /*is_ambiguous_... S19245C13::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(712,448), "S19245C13");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*), ABISELECT(712,448), "S19245C13");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(712,448), "S19245C13");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*), ABISELECT(7264,4596), "S19245C13");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(7568,4780), "S19245C13");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(7864,4964), "S19245C13");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(8328,5272), "S19245C13");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*), ABISELECT(7568,4780), "S19245C13");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*), ABISELECT(11688,7400), "S19245C13");
    check_base_class_offset(lv, (S19245C11*), ABISELECT(864,544), "S19245C13");
    check_field_offset(lv, s19245c13f0, ABISELECT(8,4), "S19245C13.s19245c13f0");
    check_field_offset(lv, s19245c13f1, ABISELECT(16,8), "S19245C13.s19245c13f1");
    check_field_offset(lv, s19245c13f2, ABISELECT(32,20), "S19245C13.s19245c13f2");
    check_field_offset(lv, s19245c13f3, ABISELECT(40,24), "S19245C13.s19245c13f3");
    check_field_offset(lv, s19245c13f4, ABISELECT(48,28), "S19245C13.s19245c13f4");
    check_field_offset(lv, s19245c13f5, ABISELECT(56,32), "S19245C13.s19245c13f5");
    check_field_offset(lv, s19245c13f6, ABISELECT(64,40), "S19245C13.s19245c13f6");
    check_field_offset(lv, s19245c13f7, ABISELECT(72,44), "S19245C13.s19245c13f7");
    test_class_info(&lv, &cd_S19245C13);
    dp->~S19245C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C13(Test_S19245C13, "S19245C13", ABISELECT(11856,7508));

#else // __cplusplus

extern void _ZN9S19245C13C1Ev();
extern void _ZN9S19245C13D2Ev();
Name_Map name_map_S19245C13[] = {
  NSPAIR(_ZN9S19245C13C1Ev),
  NSPAIR(_ZN9S19245C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C2;
extern VTBL_ENTRY _ZTI8S19245C2[];
extern  VTBL_ENTRY _ZTV8S19245C2[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
static Base_Class bases_S19245C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19245C2,    ABISELECT(80,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(712,448), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C3,    ABISELECT(7264,4596), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C3,    ABISELECT(7568,4780), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19245C7,    ABISELECT(7864,4964), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(8328,5272), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(7568,4780), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(11688,7400), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19245C11,    ABISELECT(864,544), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19245C13[];
extern void _ZN9S19245C13D1Ev();
extern void _ZN9S19245C13D0Ev();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S19245C13D1Ev,_ZThn48_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S19245C13D0Ev,_ZThn48_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C22v2Ev();
extern void _ZN8S19245C42v6Ev();
extern void ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn864_N9S19245C13D1Ev,_ZThn544_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn864_N9S19245C13D0Ev,_ZThn544_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn7568_N9S19245C13D1Ev,_ZThn4780_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn7568_N9S19245C13D0Ev,_ZThn4780_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY vtc_S19245C13[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN9S19245C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C13D0Ev,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev),
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
};
extern VTBL_ENTRY _ZTV9S19245C13[];
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C11__9S19245C13[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C11__9S19245C13[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C11__9S19245C13[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C11__9S19245C13[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C11__9S19245C13[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C11__9S19245C13[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11__9S19245C13[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C13[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__9S19245C13[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTT_ENTRY vtt_S19245C13[] = {
  {&(_ZTV9S19245C13[8]),  8,60},
  {&(_ZTV9S19245C13[15]),  15,60},
  {&(_ZTV9S19245C13[22]),  22,60},
  {&(_ZTV9S19245C13[30]),  30,60},
  {&(_ZTV9S19245C13[35]),  35,60},
  {&(_ZTV9S19245C13[45]),  45,60},
  {&(_ZTV9S19245C13[51]),  51,60},
  {&(_ZTV9S19245C13[56]),  56,60},
  {&(_ZTV9S19245C13[60]),  60,60},
  {&(_tg__ZTV9S19245C11__9S19245C13[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C11__9S19245C13[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C11__9S19245C13[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C11__9S19245C13[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C11__9S19245C13[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C11__9S19245C13[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C11__9S19245C13[3]),  3,3},
  {&(_tg__ZTV8S19245C5__9S19245C13[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__9S19245C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19245C13[];
extern  VTBL_ENTRY _ZTV9S19245C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C13[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D0Ev,_ZThn4236_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N9S19245C11D1Ev,_ZThn4236_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19245C13D0Ev,_ZThn544_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N9S19245C13D1Ev,_ZThn544_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19245C13D0Ev,_ZThn4780_N9S19245C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19245C13D0Ev,_ZThn48_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N9S19245C13D1Ev,_ZThn4780_N9S19245C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19245C13D1Ev,_ZThn48_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C13 = {  "S19245C13", // class name
  bases_S19245C13, 10,
  &(vtc_S19245C13[0]), // expected_vtbl_contents
  &(vtt_S19245C13[0]), // expected_vtt_contents
  ABISELECT(11856,7508), // object size
  NSPAIRA(_ZTI9S19245C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19245C13),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19245C13),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19245C1  : virtual S19245C2 , virtual S19245C4 , virtual S19245C6 , S19245C12 , S19245C13 {
  int s19245c1f0;
  int s19245c1f1;
  int s19245c1f2;
  int s19245c1f3;
  virtual  ~S19245C1(); // _ZN8S19245C1D2Ev
  S19245C1(); // tgen
};
//SIG(1 S19245C1) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 BC7{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} VBC8{ VBC9{ BC3 BC7 BC4 vd v7 Fl FL Fp[8] FC10{ BC4 VBC7 VBC5 VBC3 FC3 Fs Fi[2]} Fp Fi FC10 Fi} VBC4 VBC5 BC10 BC11{ VBC3 VBC9 VBC4 VBC5 FL:44 Fp Fi FC10 Fl[2] Fi[3] FC9 Fc:7 FC2} v8 FC9 FL Fc:7} Fc:8 Fi} BC12{ VBC5 FC11 FL:6 Fi Fl} BC13{ VBC2 VBC4 VBC11 vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} vd Fi Fi Fi Fi}


 S19245C1 ::~S19245C1(){ note_dtor("S19245C1", this);}
S19245C1 ::S19245C1(){ note_ctor("S19245C1", this);} // tgen

static void Test_S19245C1()
{
  extern Class_Descriptor cd_S19245C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2187,5551)];
    init_test(&cd_S19245C1, buf);
    S19245C1 *dp, &lv = *(dp=new (buf) S19245C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(34976,22200), "sizeof(S19245C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19245C1)");
    check_base_class_offset(lv, (S19245C3*)(S19245C2*), ABISELECT(11264,7140), "S19245C1");
    check_base_class_offset(lv, (S19245C2*), ABISELECT(11264,7140), "S19245C1");
    check_base_class_offset(lv, (S19245C2*)(S19245C13*), ABISELECT(11264,7140), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C8::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C8*), ABISELECT(11896,7540), "S19245C1");
    check_base_class_offset(lv, (S19245C4*)(S19245C5*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C11::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*)(S19245C8*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C13::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C13*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C11*), ABISELECT(11896,7540), "S19245C1");
    /*is_ambiguous_... S19245C6::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C6*), ABISELECT(12512,7952), "S19245C1");
    check_base_class_offset(lv, (S19245C3*)(S19245C10*)(S19245C8*), ABISELECT(12512,7952), "S19245C1");
    /*is_ambiguous_... S19245C11::S19245C3 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*)(S19245C8*), ABISELECT(12512,7952), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C3*)(S19245C11*), ABISELECT(12512,7952), "S19245C1");
    /*is_ambiguous_... S19245C6::S19245C7 */ AMB_check_base_class_offset(lv, (S19245C7*)(S19245C6*), ABISELECT(12040,7636), "S19245C1");
    check_base_class_offset(lv, (S19245C3*)(S19245C9*), ABISELECT(23824,15112), "S19245C1");
    check_base_class_offset(lv, (S19245C7*)(S19245C9*), ABISELECT(24120,15296), "S19245C1");
    check_base_class_offset(lv, (S19245C4*)(S19245C9*), ABISELECT(24584,15604), "S19245C1");
    check_base_class_offset(lv, (S19245C9*)(S19245C8*), ABISELECT(23824,15112), "S19245C1");
    check_base_class_offset(lv, (S19245C9*)(S19245C11*)(S19245C8*), ABISELECT(23824,15112), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C9*)(S19245C11*), ABISELECT(23824,15112), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C8*), ABISELECT(27944,17732), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C10*)(S19245C8*), ABISELECT(27944,17732), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C11*)(S19245C8*), ABISELECT(27944,17732), "S19245C1");
    check_base_class_offset(lv, (S19245C5*)(S19245C12*), ABISELECT(27944,17732), "S19245C1");
    /*is_ambiguous_... S19245C1::S19245C11 */ AMB_check_base_class_offset(lv, (S19245C5*)(S19245C11*), ABISELECT(27944,17732), "S19245C1");
    /*is_ambiguous_... S19245C10::S19245C4 */ AMB_check_base_class_offset(lv, (S19245C4*)(S19245C10*)(S19245C8*), ABISELECT(12816,8136), "S19245C1");
    check_base_class_offset(lv, (S19245C7*)(S19245C10*)(S19245C8*), ABISELECT(28112,17840), "S19245C1");
    check_base_class_offset(lv, (S19245C10*)(S19245C8*), ABISELECT(12816,8136), "S19245C1");
    check_base_class_offset(lv, (S19245C11*)(S19245C8*), ABISELECT(13280,8428), "S19245C1");
    check_base_class_offset(lv, (S19245C8*)(S19245C6*), ABISELECT(12816,8136), "S19245C1");
    check_base_class_offset(lv, (S19245C6*), ABISELECT(12040,7636), "S19245C1");
    check_base_class_offset(lv, (S19245C12*), 0, "S19245C1");
    check_base_class_offset(lv, (S19245C11*)(S19245C13*), ABISELECT(28576,18148), "S19245C1");
    check_base_class_offset(lv, (S19245C13*), ABISELECT(11168,7076), "S19245C1");
    check_field_offset(lv, s19245c1f0, ABISELECT(11248,7124), "S19245C1.s19245c1f0");
    check_field_offset(lv, s19245c1f1, ABISELECT(11252,7128), "S19245C1.s19245c1f1");
    check_field_offset(lv, s19245c1f2, ABISELECT(11256,7132), "S19245C1.s19245c1f2");
    check_field_offset(lv, s19245c1f3, ABISELECT(11260,7136), "S19245C1.s19245c1f3");
    test_class_info(&lv, &cd_S19245C1);
    dp->~S19245C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19245C1(Test_S19245C1, "S19245C1", ABISELECT(34976,22200));

#else // __cplusplus

extern void _ZN8S19245C1C1Ev();
extern void _ZN8S19245C1D2Ev();
Name_Map name_map_S19245C1[] = {
  NSPAIR(_ZN8S19245C1C1Ev),
  NSPAIR(_ZN8S19245C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C2;
extern VTBL_ENTRY _ZTI8S19245C2[];
extern  VTBL_ENTRY _ZTV8S19245C2[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C3;
extern VTBL_ENTRY _ZTI8S19245C3[];
extern  VTBL_ENTRY _ZTV8S19245C3[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C9;
extern VTBL_ENTRY _ZTI8S19245C9[];
extern  VTBL_ENTRY _ZTV8S19245C9[];
extern Class_Descriptor cd_S19245C5;
extern VTBL_ENTRY _ZTI8S19245C5[];
extern  VTBL_ENTRY _ZTV8S19245C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C5[];
extern Class_Descriptor cd_S19245C4;
extern VTBL_ENTRY _ZTI8S19245C4[];
extern  VTBL_ENTRY _ZTV8S19245C4[];
extern Class_Descriptor cd_S19245C7;
extern VTBL_ENTRY _ZTI8S19245C7[];
extern  VTBL_ENTRY _ZTV8S19245C7[];
extern Class_Descriptor cd_S19245C10;
extern VTBL_ENTRY _ZTI9S19245C10[];
extern  VTBL_ENTRY _ZTV9S19245C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C10[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
extern Class_Descriptor cd_S19245C8;
extern VTBL_ENTRY _ZTI8S19245C8[];
extern  VTBL_ENTRY _ZTV8S19245C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C8[];
extern Class_Descriptor cd_S19245C6;
extern VTBL_ENTRY _ZTI8S19245C6[];
extern  VTBL_ENTRY _ZTV8S19245C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C6[];
extern Class_Descriptor cd_S19245C12;
extern VTBL_ENTRY _ZTI9S19245C12[];
extern  VTBL_ENTRY _ZTV9S19245C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C12[];
extern Class_Descriptor cd_S19245C11;
extern VTBL_ENTRY _ZTI9S19245C11[];
extern  VTBL_ENTRY _ZTV9S19245C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C11[];
extern Class_Descriptor cd_S19245C13;
extern VTBL_ENTRY _ZTI9S19245C13[];
extern  VTBL_ENTRY _ZTV9S19245C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19245C13[];
static Base_Class bases_S19245C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19245C3,    ABISELECT(11264,7140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19245C2,    ABISELECT(11264,7140), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C4,    ABISELECT(11896,7540), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C3,    ABISELECT(12512,7952), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19245C7,    ABISELECT(12040,7636), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19245C3,    ABISELECT(23824,15112), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19245C7,    ABISELECT(24120,15296), //bcp->offset
    92, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19245C4,    ABISELECT(24584,15604), //bcp->offset
    97, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19245C9,    ABISELECT(23824,15112), //bcp->offset
    79, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19245C5,    ABISELECT(27944,17732), //bcp->offset
    100, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19245C4,    ABISELECT(12816,8136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19245C7,    ABISELECT(28112,17840), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19245C10,    ABISELECT(12816,8136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19245C11,    ABISELECT(13280,8428), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19245C8,    ABISELECT(12816,8136), //bcp->offset
    57, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19245C6,    ABISELECT(12040,7636), //bcp->offset
    36, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19245C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19245C11,    ABISELECT(28576,18148), //bcp->offset
    111, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19245C13,    ABISELECT(11168,7076), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19245C1[];
extern void _ZN8S19245C1D1Ev();
extern void _ZN8S19245C1D0Ev();
extern void ABISELECT(_ZThn11168_N8S19245C1D1Ev,_ZThn7076_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn11168_N8S19245C1D0Ev,_ZThn7076_N8S19245C1D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn11264_N8S19245C1D1Ev,_ZThn7140_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn11264_N8S19245C1D0Ev,_ZThn7140_N8S19245C1D0Ev)() __attribute__((weak));
extern void _ZN8S19245C22v2Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void ABISELECT(_ZTv0_n96_N8S19245C1D1Ev,_ZTv0_n48_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn12040_N8S19245C1D1Ev,_ZThn7636_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19245C1D0Ev,_ZTv0_n48_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn12040_N8S19245C1D0Ev,_ZThn7636_N8S19245C1D0Ev)() __attribute__((weak));
extern void _ZN8S19245C32v1Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19245C1D1Ev,_ZTv0_n40_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn12816_N8S19245C1D1Ev,_ZThn8136_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19245C1D0Ev,_ZTv0_n40_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn12816_N8S19245C1D0Ev,_ZThn8136_N8S19245C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn464_n80_N8S19245C1D1Ev,_ZTvn292_n40_N8S19245C1D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19245C1D0Ev,_ZTvn292_n40_N8S19245C1D0Ev)();
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn23824_N8S19245C1D1Ev,_ZThn15112_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn23824_N8S19245C1D0Ev,_ZThn15112_N8S19245C1D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void ABISELECT(_ZTv0_n56_N8S19245C1D1Ev,_ZTv0_n28_N8S19245C1D1Ev)();
extern void ABISELECT(_ZThn28576_N8S19245C1D1Ev,_ZThn18148_N8S19245C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19245C1D0Ev,_ZTv0_n28_N8S19245C1D0Ev)();
extern void ABISELECT(_ZThn28576_N8S19245C1D0Ev,_ZThn18148_N8S19245C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19245C1[] = {
  ABISELECT(28576,18148),
  ABISELECT(28112,17840),
  ABISELECT(23824,15112),
  ABISELECT(12816,8136),
  ABISELECT(12512,7952),
  ABISELECT(12040,7636),
  ABISELECT(11264,7140),
  ABISELECT(11896,7540),
  ABISELECT(27944,17732),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C1D0Ev,
  ABISELECT(16776,10656),
  ABISELECT(12656,8036),
  ABISELECT(1344,876),
  ABISELECT(17408,11072),
  ABISELECT(728,464),
  ABISELECT(96,64),
  ABISELECT(-11168,-7076),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn11168_N8S19245C1D1Ev,_ZThn7076_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn11168_N8S19245C1D0Ev,_ZThn7076_N8S19245C1D0Ev),
  0,
  ABISELECT(-11264,-7140),
  0,
  ABISELECT(-11264,-7140),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
  0,
  ABISELECT(-11896,-7540),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-12040,-7636),
  0,
  0,
  0,
  ABISELECT(16072,10204),
  ABISELECT(15904,10096),
  ABISELECT(-144,-96),
  ABISELECT(11784,7476),
  ABISELECT(776,500),
  ABISELECT(472,316),
  ABISELECT(-12040,-7636),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19245C1D1Ev,_ZTv0_n48_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19245C1D0Ev,_ZTv0_n48_N8S19245C1D0Ev),
  0,
  ABISELECT(-12512,-7952),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  ABISELECT(-12816,-8136),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  ABISELECT(-12816,-8136),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C1D1Ev,_ZTv0_n40_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C1D0Ev,_ZTv0_n40_N8S19245C1D0Ev),
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-13280,-8428),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C1D1Ev,_ZTvn292_n40_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C1D0Ev,_ZTvn292_n40_N8S19245C1D0Ev),
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-23824,-15112),
  0,
  ABISELECT(-23824,-15112),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
  ABISELECT(-24120,-15296),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-24584,-15604),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  ABISELECT(-16048,-10192),
  ABISELECT(-27944,-17732),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  0,
  0,
  0,
  ABISELECT(-28112,-17840),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  ABISELECT(-28576,-18148),
  ABISELECT(-632,-416),
  ABISELECT(-16680,-10608),
  ABISELECT(-4752,-3036),
  ABISELECT(-16064,-10196),
  ABISELECT(-28576,-18148),
  (VTBL_ENTRY)&(_ZTI8S19245C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19245C1D1Ev,_ZTv0_n28_N8S19245C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19245C1D0Ev,_ZTv0_n28_N8S19245C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19245C1[];
static  VTBL_ENTRY _tg__ZTV9S19245C12__8S19245C1[] = {
  ABISELECT(11896,7540),
  ABISELECT(27944,17732),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C12__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-27944,-17732),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__9S19245C12__8S19245C1[] = {
  0,
  ABISELECT(-11896,-7540),
  (VTBL_ENTRY)&(_ZTI9S19245C12[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN9S19245C13D1Ev();
extern void _ZN9S19245C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C13__8S19245C1[] = {
  ABISELECT(16776,10656),
  ABISELECT(12656,8036),
  ABISELECT(1344,876),
  ABISELECT(17408,11072),
  ABISELECT(728,464),
  ABISELECT(96,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN9S19245C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C13D0Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S19245C13D1Ev,_ZThn64_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S19245C13D0Ev,_ZThn64_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C2__9S19245C13__8S19245C1[] = {
  0,
  ABISELECT(-96,-64),
  0,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C22v2Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__9S19245C13__8S19245C1[] = {
  0,
  ABISELECT(-728,-464),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn17408_N9S19245C13D1Ev,_ZThn11072_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn17408_N9S19245C13D0Ev,_ZThn11072_N9S19245C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19245C11__9S19245C13__8S19245C1[] = {
  ABISELECT(-17408,-11072),
  ABISELECT(-632,-416),
  ABISELECT(-16680,-10608),
  ABISELECT(-4752,-3036),
  ABISELECT(-16064,-10196),
  ABISELECT(-17408,-11072),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev),
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__A1__9S19245C13__8S19245C1[] = {
  0,
  ABISELECT(-1344,-876),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev)();
extern void ABISELECT(_ZThn12656_N9S19245C13D1Ev,_ZThn8036_N9S19245C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev)();
extern void ABISELECT(_ZThn12656_N9S19245C13D0Ev,_ZThn8036_N9S19245C13D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C13__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-12656,-8036),
  0,
  ABISELECT(-12656,-8036),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C13__8S19245C1[] = {
  ABISELECT(-12952,-8220),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__A1__9S19245C13__8S19245C1[] = {
  ABISELECT(-13416,-8528),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C13__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-16776,-10656),
  (VTBL_ENTRY)&(_ZTI9S19245C13[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
extern void _ZN8S19245C6D1Ev();
extern void _ZN8S19245C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C6__8S19245C1[] = {
  ABISELECT(16072,10204),
  ABISELECT(15904,10096),
  ABISELECT(-144,-96),
  ABISELECT(11784,7476),
  ABISELECT(776,500),
  ABISELECT(472,316),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C6D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__8S19245C6__8S19245C1[] = {
  0,
  ABISELECT(-472,-316),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn776_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn776_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19245C8__8S19245C6__8S19245C1[] = {
  ABISELECT(-776,-500),
  0,
  0,
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  ABISELECT(-776,-500),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev),
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev)();
extern void ABISELECT(_ZThn11784_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev)();
extern void ABISELECT(_ZThn11784_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__8S19245C6__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11784,-7476),
  0,
  ABISELECT(-11784,-7476),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__A1__8S19245C6__8S19245C1[] = {
  ABISELECT(-12080,-7660),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__8S19245C6__8S19245C1[] = {
  ABISELECT(-12544,-7968),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__8S19245C6__8S19245C1[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C6__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-15904,-10096),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__A2__8S19245C6__8S19245C1[] = {
  0,
  0,
  0,
  ABISELECT(-16072,-10204),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev)();
extern void ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19245C118S19245C8__8S19245C6__8S19245C1[] = {
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-1240,-792),
  (VTBL_ENTRY)&(_ZTI8S19245C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D1Ev,_ZTvn292_n40_N8S19245C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn464_n80_N8S19245C6D0Ev,_ZTvn292_n40_N8S19245C6D0Ev),
};
extern void _ZN8S19245C42v6Ev();
extern void _ZN8S19245C82v8Ev();
extern void _ZN8S19245C8D1Ev();
extern void _ZN8S19245C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C8__8S19245C1[] = {
  ABISELECT(11008,6976),
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19245C82v8Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19245C8D0Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C108S19245C8__8S19245C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(-920,-596),
  ABISELECT(15128,9596),
  ABISELECT(15296,9704),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C1[] = {
  0,
  0,
  0,
  ABISELECT(-15296,-9704),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C1[] = {
  0,
  ABISELECT(920,596),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI9S19245C10[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C1[] = {
  0,
  ABISELECT(768,476),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-10544,-6684),
  0,
  ABISELECT(-10544,-6684),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(-10840,-6868),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(-11304,-7176),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C1[] = {
  0,
  ABISELECT(1384,888),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-14664,-9304),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev)();
extern void ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev)() __attribute__((weak));
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__8S19245C8__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-11008,-6976),
  0,
  ABISELECT(-11008,-6976),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C1[] = {
  ABISELECT(-11304,-7160),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C1[] = {
  ABISELECT(-11768,-7468),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__8S19245C8__8S19245C1[] = {
  0,
  ABISELECT(920,596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C8__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(-15128,-9596),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C7__A1__8S19245C8__8S19245C1[] = {
  0,
  0,
  0,
  ABISELECT(-15296,-9704),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__A1__8S19245C8__8S19245C1[] = {
  0,
  ABISELECT(304,184),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19245C11__8S19245C8__8S19245C1[] = {
  ABISELECT(14664,9304),
  ABISELECT(-1384,-888),
  ABISELECT(10544,6684),
  ABISELECT(-768,-476),
  ABISELECT(-464,-292),
  (VTBL_ENTRY)&(_ZTI8S19245C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D1Ev,_ZThn292_N8S19245C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn464_N8S19245C8D0Ev,_ZThn292_N8S19245C8D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  0,
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__8S19245C5__8S19245C1[] = {
  0,
  ABISELECT(16048,10192),
  (VTBL_ENTRY)&(_ZTI8S19245C5[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN9S19245C11D1Ev();
extern void _ZN9S19245C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19245C11__A1__8S19245C1[] = {
  ABISELECT(-632,-416),
  ABISELECT(-16680,-10608),
  ABISELECT(-4752,-3036),
  ABISELECT(-16064,-10196),
  0,
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN9S19245C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19245C11D0Ev,
};
extern void _ZN8S19245C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C3__9S19245C11__A1__8S19245C1[] = {
  0,
  ABISELECT(16064,10196),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
};
extern void _ZN8S19245C32v1Ev();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev)();
extern void _ZN8S19245C92v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C9__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(4752,3036),
  0,
  ABISELECT(4752,3036),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev),
  (VTBL_ENTRY)&_ZN8S19245C92v7Ev,
};
extern void _ZN8S19245C72v3Ev();
extern void _ZN8S19245C72v4Ev();
extern void _ZN8S19245C72v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C78S19245C9__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(4456,2852),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C72v3Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v4Ev,
  (VTBL_ENTRY)&_ZN8S19245C72v5Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C48S19245C9__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(3992,2544),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
extern void _ZN8S19245C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19245C4__A1__9S19245C11__A1__8S19245C1[] = {
  0,
  ABISELECT(16680,10608),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
  (VTBL_ENTRY)&_ZN8S19245C42v6Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19245C5__9S19245C11__A1__8S19245C1[] = {
  ABISELECT(-16048,-10192),
  ABISELECT(632,416),
  (VTBL_ENTRY)&(_ZTI9S19245C11[0]),
};
static  VTT_ENTRY vtt_S19245C1[] = {
  {&(_ZTV8S19245C1[11]),  11,120},
  {&(_tg__ZTV9S19245C12__8S19245C1[4]),  4,4},
  {&(_tg__ZTV8S19245C5__9S19245C12__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C4__9S19245C12__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C13__8S19245C1[8]),  8,10},
  {&(_tg__ZTV8S19245C2__9S19245C13__8S19245C1[5]),  5,9},
  {&(_tg__ZTV8S19245C4__9S19245C13__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C11__9S19245C13__8S19245C1[7]),  7,9},
  {&(_tg__ZTV8S19245C3__A1__9S19245C13__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C13__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C13__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__A1__9S19245C13__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C5__9S19245C13__8S19245C1[3]),  3,3},
  {&(_ZTV8S19245C1[28]),  28,120},
  {&(_ZTV8S19245C1[35]),  35,120},
  {&(_ZTV8S19245C1[48]),  48,120},
  {&(_ZTV8S19245C1[56]),  56,120},
  {&(_ZTV8S19245C1[67]),  67,120},
  {&(_ZTV8S19245C1[88]),  88,120},
  {&(_ZTV8S19245C1[94]),  94,120},
  {&(_ZTV8S19245C1[99]),  99,120},
  {&(_ZTV8S19245C1[103]),  103,120},
  {&(_ZTV8S19245C1[108]),  108,120},
  {&(_ZTV8S19245C1[77]),  77,120},
  {&(_ZTV8S19245C1[21]),  21,120},
  {&(_ZTV8S19245C1[118]),  118,120},
  {&(_tg__ZTV8S19245C6__8S19245C1[8]),  8,13},
  {&(_tg__ZTV8S19245C3__8S19245C6__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C8__8S19245C6__8S19245C1[10]),  10,14},
  {&(_tg__ZTV8S19245C9__8S19245C6__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__A1__8S19245C6__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__8S19245C6__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__8S19245C6__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__8S19245C6__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C7__A2__8S19245C6__8S19245C1[5]),  5,8},
  {&(_tg__ZTV9S19245C118S19245C8__8S19245C6__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C8__8S19245C1[7]),  7,11},
  {&(_tg__ZTV9S19245C108S19245C8__8S19245C1[6]),  6,7},
  {&(_tg__ZTV8S19245C7__9S19245C108S19245C8__8S19245C1[5]),  5,8},
  {&(_tg__ZTV8S19245C5__9S19245C108S19245C8__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C108S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C3__9S19245C108S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C118S19245C8__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C118S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C118S19245C8__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C118S19245C8__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C118S19245C8__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C118S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C118S19245C8__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C9__8S19245C8__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__8S19245C8__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__8S19245C8__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__8S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__8S19245C8__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C7__A1__8S19245C8__8S19245C1[5]),  5,8},
  {&(_tg__ZTV8S19245C3__A1__8S19245C8__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C11__8S19245C8__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C5__8S19245C1[3]),  3,3},
  {&(_tg__ZTV8S19245C4__8S19245C5__8S19245C1[3]),  3,4},
  {&(_tg__ZTV9S19245C11__A1__8S19245C1[6]),  6,8},
  {&(_tg__ZTV8S19245C3__9S19245C11__A1__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C9__9S19245C11__A1__8S19245C1[9]),  9,13},
  {&(_tg__ZTV8S19245C78S19245C9__9S19245C11__A1__8S19245C1[2]),  2,5},
  {&(_tg__ZTV8S19245C48S19245C9__9S19245C11__A1__8S19245C1[2]),  2,3},
  {&(_tg__ZTV8S19245C4__A1__9S19245C11__A1__8S19245C1[3]),  3,4},
  {&(_tg__ZTV8S19245C5__9S19245C11__A1__8S19245C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19245C1[];
extern  VTBL_ENTRY _ZTV8S19245C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19245C1[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D0Ev,_ZTv0_n16_N8S19245C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D0Ev,_ZThn6976_N8S19245C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C8D1Ev,_ZTv0_n16_N8S19245C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11008_N8S19245C8D1Ev,_ZThn6976_N8S19245C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D0Ev,_ZTv0_n16_N9S19245C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D0Ev,_ZThn6684_N9S19245C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C11D1Ev,_ZTv0_n16_N9S19245C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn10544_N9S19245C11D1Ev,_ZThn6684_N9S19245C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D0Ev,_ZTv0_n16_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11784_N8S19245C6D0Ev,_ZThn7476_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C6D1Ev,_ZTv0_n16_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn11784_N8S19245C6D1Ev,_ZThn7476_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D0Ev,_ZTv0_n40_N8S19245C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N8S19245C6D0Ev,_ZThn500_N8S19245C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C6D1Ev,_ZTv0_n40_N8S19245C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn776_N8S19245C6D1Ev,_ZThn500_N8S19245C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D0Ev,_ZTv0_n28_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17408_N9S19245C13D0Ev,_ZThn11072_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19245C13D1Ev,_ZTv0_n28_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn17408_N9S19245C13D1Ev,_ZThn11072_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D0Ev,_ZTv0_n16_N9S19245C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12656_N9S19245C13D0Ev,_ZThn8036_N9S19245C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19245C13D0Ev,_ZThn64_N9S19245C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19245C13D1Ev,_ZTv0_n16_N9S19245C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12656_N9S19245C13D1Ev,_ZThn8036_N9S19245C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19245C13D1Ev,_ZThn64_N9S19245C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19245C1D0Ev,_ZTv0_n28_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn28576_N8S19245C1D0Ev,_ZThn18148_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19245C1D1Ev,_ZTv0_n28_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn28576_N8S19245C1D1Ev,_ZThn18148_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C1D0Ev,_ZTv0_n40_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12816_N8S19245C1D0Ev,_ZThn8136_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19245C1D1Ev,_ZTv0_n40_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12816_N8S19245C1D1Ev,_ZThn8136_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19245C1D0Ev,_ZTv0_n48_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12040_N8S19245C1D0Ev,_ZThn7636_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19245C1D1Ev,_ZTv0_n48_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn12040_N8S19245C1D1Ev,_ZThn7636_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C1D0Ev,_ZTv0_n16_N8S19245C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23824_N8S19245C1D0Ev,_ZThn15112_N8S19245C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N8S19245C1D0Ev,_ZThn7140_N8S19245C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19245C1D1Ev,_ZTv0_n16_N8S19245C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn23824_N8S19245C1D1Ev,_ZThn15112_N8S19245C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn11264_N8S19245C1D1Ev,_ZThn7140_N8S19245C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19245C1 = {  "S19245C1", // class name
  bases_S19245C1, 19,
  &(vtc_S19245C1[0]), // expected_vtbl_contents
  &(vtt_S19245C1[0]), // expected_vtt_contents
  ABISELECT(34976,22200), // object size
  NSPAIRA(_ZTI8S19245C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19245C1),120, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19245C1),66, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3211C3  {
  int s3211c3f0;
  __tsi64 s3211c3f1;
  void *s3211c3f2[4];
  int s3211c3f3[2];
  void *s3211c3f4;
  ::S3423C4_nt s3211c3f5;
  void *s3211c3f6[2];
  virtual  ~S3211C3(); // _ZN7S3211C3D1Ev
  virtual void  v4(); // _ZN7S3211C32v4Ev
  virtual void  v5(); // _ZN7S3211C32v5Ev
  virtual void  v6(); // _ZN7S3211C32v6Ev
  virtual void  v7(); // _ZN7S3211C32v7Ev
  virtual void  v8(); // _ZN7S3211C32v8Ev
  virtual void  v9(); // _ZN7S3211C32v9Ev
  virtual void  v10(); // _ZN7S3211C33v10Ev
  virtual void  v11(); // _ZN7S3211C33v11Ev
  virtual void  v12(); // _ZN7S3211C33v12Ev
  virtual void  v13(); // _ZN7S3211C33v13Ev
  virtual void  v14(); // _ZN7S3211C33v14Ev
  virtual void  v15(); // _ZN7S3211C33v15Ev
  virtual void  v16(); // _ZN7S3211C33v16Ev
  virtual void  v17(); // _ZN7S3211C33v17Ev
  virtual void  v18(); // _ZN7S3211C33v18Ev
  virtual void  v19(); // _ZN7S3211C33v19Ev
  virtual void  v20(); // _ZN7S3211C33v20Ev
  virtual void  v21(); // _ZN7S3211C33v21Ev
  virtual void  v22(); // _ZN7S3211C33v22Ev
  virtual void  v23(); // _ZN7S3211C33v23Ev
  virtual void  v24(); // _ZN7S3211C33v24Ev
  virtual void  v25(); // _ZN7S3211C33v25Ev
  virtual void  v26(); // _ZN7S3211C33v26Ev
  virtual void  v27(); // _ZN7S3211C33v27Ev
  virtual void  v28(); // _ZN7S3211C33v28Ev
  virtual void  v29(); // _ZN7S3211C33v29Ev
  virtual void  v30(); // _ZN7S3211C33v30Ev
  virtual void  v31(); // _ZN7S3211C33v31Ev
  virtual void  v32(); // _ZN7S3211C33v32Ev
  virtual void  v33(); // _ZN7S3211C33v33Ev
  virtual void  v34(); // _ZN7S3211C33v34Ev
  virtual void  v35(); // _ZN7S3211C33v35Ev
  virtual void  v36(); // _ZN7S3211C33v36Ev
  virtual void  v37(); // _ZN7S3211C33v37Ev
  virtual void  v38(); // _ZN7S3211C33v38Ev
  virtual void  v39(); // _ZN7S3211C33v39Ev
  virtual void  v40(); // _ZN7S3211C33v40Ev
  virtual void  v41(); // _ZN7S3211C33v41Ev
  virtual void  v42(); // _ZN7S3211C33v42Ev
  virtual void  v43(); // _ZN7S3211C33v43Ev
  virtual void  v44(); // _ZN7S3211C33v44Ev
  virtual void  v45(); // _ZN7S3211C33v45Ev
  virtual void  v46(); // _ZN7S3211C33v46Ev
  virtual void  v47(); // _ZN7S3211C33v47Ev
  virtual void  v48(); // _ZN7S3211C33v48Ev
  virtual void  v49(); // _ZN7S3211C33v49Ev
  virtual void  v50(); // _ZN7S3211C33v50Ev
  virtual void  v51(); // _ZN7S3211C33v51Ev
  virtual void  v52(); // _ZN7S3211C33v52Ev
  virtual void  v53(); // _ZN7S3211C33v53Ev
  virtual void  v54(); // _ZN7S3211C33v54Ev
  virtual void  v55(); // _ZN7S3211C33v55Ev
  virtual void  v56(); // _ZN7S3211C33v56Ev
  virtual void  v57(); // _ZN7S3211C33v57Ev
  virtual void  v58(); // _ZN7S3211C33v58Ev
  virtual void  v59(); // _ZN7S3211C33v59Ev
  virtual void  v60(); // _ZN7S3211C33v60Ev
  virtual void  v61(); // _ZN7S3211C33v61Ev
  virtual void  v62(); // _ZN7S3211C33v62Ev
  virtual void  v63(); // _ZN7S3211C33v63Ev
  virtual void  v64(); // _ZN7S3211C33v64Ev
  virtual void  v65(); // _ZN7S3211C33v65Ev
  virtual void  v66(); // _ZN7S3211C33v66Ev
  virtual void  v67(); // _ZN7S3211C33v67Ev
  S3211C3(); // tgen
};
//SIG(-1 S3211C3) 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]}


 S3211C3 ::~S3211C3(){ note_dtor("S3211C3", this);}
void  S3211C3 ::v4(){vfunc_called(this, "_ZN7S3211C32v4Ev");}
void  S3211C3 ::v5(){vfunc_called(this, "_ZN7S3211C32v5Ev");}
void  S3211C3 ::v6(){vfunc_called(this, "_ZN7S3211C32v6Ev");}
void  S3211C3 ::v7(){vfunc_called(this, "_ZN7S3211C32v7Ev");}
void  S3211C3 ::v8(){vfunc_called(this, "_ZN7S3211C32v8Ev");}
void  S3211C3 ::v9(){vfunc_called(this, "_ZN7S3211C32v9Ev");}
void  S3211C3 ::v10(){vfunc_called(this, "_ZN7S3211C33v10Ev");}
void  S3211C3 ::v11(){vfunc_called(this, "_ZN7S3211C33v11Ev");}
void  S3211C3 ::v12(){vfunc_called(this, "_ZN7S3211C33v12Ev");}
void  S3211C3 ::v13(){vfunc_called(this, "_ZN7S3211C33v13Ev");}
void  S3211C3 ::v14(){vfunc_called(this, "_ZN7S3211C33v14Ev");}
void  S3211C3 ::v15(){vfunc_called(this, "_ZN7S3211C33v15Ev");}
void  S3211C3 ::v16(){vfunc_called(this, "_ZN7S3211C33v16Ev");}
void  S3211C3 ::v17(){vfunc_called(this, "_ZN7S3211C33v17Ev");}
void  S3211C3 ::v18(){vfunc_called(this, "_ZN7S3211C33v18Ev");}
void  S3211C3 ::v19(){vfunc_called(this, "_ZN7S3211C33v19Ev");}
void  S3211C3 ::v20(){vfunc_called(this, "_ZN7S3211C33v20Ev");}
void  S3211C3 ::v21(){vfunc_called(this, "_ZN7S3211C33v21Ev");}
void  S3211C3 ::v22(){vfunc_called(this, "_ZN7S3211C33v22Ev");}
void  S3211C3 ::v23(){vfunc_called(this, "_ZN7S3211C33v23Ev");}
void  S3211C3 ::v24(){vfunc_called(this, "_ZN7S3211C33v24Ev");}
void  S3211C3 ::v25(){vfunc_called(this, "_ZN7S3211C33v25Ev");}
void  S3211C3 ::v26(){vfunc_called(this, "_ZN7S3211C33v26Ev");}
void  S3211C3 ::v27(){vfunc_called(this, "_ZN7S3211C33v27Ev");}
void  S3211C3 ::v28(){vfunc_called(this, "_ZN7S3211C33v28Ev");}
void  S3211C3 ::v29(){vfunc_called(this, "_ZN7S3211C33v29Ev");}
void  S3211C3 ::v30(){vfunc_called(this, "_ZN7S3211C33v30Ev");}
void  S3211C3 ::v31(){vfunc_called(this, "_ZN7S3211C33v31Ev");}
void  S3211C3 ::v32(){vfunc_called(this, "_ZN7S3211C33v32Ev");}
void  S3211C3 ::v33(){vfunc_called(this, "_ZN7S3211C33v33Ev");}
void  S3211C3 ::v34(){vfunc_called(this, "_ZN7S3211C33v34Ev");}
void  S3211C3 ::v35(){vfunc_called(this, "_ZN7S3211C33v35Ev");}
void  S3211C3 ::v36(){vfunc_called(this, "_ZN7S3211C33v36Ev");}
void  S3211C3 ::v37(){vfunc_called(this, "_ZN7S3211C33v37Ev");}
void  S3211C3 ::v38(){vfunc_called(this, "_ZN7S3211C33v38Ev");}
void  S3211C3 ::v39(){vfunc_called(this, "_ZN7S3211C33v39Ev");}
void  S3211C3 ::v40(){vfunc_called(this, "_ZN7S3211C33v40Ev");}
void  S3211C3 ::v41(){vfunc_called(this, "_ZN7S3211C33v41Ev");}
void  S3211C3 ::v42(){vfunc_called(this, "_ZN7S3211C33v42Ev");}
void  S3211C3 ::v43(){vfunc_called(this, "_ZN7S3211C33v43Ev");}
void  S3211C3 ::v44(){vfunc_called(this, "_ZN7S3211C33v44Ev");}
void  S3211C3 ::v45(){vfunc_called(this, "_ZN7S3211C33v45Ev");}
void  S3211C3 ::v46(){vfunc_called(this, "_ZN7S3211C33v46Ev");}
void  S3211C3 ::v47(){vfunc_called(this, "_ZN7S3211C33v47Ev");}
void  S3211C3 ::v48(){vfunc_called(this, "_ZN7S3211C33v48Ev");}
void  S3211C3 ::v49(){vfunc_called(this, "_ZN7S3211C33v49Ev");}
void  S3211C3 ::v50(){vfunc_called(this, "_ZN7S3211C33v50Ev");}
void  S3211C3 ::v51(){vfunc_called(this, "_ZN7S3211C33v51Ev");}
void  S3211C3 ::v52(){vfunc_called(this, "_ZN7S3211C33v52Ev");}
void  S3211C3 ::v53(){vfunc_called(this, "_ZN7S3211C33v53Ev");}
void  S3211C3 ::v54(){vfunc_called(this, "_ZN7S3211C33v54Ev");}
void  S3211C3 ::v55(){vfunc_called(this, "_ZN7S3211C33v55Ev");}
void  S3211C3 ::v56(){vfunc_called(this, "_ZN7S3211C33v56Ev");}
void  S3211C3 ::v57(){vfunc_called(this, "_ZN7S3211C33v57Ev");}
void  S3211C3 ::v58(){vfunc_called(this, "_ZN7S3211C33v58Ev");}
void  S3211C3 ::v59(){vfunc_called(this, "_ZN7S3211C33v59Ev");}
void  S3211C3 ::v60(){vfunc_called(this, "_ZN7S3211C33v60Ev");}
void  S3211C3 ::v61(){vfunc_called(this, "_ZN7S3211C33v61Ev");}
void  S3211C3 ::v62(){vfunc_called(this, "_ZN7S3211C33v62Ev");}
void  S3211C3 ::v63(){vfunc_called(this, "_ZN7S3211C33v63Ev");}
void  S3211C3 ::v64(){vfunc_called(this, "_ZN7S3211C33v64Ev");}
void  S3211C3 ::v65(){vfunc_called(this, "_ZN7S3211C33v65Ev");}
void  S3211C3 ::v66(){vfunc_called(this, "_ZN7S3211C33v66Ev");}
void  S3211C3 ::v67(){vfunc_called(this, "_ZN7S3211C33v67Ev");}
S3211C3 ::S3211C3(){ note_ctor("S3211C3", this);} // tgen

static void Test_S3211C3()
{
  extern Class_Descriptor cd_S3211C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3211C3, buf);
    S3211C3 *dp, &lv = *(dp=new (buf) S3211C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3211C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3211C3)");
    check_field_offset(lv, s3211c3f0, ABISELECT(8,4), "S3211C3.s3211c3f0");
    check_field_offset(lv, s3211c3f1, ABISELECT(16,8), "S3211C3.s3211c3f1");
    check_field_offset(lv, s3211c3f2, ABISELECT(24,16), "S3211C3.s3211c3f2");
    check_field_offset(lv, s3211c3f3, ABISELECT(56,32), "S3211C3.s3211c3f3");
    check_field_offset(lv, s3211c3f4, ABISELECT(64,40), "S3211C3.s3211c3f4");
    check_field_offset(lv, s3211c3f5, ABISELECT(72,44), "S3211C3.s3211c3f5");
    check_field_offset(lv, s3211c3f6, ABISELECT(80,52), "S3211C3.s3211c3f6");
    test_class_info(&lv, &cd_S3211C3);
    dp->~S3211C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3211C3(Test_S3211C3, "S3211C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3211C3C1Ev();
extern void _ZN7S3211C3D1Ev();
Name_Map name_map_S3211C3[] = {
  NSPAIR(_ZN7S3211C3C1Ev),
  NSPAIR(_ZN7S3211C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3211C3[];
extern void _ZN7S3211C3D1Ev();
extern void _ZN7S3211C3D0Ev();
extern void _ZN7S3211C32v4Ev();
extern void _ZN7S3211C32v5Ev();
extern void _ZN7S3211C32v6Ev();
extern void _ZN7S3211C32v7Ev();
extern void _ZN7S3211C32v8Ev();
extern void _ZN7S3211C32v9Ev();
extern void _ZN7S3211C33v10Ev();
extern void _ZN7S3211C33v11Ev();
extern void _ZN7S3211C33v12Ev();
extern void _ZN7S3211C33v13Ev();
extern void _ZN7S3211C33v14Ev();
extern void _ZN7S3211C33v15Ev();
extern void _ZN7S3211C33v16Ev();
extern void _ZN7S3211C33v17Ev();
extern void _ZN7S3211C33v18Ev();
extern void _ZN7S3211C33v19Ev();
extern void _ZN7S3211C33v20Ev();
extern void _ZN7S3211C33v21Ev();
extern void _ZN7S3211C33v22Ev();
extern void _ZN7S3211C33v23Ev();
extern void _ZN7S3211C33v24Ev();
extern void _ZN7S3211C33v25Ev();
extern void _ZN7S3211C33v26Ev();
extern void _ZN7S3211C33v27Ev();
extern void _ZN7S3211C33v28Ev();
extern void _ZN7S3211C33v29Ev();
extern void _ZN7S3211C33v30Ev();
extern void _ZN7S3211C33v31Ev();
extern void _ZN7S3211C33v32Ev();
extern void _ZN7S3211C33v33Ev();
extern void _ZN7S3211C33v34Ev();
extern void _ZN7S3211C33v35Ev();
extern void _ZN7S3211C33v36Ev();
extern void _ZN7S3211C33v37Ev();
extern void _ZN7S3211C33v38Ev();
extern void _ZN7S3211C33v39Ev();
extern void _ZN7S3211C33v40Ev();
extern void _ZN7S3211C33v41Ev();
extern void _ZN7S3211C33v42Ev();
extern void _ZN7S3211C33v43Ev();
extern void _ZN7S3211C33v44Ev();
extern void _ZN7S3211C33v45Ev();
extern void _ZN7S3211C33v46Ev();
extern void _ZN7S3211C33v47Ev();
extern void _ZN7S3211C33v48Ev();
extern void _ZN7S3211C33v49Ev();
extern void _ZN7S3211C33v50Ev();
extern void _ZN7S3211C33v51Ev();
extern void _ZN7S3211C33v52Ev();
extern void _ZN7S3211C33v53Ev();
extern void _ZN7S3211C33v54Ev();
extern void _ZN7S3211C33v55Ev();
extern void _ZN7S3211C33v56Ev();
extern void _ZN7S3211C33v57Ev();
extern void _ZN7S3211C33v58Ev();
extern void _ZN7S3211C33v59Ev();
extern void _ZN7S3211C33v60Ev();
extern void _ZN7S3211C33v61Ev();
extern void _ZN7S3211C33v62Ev();
extern void _ZN7S3211C33v63Ev();
extern void _ZN7S3211C33v64Ev();
extern void _ZN7S3211C33v65Ev();
extern void _ZN7S3211C33v66Ev();
extern void _ZN7S3211C33v67Ev();
static  VTBL_ENTRY vtc_S3211C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3211C3[0]),
  (VTBL_ENTRY)&_ZN7S3211C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3211C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v67Ev,
};
extern VTBL_ENTRY _ZTI7S3211C3[];
extern  VTBL_ENTRY _ZTV7S3211C3[];
Class_Descriptor cd_S3211C3 = {  "S3211C3", // class name
  0,0,//no base classes
  &(vtc_S3211C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3211C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3211C3),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  S3211C5_nt  {
  virtual void  v68(); // _ZN10S3211C5_nt3v68Ev
  virtual void  v69(); // _ZN10S3211C5_nt3v69Ev
  virtual void  v70(); // _ZN10S3211C5_nt3v70Ev
  virtual void  v71(); // _ZN10S3211C5_nt3v71Ev
  virtual void  v72(); // _ZN10S3211C5_nt3v72Ev
  virtual void  v73(); // _ZN10S3211C5_nt3v73Ev
  virtual void  v74(); // _ZN10S3211C5_nt3v74Ev
  virtual void  v75(); // _ZN10S3211C5_nt3v75Ev
  virtual void  v76(); // _ZN10S3211C5_nt3v76Ev
  ~S3211C5_nt(); // tgen
  S3211C5_nt(); // tgen
};
//SIG(-1 S3211C5_nt) C1{ v1 v2 v3 v4 v5 v6 v7 v8 v9}


void  S3211C5_nt ::v68(){vfunc_called(this, "_ZN10S3211C5_nt3v68Ev");}
void  S3211C5_nt ::v69(){vfunc_called(this, "_ZN10S3211C5_nt3v69Ev");}
void  S3211C5_nt ::v70(){vfunc_called(this, "_ZN10S3211C5_nt3v70Ev");}
void  S3211C5_nt ::v71(){vfunc_called(this, "_ZN10S3211C5_nt3v71Ev");}
void  S3211C5_nt ::v72(){vfunc_called(this, "_ZN10S3211C5_nt3v72Ev");}
void  S3211C5_nt ::v73(){vfunc_called(this, "_ZN10S3211C5_nt3v73Ev");}
void  S3211C5_nt ::v74(){vfunc_called(this, "_ZN10S3211C5_nt3v74Ev");}
void  S3211C5_nt ::v75(){vfunc_called(this, "_ZN10S3211C5_nt3v75Ev");}
void  S3211C5_nt ::v76(){vfunc_called(this, "_ZN10S3211C5_nt3v76Ev");}
S3211C5_nt ::~S3211C5_nt(){ note_dtor("S3211C5_nt", this);} // tgen
S3211C5_nt ::S3211C5_nt(){ note_ctor("S3211C5_nt", this);} // tgen

//skip512 S3211C5_nt

#else // __cplusplus

extern void _ZN10S3211C5_ntC1Ev();
extern void _ZN10S3211C5_ntD1Ev();
Name_Map name_map_S3211C5_nt[] = {
  NSPAIR(_ZN10S3211C5_ntC1Ev),
  NSPAIR(_ZN10S3211C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
extern void _ZN10S3211C5_nt3v68Ev();
extern void _ZN10S3211C5_nt3v69Ev();
extern void _ZN10S3211C5_nt3v70Ev();
extern void _ZN10S3211C5_nt3v71Ev();
extern void _ZN10S3211C5_nt3v72Ev();
extern void _ZN10S3211C5_nt3v73Ev();
extern void _ZN10S3211C5_nt3v74Ev();
extern void _ZN10S3211C5_nt3v75Ev();
extern void _ZN10S3211C5_nt3v76Ev();
static  VTBL_ENTRY vtc_S3211C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3211C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v76Ev,
};
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
VTBL_ENTRY *P__ZTI10S3211C5_nt = _ZTI10S3211C5_nt; 
extern  VTBL_ENTRY _ZTV10S3211C5_nt[];
Class_Descriptor cd_S3211C5_nt = {  "S3211C5_nt", // class name
  0,0,//no base classes
  &(vtc_S3211C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3211C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3211C5_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3211C2  : S3211C3 , S3211C5_nt {
  ::S3423C17 s3211c2f0;
  ::S3423C4_nt s3211c2f1;
  ::S4228C37 s3211c2f2;
  ::S3423C11 s3211c2f3;
  unsigned int s3211c2f4:1;
  unsigned int s3211c2f5:1;
  unsigned int s3211c2f6:1;
  unsigned int s3211c2f7:1;
  virtual  ~S3211C2(); // _ZN7S3211C2D1Ev
  virtual void  v77(); // _ZN7S3211C23v77Ev
  virtual void  v78(); // _ZN7S3211C23v78Ev
  virtual void  v79(); // _ZN7S3211C23v79Ev
  virtual void  v80(); // _ZN7S3211C23v80Ev
  S3211C2(); // tgen
};
//SIG(-1 S3211C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} BC4{ v69 v70 v71 v72 v73 v74 v75 v76 v77} vd v1 v2 v3 v4 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC3 FC8{ m} FC9{ BC10{ BC7}} Fi:1 Fi:1 Fi:1 Fi:1}


 S3211C2 ::~S3211C2(){ note_dtor("S3211C2", this);}
void  S3211C2 ::v77(){vfunc_called(this, "_ZN7S3211C23v77Ev");}
void  S3211C2 ::v78(){vfunc_called(this, "_ZN7S3211C23v78Ev");}
void  S3211C2 ::v79(){vfunc_called(this, "_ZN7S3211C23v79Ev");}
void  S3211C2 ::v80(){vfunc_called(this, "_ZN7S3211C23v80Ev");}
S3211C2 ::S3211C2(){ note_ctor("S3211C2", this);} // tgen

static void Test_S3211C2()
{
  extern Class_Descriptor cd_S3211C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,27)];
    init_test(&cd_S3211C2, buf);
    S3211C2 *dp, &lv = *(dp=new (buf) S3211C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S3211C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3211C2)");
    check_base_class_offset(lv, (S3211C3*), 0, "S3211C2");
    check_base_class_offset(lv, (S3211C5_nt*), ABISELECT(96,60), "S3211C2");
    check_field_offset(lv, s3211c2f0, ABISELECT(104,64), "S3211C2.s3211c2f0");
    check_field_offset(lv, s3211c2f1, ABISELECT(120,76), "S3211C2.s3211c2f1");
    check_field_offset(lv, s3211c2f2, ABISELECT(128,84), "S3211C2.s3211c2f2");
    check_field_offset(lv, s3211c2f3, ABISELECT(136,88), "S3211C2.s3211c2f3");
    set_bf_and_test(lv, s3211c2f4, ABISELECT(152,100), 0, 1, 1, "S3211C2");
    set_bf_and_test(lv, s3211c2f5, ABISELECT(152,100), 1, 1, 1, "S3211C2");
    set_bf_and_test(lv, s3211c2f6, ABISELECT(152,100), 2, 1, 1, "S3211C2");
    set_bf_and_test(lv, s3211c2f7, ABISELECT(152,100), 3, 1, 1, "S3211C2");
    test_class_info(&lv, &cd_S3211C2);
    dp->~S3211C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3211C2(Test_S3211C2, "S3211C2", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN7S3211C2C1Ev();
extern void _ZN7S3211C2D1Ev();
Name_Map name_map_S3211C2[] = {
  NSPAIR(_ZN7S3211C2C1Ev),
  NSPAIR(_ZN7S3211C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3211C3;
extern VTBL_ENTRY _ZTI7S3211C3[];
extern  VTBL_ENTRY _ZTV7S3211C3[];
extern Class_Descriptor cd_S3211C5_nt;
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
extern  VTBL_ENTRY _ZTV10S3211C5_nt[];
static Base_Class bases_S3211C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3211C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3211C5_nt,    ABISELECT(96,60), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3211C2[];
extern void _ZN7S3211C2D1Ev();
extern void _ZN7S3211C2D0Ev();
extern void _ZN7S3211C32v4Ev();
extern void _ZN7S3211C32v5Ev();
extern void _ZN7S3211C32v6Ev();
extern void _ZN7S3211C32v7Ev();
extern void _ZN7S3211C32v8Ev();
extern void _ZN7S3211C32v9Ev();
extern void _ZN7S3211C33v10Ev();
extern void _ZN7S3211C33v11Ev();
extern void _ZN7S3211C33v12Ev();
extern void _ZN7S3211C33v13Ev();
extern void _ZN7S3211C33v14Ev();
extern void _ZN7S3211C33v15Ev();
extern void _ZN7S3211C33v16Ev();
extern void _ZN7S3211C33v17Ev();
extern void _ZN7S3211C33v18Ev();
extern void _ZN7S3211C33v19Ev();
extern void _ZN7S3211C33v20Ev();
extern void _ZN7S3211C33v21Ev();
extern void _ZN7S3211C33v22Ev();
extern void _ZN7S3211C33v23Ev();
extern void _ZN7S3211C33v24Ev();
extern void _ZN7S3211C33v25Ev();
extern void _ZN7S3211C33v26Ev();
extern void _ZN7S3211C33v27Ev();
extern void _ZN7S3211C33v28Ev();
extern void _ZN7S3211C33v29Ev();
extern void _ZN7S3211C33v30Ev();
extern void _ZN7S3211C33v31Ev();
extern void _ZN7S3211C33v32Ev();
extern void _ZN7S3211C33v33Ev();
extern void _ZN7S3211C33v34Ev();
extern void _ZN7S3211C33v35Ev();
extern void _ZN7S3211C33v36Ev();
extern void _ZN7S3211C33v37Ev();
extern void _ZN7S3211C33v38Ev();
extern void _ZN7S3211C33v39Ev();
extern void _ZN7S3211C33v40Ev();
extern void _ZN7S3211C33v41Ev();
extern void _ZN7S3211C33v42Ev();
extern void _ZN7S3211C33v43Ev();
extern void _ZN7S3211C33v44Ev();
extern void _ZN7S3211C33v45Ev();
extern void _ZN7S3211C33v46Ev();
extern void _ZN7S3211C33v47Ev();
extern void _ZN7S3211C33v48Ev();
extern void _ZN7S3211C33v49Ev();
extern void _ZN7S3211C33v50Ev();
extern void _ZN7S3211C33v51Ev();
extern void _ZN7S3211C33v52Ev();
extern void _ZN7S3211C33v53Ev();
extern void _ZN7S3211C33v54Ev();
extern void _ZN7S3211C33v55Ev();
extern void _ZN7S3211C33v56Ev();
extern void _ZN7S3211C33v57Ev();
extern void _ZN7S3211C33v58Ev();
extern void _ZN7S3211C33v59Ev();
extern void _ZN7S3211C33v60Ev();
extern void _ZN7S3211C33v61Ev();
extern void _ZN7S3211C33v62Ev();
extern void _ZN7S3211C33v63Ev();
extern void _ZN7S3211C33v64Ev();
extern void _ZN7S3211C33v65Ev();
extern void _ZN7S3211C33v66Ev();
extern void _ZN7S3211C33v67Ev();
extern void _ZN7S3211C23v77Ev();
extern void _ZN7S3211C23v78Ev();
extern void _ZN7S3211C23v79Ev();
extern void _ZN7S3211C23v80Ev();
extern void _ZN10S3211C5_nt3v68Ev();
extern void _ZN10S3211C5_nt3v69Ev();
extern void _ZN10S3211C5_nt3v70Ev();
extern void _ZN10S3211C5_nt3v71Ev();
extern void _ZN10S3211C5_nt3v72Ev();
extern void _ZN10S3211C5_nt3v73Ev();
extern void _ZN10S3211C5_nt3v74Ev();
extern void _ZN10S3211C5_nt3v75Ev();
extern void _ZN10S3211C5_nt3v76Ev();
static  VTBL_ENTRY vtc_S3211C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3211C2[0]),
  (VTBL_ENTRY)&_ZN7S3211C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3211C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v80Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3211C2[0]),
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v76Ev,
};
extern VTBL_ENTRY _ZTI7S3211C2[];
extern  VTBL_ENTRY _ZTV7S3211C2[];
Class_Descriptor cd_S3211C2 = {  "S3211C2", // class name
  bases_S3211C2, 2,
  &(vtc_S3211C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI7S3211C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3211C2),83, //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  S3211C1  : S3211C2 {
  virtual  ~S3211C1(); // _ZN7S3211C1D1Ev
  virtual void  v1(); // _ZN7S3211C12v1Ev
  virtual void  v2(); // _ZN7S3211C12v2Ev
  virtual void  v3(); // _ZN7S3211C12v3Ev
  S3211C1(); // tgen
};
//SIG(1 S3211C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} BC5{ v68 v69 v70 v71 v72 v73 v74 v75 v76} vd v77 v78 v79 v80 FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC4 FC9{ m} FC10{ BC11{ BC8}} Fi:1 Fi:1 Fi:1 Fi:1} vd v1 v2 v3}


 S3211C1 ::~S3211C1(){ note_dtor("S3211C1", this);}
void  S3211C1 ::v1(){vfunc_called(this, "_ZN7S3211C12v1Ev");}
void  S3211C1 ::v2(){vfunc_called(this, "_ZN7S3211C12v2Ev");}
void  S3211C1 ::v3(){vfunc_called(this, "_ZN7S3211C12v3Ev");}
S3211C1 ::S3211C1(){ note_ctor("S3211C1", this);} // tgen

static void Test_S3211C1()
{
  extern Class_Descriptor cd_S3211C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,27)];
    init_test(&cd_S3211C1, buf);
    S3211C1 *dp, &lv = *(dp=new (buf) S3211C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,104), "sizeof(S3211C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3211C1)");
    check_base_class_offset(lv, (S3211C3*)(S3211C2*), 0, "S3211C1");
    check_base_class_offset(lv, (S3211C5_nt*)(S3211C2*), ABISELECT(96,60), "S3211C1");
    check_base_class_offset(lv, (S3211C2*), 0, "S3211C1");
    test_class_info(&lv, &cd_S3211C1);
    dp->~S3211C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3211C1(Test_S3211C1, "S3211C1", ABISELECT(160,104));

#else // __cplusplus

extern void _ZN7S3211C1C1Ev();
extern void _ZN7S3211C1D1Ev();
Name_Map name_map_S3211C1[] = {
  NSPAIR(_ZN7S3211C1C1Ev),
  NSPAIR(_ZN7S3211C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3211C3;
extern VTBL_ENTRY _ZTI7S3211C3[];
extern  VTBL_ENTRY _ZTV7S3211C3[];
extern Class_Descriptor cd_S3211C5_nt;
extern VTBL_ENTRY _ZTI10S3211C5_nt[];
extern  VTBL_ENTRY _ZTV10S3211C5_nt[];
extern Class_Descriptor cd_S3211C2;
extern VTBL_ENTRY _ZTI7S3211C2[];
extern  VTBL_ENTRY _ZTV7S3211C2[];
static Base_Class bases_S3211C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3211C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3211C5_nt,    ABISELECT(96,60), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_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_S3211C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3211C1[];
extern void _ZN7S3211C1D1Ev();
extern void _ZN7S3211C1D0Ev();
extern void _ZN7S3211C32v4Ev();
extern void _ZN7S3211C32v5Ev();
extern void _ZN7S3211C32v6Ev();
extern void _ZN7S3211C32v7Ev();
extern void _ZN7S3211C32v8Ev();
extern void _ZN7S3211C32v9Ev();
extern void _ZN7S3211C33v10Ev();
extern void _ZN7S3211C33v11Ev();
extern void _ZN7S3211C33v12Ev();
extern void _ZN7S3211C33v13Ev();
extern void _ZN7S3211C33v14Ev();
extern void _ZN7S3211C33v15Ev();
extern void _ZN7S3211C33v16Ev();
extern void _ZN7S3211C33v17Ev();
extern void _ZN7S3211C33v18Ev();
extern void _ZN7S3211C33v19Ev();
extern void _ZN7S3211C33v20Ev();
extern void _ZN7S3211C33v21Ev();
extern void _ZN7S3211C33v22Ev();
extern void _ZN7S3211C33v23Ev();
extern void _ZN7S3211C33v24Ev();
extern void _ZN7S3211C33v25Ev();
extern void _ZN7S3211C33v26Ev();
extern void _ZN7S3211C33v27Ev();
extern void _ZN7S3211C33v28Ev();
extern void _ZN7S3211C33v29Ev();
extern void _ZN7S3211C33v30Ev();
extern void _ZN7S3211C33v31Ev();
extern void _ZN7S3211C33v32Ev();
extern void _ZN7S3211C33v33Ev();
extern void _ZN7S3211C33v34Ev();
extern void _ZN7S3211C33v35Ev();
extern void _ZN7S3211C33v36Ev();
extern void _ZN7S3211C33v37Ev();
extern void _ZN7S3211C33v38Ev();
extern void _ZN7S3211C33v39Ev();
extern void _ZN7S3211C33v40Ev();
extern void _ZN7S3211C33v41Ev();
extern void _ZN7S3211C33v42Ev();
extern void _ZN7S3211C33v43Ev();
extern void _ZN7S3211C33v44Ev();
extern void _ZN7S3211C33v45Ev();
extern void _ZN7S3211C33v46Ev();
extern void _ZN7S3211C33v47Ev();
extern void _ZN7S3211C33v48Ev();
extern void _ZN7S3211C33v49Ev();
extern void _ZN7S3211C33v50Ev();
extern void _ZN7S3211C33v51Ev();
extern void _ZN7S3211C33v52Ev();
extern void _ZN7S3211C33v53Ev();
extern void _ZN7S3211C33v54Ev();
extern void _ZN7S3211C33v55Ev();
extern void _ZN7S3211C33v56Ev();
extern void _ZN7S3211C33v57Ev();
extern void _ZN7S3211C33v58Ev();
extern void _ZN7S3211C33v59Ev();
extern void _ZN7S3211C33v60Ev();
extern void _ZN7S3211C33v61Ev();
extern void _ZN7S3211C33v62Ev();
extern void _ZN7S3211C33v63Ev();
extern void _ZN7S3211C33v64Ev();
extern void _ZN7S3211C33v65Ev();
extern void _ZN7S3211C33v66Ev();
extern void _ZN7S3211C33v67Ev();
extern void _ZN7S3211C23v77Ev();
extern void _ZN7S3211C23v78Ev();
extern void _ZN7S3211C23v79Ev();
extern void _ZN7S3211C23v80Ev();
extern void _ZN7S3211C12v1Ev();
extern void _ZN7S3211C12v2Ev();
extern void _ZN7S3211C12v3Ev();
extern void _ZN10S3211C5_nt3v68Ev();
extern void _ZN10S3211C5_nt3v69Ev();
extern void _ZN10S3211C5_nt3v70Ev();
extern void _ZN10S3211C5_nt3v71Ev();
extern void _ZN10S3211C5_nt3v72Ev();
extern void _ZN10S3211C5_nt3v73Ev();
extern void _ZN10S3211C5_nt3v74Ev();
extern void _ZN10S3211C5_nt3v75Ev();
extern void _ZN10S3211C5_nt3v76Ev();
static  VTBL_ENTRY vtc_S3211C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3211C1[0]),
  (VTBL_ENTRY)&_ZN7S3211C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3211C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3211C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3211C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3211C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3211C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3211C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3211C12v3Ev,
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S3211C1[0]),
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3211C5_nt3v76Ev,
};
extern VTBL_ENTRY _ZTI7S3211C1[];
extern  VTBL_ENTRY _ZTV7S3211C1[];
Class_Descriptor cd_S3211C1 = {  "S3211C1", // class name
  bases_S3211C1, 3,
  &(vtc_S3211C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,104), // object size
  NSPAIRA(_ZTI7S3211C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3211C1),86, //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  S20110C4  {
  void *s20110c4f0[3];
  int s20110c4f1[2];
  __tsi64 s20110c4f2;
  virtual void  v4(); // _ZN8S20110C42v4Ev
  ~S20110C4(); // tgen
  S20110C4(); // tgen
};
//SIG(-1 S20110C4) C1{ v1 Fp[3] Fi[2] FL}


void  S20110C4 ::v4(){vfunc_called(this, "_ZN8S20110C42v4Ev");}
S20110C4 ::~S20110C4(){ note_dtor("S20110C4", this);} // tgen
S20110C4 ::S20110C4(){ note_ctor("S20110C4", this);} // tgen

static void Test_S20110C4()
{
  extern Class_Descriptor cd_S20110C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20110C4, buf);
    S20110C4 *dp, &lv = *(dp=new (buf) S20110C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20110C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20110C4)");
    check_field_offset(lv, s20110c4f0, ABISELECT(8,4), "S20110C4.s20110c4f0");
    check_field_offset(lv, s20110c4f1, ABISELECT(32,16), "S20110C4.s20110c4f1");
    check_field_offset(lv, s20110c4f2, ABISELECT(40,24), "S20110C4.s20110c4f2");
    test_class_info(&lv, &cd_S20110C4);
    dp->~S20110C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C4(Test_S20110C4, "S20110C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20110C4C1Ev();
extern void _ZN8S20110C4D1Ev();
Name_Map name_map_S20110C4[] = {
  NSPAIR(_ZN8S20110C4C1Ev),
  NSPAIR(_ZN8S20110C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20110C4[];
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C4[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
Class_Descriptor cd_S20110C4 = {  "S20110C4", // class name
  0,0,//no base classes
  &(vtc_S20110C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20110C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20110C4),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  S20110C6  : S20110C4 {
  char s20110c6f0[10];
  long s20110c6f1[6];
  ::S20110C4 s20110c6f2;
  void *s20110c6f3;
  ::S19763C18_nt s20110c6f4;
  int s20110c6f5[4];
  ::S19942C8 s20110c6f6;
  int s20110c6f7;
  void *s20110c6f8;
  __tsi64 s20110c6f9;
  int s20110c6f10:19;
  virtual void  v5(); // _ZN8S20110C62v5Ev
  virtual void  v6(); // _ZN8S20110C62v6Ev
  ~S20110C6(); // tgen
  S20110C6(); // tgen
};
//SIG(-1 S20110C6) C1{ BC2{ v3 Fp[3] Fi[2] FL} v1 v2 Fc[10] Fl[6] FC2 Fp FC3{} Fi[4] FU4{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19}


void  S20110C6 ::v5(){vfunc_called(this, "_ZN8S20110C62v5Ev");}
void  S20110C6 ::v6(){vfunc_called(this, "_ZN8S20110C62v6Ev");}
S20110C6 ::~S20110C6(){ note_dtor("S20110C6", this);} // tgen
S20110C6 ::S20110C6(){ note_ctor("S20110C6", this);} // tgen

static void Test_S20110C6()
{
  extern Class_Descriptor cd_S20110C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,40)];
    init_test(&cd_S20110C6, buf);
    S20110C6 *dp, &lv = *(dp=new (buf) S20110C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,156), "sizeof(S20110C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C6)");
    check_base_class_offset(lv, (S20110C4*), 0, "S20110C6");
    check_field_offset(lv, s20110c6f0, ABISELECT(48,32), "S20110C6.s20110c6f0");
    check_field_offset(lv, s20110c6f1, ABISELECT(64,44), "S20110C6.s20110c6f1");
    check_field_offset(lv, s20110c6f2, ABISELECT(112,68), "S20110C6.s20110c6f2");
    check_field_offset(lv, s20110c6f3, ABISELECT(160,100), "S20110C6.s20110c6f3");
    check_field_offset(lv, s20110c6f4, ABISELECT(168,104), "S20110C6.s20110c6f4");
    check_field_offset(lv, s20110c6f5, ABISELECT(172,108), "S20110C6.s20110c6f5");
    check_field_offset(lv, s20110c6f6, ABISELECT(192,124), "S20110C6.s20110c6f6");
    check_field_offset(lv, s20110c6f7, ABISELECT(208,136), "S20110C6.s20110c6f7");
    check_field_offset(lv, s20110c6f8, ABISELECT(216,140), "S20110C6.s20110c6f8");
    check_field_offset(lv, s20110c6f9, ABISELECT(224,144), "S20110C6.s20110c6f9");
    set_bf_and_test(lv, s20110c6f10, ABISELECT(232,152), 0, 19, 1, "S20110C6");
    set_bf_and_test(lv, s20110c6f10, ABISELECT(232,152), 0, 19, hide_sll(1LL<<18), "S20110C6");
    test_class_info(&lv, &cd_S20110C6);
    dp->~S20110C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C6(Test_S20110C6, "S20110C6", ABISELECT(240,156));

#else // __cplusplus

extern void _ZN8S20110C6C1Ev();
extern void _ZN8S20110C6D1Ev();
Name_Map name_map_S20110C6[] = {
  NSPAIR(_ZN8S20110C6C1Ev),
  NSPAIR(_ZN8S20110C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
static Base_Class bases_S20110C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C6[];
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY vtc_S20110C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C6[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
Class_Descriptor cd_S20110C6 = {  "S20110C6", // class name
  bases_S20110C6, 1,
  &(vtc_S20110C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,156), // object size
  NSPAIRA(_ZTI8S20110C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20110C6),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C9  : S20110C4 {
  int s20110c9f0[10];
  short s20110c9f1:11;
  ::S20110C4 s20110c9f2;
  ~S20110C9(); // tgen
  S20110C9(); // tgen
};
//SIG(-1 S20110C9) C1{ BC2{ v1 Fp[3] Fi[2] FL} Fi[10] Fs:11 FC2}


S20110C9 ::~S20110C9(){ note_dtor("S20110C9", this);} // tgen
S20110C9 ::S20110C9(){ note_ctor("S20110C9", this);} // tgen

static void Test_S20110C9()
{
  extern Class_Descriptor cd_S20110C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S20110C9, buf);
    S20110C9 *dp, &lv = *(dp=new (buf) S20110C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S20110C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20110C9)");
    check_base_class_offset(lv, (S20110C4*), 0, "S20110C9");
    check_field_offset(lv, s20110c9f0, ABISELECT(48,32), "S20110C9.s20110c9f0");
    set_bf_and_test(lv, s20110c9f1, ABISELECT(88,72), 0, 11, 1, "S20110C9");
    set_bf_and_test(lv, s20110c9f1, ABISELECT(88,72), 0, 11, hide_sll(1LL<<10), "S20110C9");
    check_field_offset(lv, s20110c9f2, ABISELECT(96,76), "S20110C9.s20110c9f2");
    test_class_info(&lv, &cd_S20110C9);
    dp->~S20110C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C9(Test_S20110C9, "S20110C9", ABISELECT(144,108));

#else // __cplusplus

extern void _ZN8S20110C9C1Ev();
extern void _ZN8S20110C9D1Ev();
Name_Map name_map_S20110C9[] = {
  NSPAIR(_ZN8S20110C9C1Ev),
  NSPAIR(_ZN8S20110C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
static Base_Class bases_S20110C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C9[];
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C9[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
Class_Descriptor cd_S20110C9 = {  "S20110C9", // class name
  bases_S20110C9, 1,
  &(vtc_S20110C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,108), // object size
  NSPAIRA(_ZTI8S20110C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20110C9),3, //virtual function table var
  2, // 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  S20110C10  {
  void *s20110c10f0;
  short s20110c10f1;
  ::S19763C18_nt s20110c10f2;
  void *s20110c10f3;
  __tsi64 s20110c10f4;
  int s20110c10f5;
  ::S19942C11 s20110c10f6;
  int s20110c10f7;
  int s20110c10f8:12;
  int s20110c10f9;
  int s20110c10f10:8;
  virtual void  v7(); // _ZN9S20110C102v7Ev
  ~S20110C10(); // tgen
  S20110C10(); // tgen
};
//SIG(-1 S20110C10) C1{ v1 Fp Fs FC2{} Fp FL Fi FU3{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8}


void  S20110C10 ::v7(){vfunc_called(this, "_ZN9S20110C102v7Ev");}
S20110C10 ::~S20110C10(){ note_dtor("S20110C10", this);} // tgen
S20110C10 ::S20110C10(){ note_ctor("S20110C10", this);} // tgen

static void Test_S20110C10()
{
  extern Class_Descriptor cd_S20110C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,42)];
    init_test(&cd_S20110C10, buf);
    S20110C10 *dp, &lv = *(dp=new (buf) S20110C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,164), "sizeof(S20110C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C10)");
    check_field_offset(lv, s20110c10f0, ABISELECT(8,4), "S20110C10.s20110c10f0");
    check_field_offset(lv, s20110c10f1, ABISELECT(16,8), "S20110C10.s20110c10f1");
    check_field_offset(lv, s20110c10f2, ABISELECT(18,10), "S20110C10.s20110c10f2");
    check_field_offset(lv, s20110c10f3, ABISELECT(24,12), "S20110C10.s20110c10f3");
    check_field_offset(lv, s20110c10f4, ABISELECT(32,16), "S20110C10.s20110c10f4");
    check_field_offset(lv, s20110c10f5, ABISELECT(40,24), "S20110C10.s20110c10f5");
    check_field_offset(lv, s20110c10f6, ABISELECT(48,28), "S20110C10.s20110c10f6");
    check_field_offset(lv, s20110c10f7, ABISELECT(208,148), "S20110C10.s20110c10f7");
    set_bf_and_test(lv, s20110c10f8, ABISELECT(212,152), 0, 12, 1, "S20110C10");
    set_bf_and_test(lv, s20110c10f8, ABISELECT(212,152), 0, 12, hide_sll(1LL<<11), "S20110C10");
    check_field_offset(lv, s20110c10f9, ABISELECT(216,156), "S20110C10.s20110c10f9");
    set_bf_and_test(lv, s20110c10f10, ABISELECT(220,160), 0, 8, 1, "S20110C10");
    set_bf_and_test(lv, s20110c10f10, ABISELECT(220,160), 0, 8, hide_sll(1LL<<7), "S20110C10");
    test_class_info(&lv, &cd_S20110C10);
    dp->~S20110C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C10(Test_S20110C10, "S20110C10", ABISELECT(224,164));

#else // __cplusplus

extern void _ZN9S20110C10C1Ev();
extern void _ZN9S20110C10D1Ev();
Name_Map name_map_S20110C10[] = {
  NSPAIR(_ZN9S20110C10C1Ev),
  NSPAIR(_ZN9S20110C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20110C10[];
extern void _ZN9S20110C102v7Ev();
static  VTBL_ENTRY vtc_S20110C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20110C10[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
};
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
Class_Descriptor cd_S20110C10 = {  "S20110C10", // class name
  0,0,//no base classes
  &(vtc_S20110C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,164), // object size
  NSPAIRA(_ZTI9S20110C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20110C10),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  S20110C5  : virtual S20110C6 , virtual S20110C4 , virtual S20110C9 , S20110C10 {
  long double s20110c5f0;
  int s20110c5f1;
  long double s20110c5f2[3];
  long double s20110c5f3;
  int s20110c5f4;
  __tsi64 s20110c5f5[9];
  int s20110c5f6;
  int s20110c5f7;
  int s20110c5f8;
  int s20110c5f9;
  virtual void  v8(); // _ZN8S20110C52v8Ev
  ~S20110C5(); // tgen
  S20110C5(); // tgen
};
//SIG(-1 S20110C5) C1{ VBC2{ BC3{ v2 Fp[3] Fi[2] FL} v3 v4 Fc[10] Fl[6] FC3 Fp FC4{} Fi[4] FU5{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC6{ BC3 Fi[10] Fs:11 FC3} BC7{ v5 Fp Fs FC4 Fp FL Fi FU8{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v1 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi}


void  S20110C5 ::v8(){vfunc_called(this, "_ZN8S20110C52v8Ev");}
S20110C5 ::~S20110C5(){ note_dtor("S20110C5", this);} // tgen
S20110C5 ::S20110C5(){ note_ctor("S20110C5", this);} // tgen

static void Test_S20110C5()
{
  extern Class_Descriptor cd_S20110C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(54,155)];
    init_test(&cd_S20110C5, buf);
    S20110C5 *dp, &lv = *(dp=new (buf) S20110C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(848,616), "sizeof(S20110C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C5)");
    check_base_class_offset(lv, (S20110C4*)(S20110C6*), ABISELECT(416,320), "S20110C5");
    check_base_class_offset(lv, (S20110C6*), ABISELECT(416,320), "S20110C5");
    /*is_ambiguous_... S20110C5::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*), ABISELECT(656,476), "S20110C5");
    check_base_class_offset(lv, (S20110C4*)(S20110C9*), ABISELECT(704,508), "S20110C5");
    check_base_class_offset(lv, (S20110C9*), ABISELECT(704,508), "S20110C5");
    check_base_class_offset(lv, (S20110C10*), 0, "S20110C5");
    check_field_offset(lv, s20110c5f0, ABISELECT(224,164), "S20110C5.s20110c5f0");
    check_field_offset(lv, s20110c5f1, ABISELECT(240,176), "S20110C5.s20110c5f1");
    check_field_offset(lv, s20110c5f2, ABISELECT(256,180), "S20110C5.s20110c5f2");
    check_field_offset(lv, s20110c5f3, ABISELECT(304,216), "S20110C5.s20110c5f3");
    check_field_offset(lv, s20110c5f4, ABISELECT(320,228), "S20110C5.s20110c5f4");
    check_field_offset(lv, s20110c5f5, ABISELECT(328,232), "S20110C5.s20110c5f5");
    check_field_offset(lv, s20110c5f6, ABISELECT(400,304), "S20110C5.s20110c5f6");
    check_field_offset(lv, s20110c5f7, ABISELECT(404,308), "S20110C5.s20110c5f7");
    check_field_offset(lv, s20110c5f8, ABISELECT(408,312), "S20110C5.s20110c5f8");
    check_field_offset(lv, s20110c5f9, ABISELECT(412,316), "S20110C5.s20110c5f9");
    test_class_info(&lv, &cd_S20110C5);
    dp->~S20110C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C5(Test_S20110C5, "S20110C5", ABISELECT(848,616));

#else // __cplusplus

extern void _ZN8S20110C5C1Ev();
extern void _ZN8S20110C5D1Ev();
Name_Map name_map_S20110C5[] = {
  NSPAIR(_ZN8S20110C5C1Ev),
  NSPAIR(_ZN8S20110C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C6;
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C9;
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
static Base_Class bases_S20110C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    ABISELECT(416,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20110C6,    ABISELECT(416,320), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C4,    ABISELECT(656,476), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C4,    ABISELECT(704,508), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //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_S20110C9,    ABISELECT(704,508), //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
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S20110C5[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C5[] = {
  ABISELECT(704,508),
  ABISELECT(656,476),
  ABISELECT(416,320),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  0,
  0,
  0,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
  0,
  ABISELECT(-656,-476),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  0,
  ABISELECT(-704,-508),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20110C5[];
static  VTT_ENTRY vtt_S20110C5[] = {
  {&(_ZTV8S20110C5[5]),  5,23},
  {&(_ZTV8S20110C5[12]),  12,23},
  {&(_ZTV8S20110C5[18]),  18,23},
  {&(_ZTV8S20110C5[22]),  22,23},
};
extern VTBL_ENTRY _ZTI8S20110C5[];
extern  VTBL_ENTRY _ZTV8S20110C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C5[];
Class_Descriptor cd_S20110C5 = {  "S20110C5", // class name
  bases_S20110C5, 6,
  &(vtc_S20110C5[0]), // expected_vtbl_contents
  &(vtt_S20110C5[0]), // expected_vtt_contents
  ABISELECT(848,616), // object size
  NSPAIRA(_ZTI8S20110C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20110C5),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20110C5),4, //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  S20110C3  : virtual S20110C4 , S20110C5 , virtual S19942C12_nt , S20110C10 {
  int s20110c3f0;
  long double s20110c3f1;
  ::S19942C12_nt s20110c3f2;
  void *s20110c3f3;
  short s20110c3f4;
  int s20110c3f5;
  int s20110c3f6;
  int s20110c3f7;
  virtual void  v9(); // _ZN8S20110C32v9Ev
  ~S20110C3(); // tgen
  S20110C3(); // tgen
};
//SIG(-1 S20110C3) C1{ VBC2{ v2 Fp[3] Fi[2] FL} BC3{ VBC4{ BC2 v3 v4 Fc[10] Fl[6] FC2 Fp FC5{} Fi[4] FU6{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC2 VBC7{ BC2 Fi[10] Fs:11 FC2} BC8{ v5 Fp Fs FC5 Fp FL Fi FU9{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v6 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC10{ m Fc[2]} BC8 v1 Fi FD FC10 Fp Fs Fi Fi Fi}


void  S20110C3 ::v9(){vfunc_called(this, "_ZN8S20110C32v9Ev");}
S20110C3 ::~S20110C3(){ note_dtor("S20110C3", this);} // tgen
S20110C3 ::S20110C3(){ note_ctor("S20110C3", this);} // tgen

static void Test_S20110C3()
{
  extern Class_Descriptor cd_S20110C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,207)];
    init_test(&cd_S20110C3, buf);
    S20110C3 *dp, &lv = *(dp=new (buf) S20110C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,824), "sizeof(S20110C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C3)");
    /*is_ambiguous_... S20110C3::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*), ABISELECT(704,524), "S20110C3");
    /*is_ambiguous_... S20110C5::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*)(S20110C5*), ABISELECT(704,524), "S20110C3");
    check_base_class_offset(lv, (S20110C4*)(S20110C6*), ABISELECT(752,556), "S20110C3");
    check_base_class_offset(lv, (S20110C6*)(S20110C5*), ABISELECT(752,556), "S20110C3");
    check_base_class_offset(lv, (S20110C4*)(S20110C9*), ABISELECT(992,712), "S20110C3");
    check_base_class_offset(lv, (S20110C9*)(S20110C5*), ABISELECT(992,712), "S20110C3");
    check_base_class_offset(lv, (S20110C10*)(S20110C5*), 0, "S20110C3");
    check_base_class_offset(lv, (S20110C5*), 0, "S20110C3");
    check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(1136,820), "S20110C3");
    /*is_ambiguous_... S20110C3::S20110C10 */ AMB_check_base_class_offset(lv, (S20110C10*), ABISELECT(416,320), "S20110C3");
    check_field_offset(lv, s20110c3f0, ABISELECT(640,484), "S20110C3.s20110c3f0");
    check_field_offset(lv, s20110c3f1, ABISELECT(656,488), "S20110C3.s20110c3f1");
    check_field_offset(lv, s20110c3f2, ABISELECT(672,500), "S20110C3.s20110c3f2");
    check_field_offset(lv, s20110c3f3, ABISELECT(680,504), "S20110C3.s20110c3f3");
    check_field_offset(lv, s20110c3f4, ABISELECT(688,508), "S20110C3.s20110c3f4");
    check_field_offset(lv, s20110c3f5, ABISELECT(692,512), "S20110C3.s20110c3f5");
    check_field_offset(lv, s20110c3f6, ABISELECT(696,516), "S20110C3.s20110c3f6");
    check_field_offset(lv, s20110c3f7, ABISELECT(700,520), "S20110C3.s20110c3f7");
    test_class_info(&lv, &cd_S20110C3);
    dp->~S20110C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C3(Test_S20110C3, "S20110C3", ABISELECT(1152,824));

#else // __cplusplus

extern void _ZN8S20110C3C1Ev();
extern void _ZN8S20110C3D1Ev();
Name_Map name_map_S20110C3[] = {
  NSPAIR(_ZN8S20110C3C1Ev),
  NSPAIR(_ZN8S20110C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C6;
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C9;
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
extern Class_Descriptor cd_S20110C5;
extern VTBL_ENTRY _ZTI8S20110C5[];
extern  VTBL_ENTRY _ZTV8S20110C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C5[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
static Base_Class bases_S20110C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C4,    ABISELECT(704,524), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C4,    ABISELECT(752,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20110C6,    ABISELECT(752,556), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20110C4,    ABISELECT(992,712), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //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_S20110C9,    ABISELECT(992,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20110C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20110C5,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19942C12_nt,    ABISELECT(1136,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20110C10,    ABISELECT(416,320), //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},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C3[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C32v9Ev();
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C3[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20110C32v9Ev,
  ABISELECT(-416,-320),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20110C3[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C5__8S20110C3[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
};
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C6__8S20110C5__8S20110C3[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C4__A1__8S20110C5__8S20110C3[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C48S20110C9__A2__8S20110C5__8S20110C3[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
static  VTT_ENTRY vtt_S20110C3[] = {
  {&(_ZTV8S20110C3[6]),  6,28},
  {&(_tg__ZTV8S20110C5__8S20110C3[5]),  5,7},
  {&(_tg__ZTV8S20110C6__8S20110C5__8S20110C3[5]),  5,8},
  {&(_tg__ZTV8S20110C4__A1__8S20110C5__8S20110C3[3]),  3,4},
  {&(_tg__ZTV8S20110C48S20110C9__A2__8S20110C5__8S20110C3[3]),  3,4},
  {&(_ZTV8S20110C3[15]),  15,28},
  {&(_ZTV8S20110C3[21]),  21,28},
  {&(_ZTV8S20110C3[27]),  27,28},
};
extern VTBL_ENTRY _ZTI8S20110C3[];
extern  VTBL_ENTRY _ZTV8S20110C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C3[];
Class_Descriptor cd_S20110C3 = {  "S20110C3", // class name
  bases_S20110C3, 9,
  &(vtc_S20110C3[0]), // expected_vtbl_contents
  &(vtt_S20110C3[0]), // expected_vtt_contents
  ABISELECT(1152,824), // object size
  NSPAIRA(_ZTI8S20110C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20110C3),28, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20110C3),8, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20110C2  {
  char s20110c2f0;
  int s20110c2f1;
  unsigned char s20110c2f2:1;
  void *s20110c2f3;
  ::S20110C3 s20110c2f4[7];
  void *s20110c2f5;
  ::S20110C4 s20110c2f6;
  int s20110c2f7;
  int s20110c2f8;
  virtual void  v3(); // _ZN8S20110C22v3Ev
  ~S20110C2(); // tgen
  S20110C2(); // tgen
};
//SIG(-1 S20110C2) C1{ v1 Fc Fi Fc:1 Fp FC2{ VBC3{ v3 Fp[3] Fi[2] FL} BC4{ VBC5{ BC3 v4 v5 Fc[10] Fl[6] FC3 Fp FC6{} Fi[4] FU7{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC3 VBC8{ BC3 Fi[10] Fs:11 FC3} BC9{ v6 Fp Fs FC6 Fp FL Fi FU10{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v7 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC11{ m Fc[2]} BC9 v2 Fi FD FC11 Fp Fs Fi Fi Fi}[7] Fp FC3 Fi Fi}


void  S20110C2 ::v3(){vfunc_called(this, "_ZN8S20110C22v3Ev");}
S20110C2 ::~S20110C2(){ note_dtor("S20110C2", this);} // tgen
S20110C2 ::S20110C2(){ note_ctor("S20110C2", this);} // tgen

static void Test_S20110C2()
{
  extern Class_Descriptor cd_S20110C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(511,1459)];
    init_test(&cd_S20110C2, buf);
    S20110C2 *dp, &lv = *(dp=new (buf) S20110C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8160,5832), "sizeof(S20110C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C2)");
    check_field_offset(lv, s20110c2f0, ABISELECT(8,4), "S20110C2.s20110c2f0");
    check_field_offset(lv, s20110c2f1, ABISELECT(12,8), "S20110C2.s20110c2f1");
    set_bf_and_test(lv, s20110c2f2, ABISELECT(16,12), 0, 1, 1, "S20110C2");
    check_field_offset(lv, s20110c2f3, ABISELECT(24,16), "S20110C2.s20110c2f3");
    check_field_offset(lv, s20110c2f4, ABISELECT(32,20), "S20110C2.s20110c2f4");
    check_field_offset(lv, s20110c2f5, ABISELECT(8096,5788), "S20110C2.s20110c2f5");
    check_field_offset(lv, s20110c2f6, ABISELECT(8104,5792), "S20110C2.s20110c2f6");
    check_field_offset(lv, s20110c2f7, ABISELECT(8152,5824), "S20110C2.s20110c2f7");
    check_field_offset(lv, s20110c2f8, ABISELECT(8156,5828), "S20110C2.s20110c2f8");
    test_class_info(&lv, &cd_S20110C2);
    dp->~S20110C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C2(Test_S20110C2, "S20110C2", ABISELECT(8160,5832));

#else // __cplusplus

extern void _ZN8S20110C2C1Ev();
extern void _ZN8S20110C2D1Ev();
Name_Map name_map_S20110C2[] = {
  NSPAIR(_ZN8S20110C2C1Ev),
  NSPAIR(_ZN8S20110C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20110C2[];
extern void _ZN8S20110C22v3Ev();
static  VTBL_ENTRY vtc_S20110C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C2[0]),
  (VTBL_ENTRY)&_ZN8S20110C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S20110C2[];
extern  VTBL_ENTRY _ZTV8S20110C2[];
Class_Descriptor cd_S20110C2 = {  "S20110C2", // class name
  0,0,//no base classes
  &(vtc_S20110C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8160,5832), // object size
  NSPAIRA(_ZTI8S20110C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20110C2),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  S20110C1  : virtual S20110C2 , S19942C12_nt , virtual S20110C3 , S20110C10 {
  short s20110c1f0;
  ::S19763C18_nt s20110c1f1;
  void *s20110c1f2;
  void *s20110c1f3;
  char s20110c1f4;
  int s20110c1f5;
  __tsi64 s20110c1f6;
  int s20110c1f7;
  int s20110c1f8;
  virtual  ~S20110C1(); // _ZN8S20110C1D2Ev
  virtual void  v1(); // _ZN8S20110C12v1Ev
  virtual void  v2(); // _ZN8S20110C12v2Ev
  S20110C1(); // tgen
};
//SIG(1 S20110C1) C1{ VBC2{ v3 Fc Fi Fc:1 Fp FC3{ VBC4{ v4 Fp[3] Fi[2] FL} BC5{ VBC6{ BC4 v5 v6 Fc[10] Fl[6] FC4 Fp FC7{} Fi[4] FU8{ m Fp Fi FD Fp FL FL:64 Fi Fp Fi FL Fi Fc:8} Fi Fp FL Fi:19} VBC4 VBC9{ BC4 Fi[10] Fs:11 FC4} BC10{ v7 Fp Fs FC7 Fp FL Fi FU11{ m Fp FD[10] Fp Fs Fi Fi:10 Fp Fi Fc[3] Fp} Fi Fi:12 Fi Fi:8} v8 FD Fi FD[3] FD Fi FL[9] Fi Fi Fi Fi} VBC12{ m Fc[2]} BC10 v9 Fi FD FC12 Fp Fs Fi Fi Fi}[7] Fp FC4 Fi Fi} BC12 VBC3 BC10 vd v1 v2 Fs FC7 Fp Fp Fc Fi FL Fi Fi}


 S20110C1 ::~S20110C1(){ note_dtor("S20110C1", this);}
void  S20110C1 ::v1(){vfunc_called(this, "_ZN8S20110C12v1Ev");}
void  S20110C1 ::v2(){vfunc_called(this, "_ZN8S20110C12v2Ev");}
S20110C1 ::S20110C1(){ note_ctor("S20110C1", this);} // tgen

static void Test_S20110C1()
{
  extern Class_Descriptor cd_S20110C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(600,1715)];
    init_test(&cd_S20110C1, buf);
    S20110C1 *dp, &lv = *(dp=new (buf) S20110C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(9584,6856), "sizeof(S20110C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20110C1)");
    check_base_class_offset(lv, (S20110C2*), ABISELECT(272,200), "S20110C1");
    /*is_ambiguous_... S20110C1::S19942C12_nt */ AMB_check_base_class_offset(lv, (S19942C12_nt*), ABISELECT(221,161), "S20110C1");
    /*is_ambiguous_... S20110C3::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*)(S20110C3*), ABISELECT(9136,6556), "S20110C1");
    /*is_ambiguous_... S20110C5::S20110C4 */ AMB_check_base_class_offset(lv, (S20110C4*)(S20110C5*)(S20110C3*), ABISELECT(9136,6556), "S20110C1");
    check_base_class_offset(lv, (S20110C4*)(S20110C6*), ABISELECT(9184,6588), "S20110C1");
    check_base_class_offset(lv, (S20110C6*)(S20110C5*)(S20110C3*), ABISELECT(9184,6588), "S20110C1");
    check_base_class_offset(lv, (S20110C4*)(S20110C9*), ABISELECT(9424,6744), "S20110C1");
    check_base_class_offset(lv, (S20110C9*)(S20110C5*)(S20110C3*), ABISELECT(9424,6744), "S20110C1");
    check_base_class_offset(lv, (S20110C10*)(S20110C5*)(S20110C3*), ABISELECT(8432,6032), "S20110C1");
    check_base_class_offset(lv, (S20110C5*)(S20110C3*), ABISELECT(8432,6032), "S20110C1");
    check_base_class_offset(lv, (S19942C12_nt*)(S20110C3*), ABISELECT(9568,6852), "S20110C1");
    /*is_ambiguous_... S20110C3::S20110C10 */ AMB_check_base_class_offset(lv, (S20110C10*)(S20110C3*), ABISELECT(8848,6352), "S20110C1");
    check_base_class_offset(lv, (S20110C3*), ABISELECT(8432,6032), "S20110C1");
    /*is_ambiguous_... S20110C1::S20110C10 */ AMB_check_base_class_offset(lv, (S20110C10*), 0, "S20110C1");
    check_field_offset(lv, s20110c1f0, ABISELECT(224,164), "S20110C1.s20110c1f0");
    check_field_offset(lv, s20110c1f1, ABISELECT(226,166), "S20110C1.s20110c1f1");
    check_field_offset(lv, s20110c1f2, ABISELECT(232,168), "S20110C1.s20110c1f2");
    check_field_offset(lv, s20110c1f3, ABISELECT(240,172), "S20110C1.s20110c1f3");
    check_field_offset(lv, s20110c1f4, ABISELECT(248,176), "S20110C1.s20110c1f4");
    check_field_offset(lv, s20110c1f5, ABISELECT(252,180), "S20110C1.s20110c1f5");
    check_field_offset(lv, s20110c1f6, ABISELECT(256,184), "S20110C1.s20110c1f6");
    check_field_offset(lv, s20110c1f7, ABISELECT(264,192), "S20110C1.s20110c1f7");
    check_field_offset(lv, s20110c1f8, ABISELECT(268,196), "S20110C1.s20110c1f8");
    test_class_info(&lv, &cd_S20110C1);
    dp->~S20110C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20110C1(Test_S20110C1, "S20110C1", ABISELECT(9584,6856));

#else // __cplusplus

extern void _ZN8S20110C1C1Ev();
extern void _ZN8S20110C1D2Ev();
Name_Map name_map_S20110C1[] = {
  NSPAIR(_ZN8S20110C1C1Ev),
  NSPAIR(_ZN8S20110C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20110C2;
extern VTBL_ENTRY _ZTI8S20110C2[];
extern  VTBL_ENTRY _ZTV8S20110C2[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C6;
extern VTBL_ENTRY _ZTI8S20110C6[];
extern  VTBL_ENTRY _ZTV8S20110C6[];
extern Class_Descriptor cd_S20110C4;
extern VTBL_ENTRY _ZTI8S20110C4[];
extern  VTBL_ENTRY _ZTV8S20110C4[];
extern Class_Descriptor cd_S20110C9;
extern VTBL_ENTRY _ZTI8S20110C9[];
extern  VTBL_ENTRY _ZTV8S20110C9[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
extern Class_Descriptor cd_S20110C5;
extern VTBL_ENTRY _ZTI8S20110C5[];
extern  VTBL_ENTRY _ZTV8S20110C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C5[];
extern Class_Descriptor cd_S19942C12_nt;
extern VTBL_ENTRY _ZTI12S19942C12_nt[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
extern Class_Descriptor cd_S20110C3;
extern VTBL_ENTRY _ZTI8S20110C3[];
extern  VTBL_ENTRY _ZTV8S20110C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C3[];
extern Class_Descriptor cd_S20110C10;
extern VTBL_ENTRY _ZTI9S20110C10[];
extern  VTBL_ENTRY _ZTV9S20110C10[];
static Base_Class bases_S20110C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20110C2,    ABISELECT(272,200), //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_S19942C12_nt,    ABISELECT(221,161), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20110C4,    ABISELECT(9136,6556), //bcp->offset
    32, //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
    8, //immediately_derived
  0, 1},
  {&cd_S20110C4,    ABISELECT(9184,6588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20110C6,    ABISELECT(9184,6588), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20110C4,    ABISELECT(9424,6744), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //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_S20110C9,    ABISELECT(9424,6744), //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
    6, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20110C10,    ABISELECT(8432,6032), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20110C5,    ABISELECT(8432,6032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19942C12_nt,    ABISELECT(9568,6852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20110C10,    ABISELECT(8848,6352), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20110C3,    ABISELECT(8432,6032), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20110C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20110C1[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C1D1Ev();
extern void _ZN8S20110C1D0Ev();
extern void _ZN8S20110C12v1Ev();
extern void _ZN8S20110C12v2Ev();
extern void _ZN8S20110C22v3Ev();
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C32v9Ev();
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY vtc_S20110C1[] = {
  ABISELECT(9568,6852),
  ABISELECT(9424,6744),
  ABISELECT(9184,6588),
  ABISELECT(9136,6556),
  ABISELECT(8432,6032),
  ABISELECT(272,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20110C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20110C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20110C12v2Ev,
  0,
  ABISELECT(-272,-200),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C22v3Ev,
  0,
  0,
  0,
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  ABISELECT(-8432,-6032),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20110C32v9Ev,
  ABISELECT(-8848,-6352),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  0,
  ABISELECT(-9136,-6556),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  0,
  0,
  0,
  ABISELECT(-9184,-6588),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
  0,
  ABISELECT(-9424,-6744),
  (VTBL_ENTRY)&(_ZTI8S20110C1[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern VTBL_ENTRY _ZTV8S20110C1[];
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
extern void _ZN8S20110C32v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C3__8S20110C1[] = {
  ABISELECT(1136,820),
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
  (VTBL_ENTRY)&_ZN8S20110C32v9Ev,
};
extern void _ZN9S20110C102v7Ev();
extern void _ZN8S20110C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C58S20110C3__8S20110C1[] = {
  ABISELECT(992,712),
  ABISELECT(704,524),
  ABISELECT(752,556),
  0,
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN9S20110C102v7Ev,
  (VTBL_ENTRY)&_ZN8S20110C52v8Ev,
};
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C6__8S20110C58S20110C3__8S20110C1[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C4__A1__8S20110C58S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C48S20110C9__A2__8S20110C58S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C5[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C4__8S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-704,-524),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
extern void _ZN8S20110C42v4Ev();
extern void _ZN8S20110C62v5Ev();
extern void _ZN8S20110C62v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C6__8S20110C3__8S20110C1[] = {
  0,
  0,
  0,
  ABISELECT(-752,-556),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v5Ev,
  (VTBL_ENTRY)&_ZN8S20110C62v6Ev,
};
extern void _ZN8S20110C42v4Ev();
static  VTBL_ENTRY _tg__ZTV8S20110C48S20110C9__A2__8S20110C3__8S20110C1[] = {
  0,
  ABISELECT(-992,-712),
  (VTBL_ENTRY)&(_ZTI8S20110C3[0]),
  (VTBL_ENTRY)&_ZN8S20110C42v4Ev,
};
static  VTT_ENTRY vtt_S20110C1[] = {
  {&(_ZTV8S20110C1[8]),  8,48},
  {&(_ZTV8S20110C1[16]),  16,48},
  {&(_ZTV8S20110C1[26]),  26,48},
  {&(_ZTV8S20110C1[35]),  35,48},
  {&(_ZTV8S20110C1[41]),  41,48},
  {&(_ZTV8S20110C1[47]),  47,48},
  {&(_ZTV8S20110C1[31]),  31,48},
  {&(_tg__ZTV8S20110C3__8S20110C1[6]),  6,9},
  {&(_tg__ZTV8S20110C58S20110C3__8S20110C1[5]),  5,7},
  {&(_tg__ZTV8S20110C6__8S20110C58S20110C3__8S20110C1[5]),  5,8},
  {&(_tg__ZTV8S20110C4__A1__8S20110C58S20110C3__8S20110C1[3]),  3,4},
  {&(_tg__ZTV8S20110C48S20110C9__A2__8S20110C58S20110C3__8S20110C1[3]),  3,4},
  {&(_tg__ZTV8S20110C4__8S20110C3__8S20110C1[3]),  3,4},
  {&(_tg__ZTV8S20110C6__8S20110C3__8S20110C1[5]),  5,8},
  {&(_tg__ZTV8S20110C48S20110C9__A2__8S20110C3__8S20110C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20110C1[];
extern  VTBL_ENTRY _ZTV8S20110C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20110C1[];
Class_Descriptor cd_S20110C1 = {  "S20110C1", // class name
  bases_S20110C1, 13,
  &(vtc_S20110C1[0]), // expected_vtbl_contents
  &(vtt_S20110C1[0]), // expected_vtt_contents
  ABISELECT(9584,6856), // object size
  NSPAIRA(_ZTI8S20110C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20110C1),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20110C1),15, //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  S3005C3_nt  {
  __tsi64 s3005c3f0;
  virtual void  v10(); // _ZN10S3005C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3005C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3005C3_nt3v12Ev
  ~S3005C3_nt(); // tgen
  S3005C3_nt(); // tgen
};
//SIG(-1 S3005C3_nt) C1{ v1 v2 v3 FL}


void  S3005C3_nt ::v10(){vfunc_called(this, "_ZN10S3005C3_nt3v10Ev");}
void  S3005C3_nt ::v11(){vfunc_called(this, "_ZN10S3005C3_nt3v11Ev");}
void  S3005C3_nt ::v12(){vfunc_called(this, "_ZN10S3005C3_nt3v12Ev");}
S3005C3_nt ::~S3005C3_nt(){ note_dtor("S3005C3_nt", this);} // tgen
S3005C3_nt ::S3005C3_nt(){ note_ctor("S3005C3_nt", this);} // tgen

//skip512 S3005C3_nt

#else // __cplusplus

extern void _ZN10S3005C3_ntC1Ev();
extern void _ZN10S3005C3_ntD1Ev();
Name_Map name_map_S3005C3_nt[] = {
  NSPAIR(_ZN10S3005C3_ntC1Ev),
  NSPAIR(_ZN10S3005C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
static  VTBL_ENTRY vtc_S3005C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3005C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
VTBL_ENTRY *P__ZTI10S3005C3_nt = _ZTI10S3005C3_nt; 
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
Class_Descriptor cd_S3005C3_nt = {  "S3005C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3005C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S3005C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3005C3_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  S3005C4  : S3005C3_nt {
  __tsi64 s3005c4f0;
  virtual void  v13(); // _ZN7S3005C43v13Ev
  virtual void  v14(); // _ZN7S3005C43v14Ev
  virtual void  v15(); // _ZN7S3005C43v15Ev
  virtual void  v16(); // _ZN7S3005C43v16Ev
  virtual void  v17(); // _ZN7S3005C43v17Ev
  ~S3005C4(); // tgen
  S3005C4(); // tgen
};
//SIG(-1 S3005C4) C1{ BC2{ v6 v7 v8 FL} v1 v2 v3 v4 v5 FL}


void  S3005C4 ::v13(){vfunc_called(this, "_ZN7S3005C43v13Ev");}
void  S3005C4 ::v14(){vfunc_called(this, "_ZN7S3005C43v14Ev");}
void  S3005C4 ::v15(){vfunc_called(this, "_ZN7S3005C43v15Ev");}
void  S3005C4 ::v16(){vfunc_called(this, "_ZN7S3005C43v16Ev");}
void  S3005C4 ::v17(){vfunc_called(this, "_ZN7S3005C43v17Ev");}
S3005C4 ::~S3005C4(){ note_dtor("S3005C4", this);} // tgen
S3005C4 ::S3005C4(){ note_ctor("S3005C4", this);} // tgen

static void Test_S3005C4()
{
  extern Class_Descriptor cd_S3005C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3005C4, buf);
    S3005C4 *dp, &lv = *(dp=new (buf) S3005C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S3005C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C4)");
    check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C4");
    check_field_offset(lv, s3005c4f0, ABISELECT(16,12), "S3005C4.s3005c4f0");
    test_class_info(&lv, &cd_S3005C4);
    dp->~S3005C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C4(Test_S3005C4, "S3005C4", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S3005C4C1Ev();
extern void _ZN7S3005C4D1Ev();
Name_Map name_map_S3005C4[] = {
  NSPAIR(_ZN7S3005C4C1Ev),
  NSPAIR(_ZN7S3005C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
static Base_Class bases_S3005C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C4[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY vtc_S3005C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C4[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
Class_Descriptor cd_S3005C4 = {  "S3005C4", // class name
  bases_S3005C4, 1,
  &(vtc_S3005C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S3005C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3005C4),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  S3005C5  {
  short s3005c5f0;
  int s3005c5f1;
  virtual void  v18(); // _ZN7S3005C53v18Ev
  virtual void  v19(); // _ZN7S3005C53v19Ev
  virtual void  v20(); // _ZN7S3005C53v20Ev
  ~S3005C5(); // tgen
  S3005C5(); // tgen
};
//SIG(-1 S3005C5) C1{ v1 v2 v3 Fs Fi}


void  S3005C5 ::v18(){vfunc_called(this, "_ZN7S3005C53v18Ev");}
void  S3005C5 ::v19(){vfunc_called(this, "_ZN7S3005C53v19Ev");}
void  S3005C5 ::v20(){vfunc_called(this, "_ZN7S3005C53v20Ev");}
S3005C5 ::~S3005C5(){ note_dtor("S3005C5", this);} // tgen
S3005C5 ::S3005C5(){ note_ctor("S3005C5", this);} // tgen

static void Test_S3005C5()
{
  extern Class_Descriptor cd_S3005C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3005C5, buf);
    S3005C5 *dp, &lv = *(dp=new (buf) S3005C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3005C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C5)");
    check_field_offset(lv, s3005c5f0, ABISELECT(8,4), "S3005C5.s3005c5f0");
    check_field_offset(lv, s3005c5f1, ABISELECT(12,8), "S3005C5.s3005c5f1");
    test_class_info(&lv, &cd_S3005C5);
    dp->~S3005C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C5(Test_S3005C5, "S3005C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3005C5C1Ev();
extern void _ZN7S3005C5D1Ev();
Name_Map name_map_S3005C5[] = {
  NSPAIR(_ZN7S3005C5C1Ev),
  NSPAIR(_ZN7S3005C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3005C5[];
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
static  VTBL_ENTRY vtc_S3005C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C5[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
};
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
Class_Descriptor cd_S3005C5 = {  "S3005C5", // class name
  0,0,//no base classes
  &(vtc_S3005C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3005C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3005C5),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  S3005C2  : S3005C3_nt , S3005C4 , virtual S3005C5 {
  virtual  ~S3005C2(); // _ZN7S3005C2D2Ev
  virtual void  v21(); // _ZN7S3005C23v21Ev
  virtual void  v22(); // _ZN7S3005C23v22Ev
  virtual void  v23(); // _ZN7S3005C23v23Ev
  virtual void  v24(); // _ZN7S3005C23v24Ev
  virtual void  v25(); // _ZN7S3005C23v25Ev
  S3005C2(); // tgen
};
//SIG(-1 S3005C2) C1{ BC2{ v6 v7 v8 FL} BC3{ BC2 v9 v10 v11 v12 v13 FL} VBC4{ v14 v15 v16 Fs Fi} vd v1 v2 v3 v4 v5}


 S3005C2 ::~S3005C2(){ note_dtor("S3005C2", this);}
void  S3005C2 ::v21(){vfunc_called(this, "_ZN7S3005C23v21Ev");}
void  S3005C2 ::v22(){vfunc_called(this, "_ZN7S3005C23v22Ev");}
void  S3005C2 ::v23(){vfunc_called(this, "_ZN7S3005C23v23Ev");}
void  S3005C2 ::v24(){vfunc_called(this, "_ZN7S3005C23v24Ev");}
void  S3005C2 ::v25(){vfunc_called(this, "_ZN7S3005C23v25Ev");}
S3005C2 ::S3005C2(){ note_ctor("S3005C2", this);} // tgen

static void Test_S3005C2()
{
  extern Class_Descriptor cd_S3005C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S3005C2, buf);
    S3005C2 *dp, &lv = *(dp=new (buf) S3005C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S3005C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C2)");
    /*is_ambiguous_... S3005C2::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C2");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(16,12), "S3005C2");
    check_base_class_offset(lv, (S3005C4*), ABISELECT(16,12), "S3005C2");
    check_base_class_offset(lv, (S3005C5*), ABISELECT(40,32), "S3005C2");
    test_class_info(&lv, &cd_S3005C2);
    dp->~S3005C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C2(Test_S3005C2, "S3005C2", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN7S3005C2C1Ev();
extern void _ZN7S3005C2D2Ev();
Name_Map name_map_S3005C2[] = {
  NSPAIR(_ZN7S3005C2C1Ev),
  NSPAIR(_ZN7S3005C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C5;
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
static Base_Class bases_S3005C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3005C3_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
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(16,12), //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},
  {&cd_S3005C5,    ABISELECT(40,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C2[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C2D1Ev();
extern void _ZN7S3005C2D0Ev();
extern void _ZN7S3005C23v21Ev();
extern void _ZN7S3005C23v22Ev();
extern void _ZN7S3005C23v23Ev();
extern void _ZN7S3005C23v24Ev();
extern void _ZN7S3005C23v25Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
static  VTBL_ENTRY vtc_S3005C2[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v21Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v25Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
};
extern VTBL_ENTRY _ZTV7S3005C2[];
static  VTT_ENTRY vtt_S3005C2[] = {
  {&(_ZTV7S3005C2[3]),  3,31},
  {&(_ZTV7S3005C2[28]),  28,31},
};
extern VTBL_ENTRY _ZTI7S3005C2[];
extern  VTBL_ENTRY _ZTV7S3005C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C2[];
Class_Descriptor cd_S3005C2 = {  "S3005C2", // class name
  bases_S3005C2, 4,
  &(vtc_S3005C2[0]), // expected_vtbl_contents
  &(vtt_S3005C2[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI7S3005C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3005C2),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C2),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C6  : S3005C4 {
  int s3005c6f0[2];
  __tsi64 s3005c6f1[8];
  virtual void  v26(); // _ZN7S3005C63v26Ev
  virtual void  v27(); // _ZN7S3005C63v27Ev
  virtual void  v28(); // _ZN7S3005C63v28Ev
  virtual void  v29(); // _ZN7S3005C63v29Ev
  virtual void  v30(); // _ZN7S3005C63v30Ev
  ~S3005C6(); // tgen
  S3005C6(); // tgen
};
//SIG(-1 S3005C6) C1{ BC2{ BC3{ v6 v7 v8 FL} v9 v10 v11 v12 v13 FL} v1 v2 v3 v4 v5 Fi[2] FL[8]}


void  S3005C6 ::v26(){vfunc_called(this, "_ZN7S3005C63v26Ev");}
void  S3005C6 ::v27(){vfunc_called(this, "_ZN7S3005C63v27Ev");}
void  S3005C6 ::v28(){vfunc_called(this, "_ZN7S3005C63v28Ev");}
void  S3005C6 ::v29(){vfunc_called(this, "_ZN7S3005C63v29Ev");}
void  S3005C6 ::v30(){vfunc_called(this, "_ZN7S3005C63v30Ev");}
S3005C6 ::~S3005C6(){ note_dtor("S3005C6", this);} // tgen
S3005C6 ::S3005C6(){ note_ctor("S3005C6", this);} // tgen

static void Test_S3005C6()
{
  extern Class_Descriptor cd_S3005C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,24)];
    init_test(&cd_S3005C6, buf);
    S3005C6 *dp, &lv = *(dp=new (buf) S3005C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,92), "sizeof(S3005C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C6)");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), 0, "S3005C6");
    check_base_class_offset(lv, (S3005C4*), 0, "S3005C6");
    check_field_offset(lv, s3005c6f0, ABISELECT(24,20), "S3005C6.s3005c6f0");
    check_field_offset(lv, s3005c6f1, ABISELECT(32,28), "S3005C6.s3005c6f1");
    test_class_info(&lv, &cd_S3005C6);
    dp->~S3005C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C6(Test_S3005C6, "S3005C6", ABISELECT(96,92));

#else // __cplusplus

extern void _ZN7S3005C6C1Ev();
extern void _ZN7S3005C6D1Ev();
Name_Map name_map_S3005C6[] = {
  NSPAIR(_ZN7S3005C6C1Ev),
  NSPAIR(_ZN7S3005C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
static Base_Class bases_S3005C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3005C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3005C6[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
static  VTBL_ENTRY vtc_S3005C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C6[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
};
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
Class_Descriptor cd_S3005C6 = {  "S3005C6", // class name
  bases_S3005C6, 2,
  &(vtc_S3005C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,92), // object size
  NSPAIRA(_ZTI7S3005C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3005C6),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C9  {
  long double s3005c9f0[6];
  virtual  ~S3005C9(); // _ZN7S3005C9D1Ev
  virtual void  v31(); // _ZN7S3005C93v31Ev
  virtual void  v32(); // _ZN7S3005C93v32Ev
  virtual void  v33(); // _ZN7S3005C93v33Ev
  virtual void  v34(); // _ZN7S3005C93v34Ev
  virtual void  v35(); // _ZN7S3005C93v35Ev
  virtual void  v36(); // _ZN7S3005C93v36Ev
  S3005C9(); // tgen
};
//SIG(-1 S3005C9) C1{ vd v1 v2 v3 v4 v5 v6 FD[6]}


 S3005C9 ::~S3005C9(){ note_dtor("S3005C9", this);}
void  S3005C9 ::v31(){vfunc_called(this, "_ZN7S3005C93v31Ev");}
void  S3005C9 ::v32(){vfunc_called(this, "_ZN7S3005C93v32Ev");}
void  S3005C9 ::v33(){vfunc_called(this, "_ZN7S3005C93v33Ev");}
void  S3005C9 ::v34(){vfunc_called(this, "_ZN7S3005C93v34Ev");}
void  S3005C9 ::v35(){vfunc_called(this, "_ZN7S3005C93v35Ev");}
void  S3005C9 ::v36(){vfunc_called(this, "_ZN7S3005C93v36Ev");}
S3005C9 ::S3005C9(){ note_ctor("S3005C9", this);} // tgen

static void Test_S3005C9()
{
  extern Class_Descriptor cd_S3005C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,20)];
    init_test(&cd_S3005C9, buf);
    S3005C9 *dp, &lv = *(dp=new (buf) S3005C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S3005C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C9)");
    check_field_offset(lv, s3005c9f0, ABISELECT(16,4), "S3005C9.s3005c9f0");
    test_class_info(&lv, &cd_S3005C9);
    dp->~S3005C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C9(Test_S3005C9, "S3005C9", ABISELECT(112,76));

#else // __cplusplus

extern void _ZN7S3005C9C1Ev();
extern void _ZN7S3005C9D1Ev();
Name_Map name_map_S3005C9[] = {
  NSPAIR(_ZN7S3005C9C1Ev),
  NSPAIR(_ZN7S3005C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3005C9[];
extern void _ZN7S3005C9D1Ev();
extern void _ZN7S3005C9D0Ev();
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C9[0]),
  (VTBL_ENTRY)&_ZN7S3005C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C9D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
Class_Descriptor cd_S3005C9 = {  "S3005C9", // class name
  0,0,//no base classes
  &(vtc_S3005C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,76), // object size
  NSPAIRA(_ZTI7S3005C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3005C9),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  S3005C10  {
  long double s3005c10f0[5];
  virtual void  v37(); // _ZN8S3005C103v37Ev
  virtual void  v38(); // _ZN8S3005C103v38Ev
  virtual void  v39(); // _ZN8S3005C103v39Ev
  virtual void  v40(); // _ZN8S3005C103v40Ev
  virtual void  v41(); // _ZN8S3005C103v41Ev
  ~S3005C10(); // tgen
  S3005C10(); // tgen
};
//SIG(-1 S3005C10) C1{ v1 v2 v3 v4 v5 FD[5]}


void  S3005C10 ::v37(){vfunc_called(this, "_ZN8S3005C103v37Ev");}
void  S3005C10 ::v38(){vfunc_called(this, "_ZN8S3005C103v38Ev");}
void  S3005C10 ::v39(){vfunc_called(this, "_ZN8S3005C103v39Ev");}
void  S3005C10 ::v40(){vfunc_called(this, "_ZN8S3005C103v40Ev");}
void  S3005C10 ::v41(){vfunc_called(this, "_ZN8S3005C103v41Ev");}
S3005C10 ::~S3005C10(){ note_dtor("S3005C10", this);} // tgen
S3005C10 ::S3005C10(){ note_ctor("S3005C10", this);} // tgen

static void Test_S3005C10()
{
  extern Class_Descriptor cd_S3005C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,17)];
    init_test(&cd_S3005C10, buf);
    S3005C10 *dp, &lv = *(dp=new (buf) S3005C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S3005C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C10)");
    check_field_offset(lv, s3005c10f0, ABISELECT(16,4), "S3005C10.s3005c10f0");
    test_class_info(&lv, &cd_S3005C10);
    dp->~S3005C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C10(Test_S3005C10, "S3005C10", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S3005C10C1Ev();
extern void _ZN8S3005C10D1Ev();
Name_Map name_map_S3005C10[] = {
  NSPAIR(_ZN8S3005C10C1Ev),
  NSPAIR(_ZN8S3005C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3005C10[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
static  VTBL_ENTRY vtc_S3005C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C10[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
};
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
Class_Descriptor cd_S3005C10 = {  "S3005C10", // class name
  0,0,//no base classes
  &(vtc_S3005C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S3005C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3005C10),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  S3005C8  : virtual S3005C9 , S3005C10 , S3005C6 {
  short s3005c8f0[6];
  int s3005c8f1;
  virtual  ~S3005C8(); // _ZN7S3005C8D2Ev
  virtual void  v42(); // _ZN7S3005C83v42Ev
  virtual void  v43(); // _ZN7S3005C83v43Ev
  virtual void  v44(); // _ZN7S3005C83v44Ev
  virtual void  v45(); // _ZN7S3005C83v45Ev
  virtual void  v46(); // _ZN7S3005C83v46Ev
  virtual void  v47(); // _ZN7S3005C83v47Ev
  virtual void  v48(); // _ZN7S3005C83v48Ev
  virtual void  v49(); // _ZN7S3005C83v49Ev
  S3005C8(); // tgen
};
//SIG(-1 S3005C8) C1{ VBC2{ vd v9 v10 v11 v12 v13 v14 FD[6]} BC3{ v15 v16 v17 v18 v19 FD[5]} BC4{ BC5{ BC6{ v20 v21 v22 FL} v23 v24 v25 v26 v27 FL} v28 v29 v30 v31 v32 Fi[2] FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fs[6] Fi}


 S3005C8 ::~S3005C8(){ note_dtor("S3005C8", this);}
void  S3005C8 ::v42(){vfunc_called(this, "_ZN7S3005C83v42Ev");}
void  S3005C8 ::v43(){vfunc_called(this, "_ZN7S3005C83v43Ev");}
void  S3005C8 ::v44(){vfunc_called(this, "_ZN7S3005C83v44Ev");}
void  S3005C8 ::v45(){vfunc_called(this, "_ZN7S3005C83v45Ev");}
void  S3005C8 ::v46(){vfunc_called(this, "_ZN7S3005C83v46Ev");}
void  S3005C8 ::v47(){vfunc_called(this, "_ZN7S3005C83v47Ev");}
void  S3005C8 ::v48(){vfunc_called(this, "_ZN7S3005C83v48Ev");}
void  S3005C8 ::v49(){vfunc_called(this, "_ZN7S3005C83v49Ev");}
S3005C8 ::S3005C8(){ note_ctor("S3005C8", this);} // tgen

static void Test_S3005C8()
{
  extern Class_Descriptor cd_S3005C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,63)];
    init_test(&cd_S3005C8, buf);
    S3005C8 *dp, &lv = *(dp=new (buf) S3005C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,248), "sizeof(S3005C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C8)");
    check_base_class_offset(lv, (S3005C9*), ABISELECT(208,172), "S3005C8");
    check_base_class_offset(lv, (S3005C10*), 0, "S3005C8");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*), ABISELECT(96,64), "S3005C8");
    check_base_class_offset(lv, (S3005C4*)(S3005C6*), ABISELECT(96,64), "S3005C8");
    check_base_class_offset(lv, (S3005C6*), ABISELECT(96,64), "S3005C8");
    check_field_offset(lv, s3005c8f0, ABISELECT(192,156), "S3005C8.s3005c8f0");
    check_field_offset(lv, s3005c8f1, ABISELECT(204,168), "S3005C8.s3005c8f1");
    test_class_info(&lv, &cd_S3005C8);
    dp->~S3005C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C8(Test_S3005C8, "S3005C8", ABISELECT(320,248));

#else // __cplusplus

extern void _ZN7S3005C8C1Ev();
extern void _ZN7S3005C8D2Ev();
Name_Map name_map_S3005C8[] = {
  NSPAIR(_ZN7S3005C8C1Ev),
  NSPAIR(_ZN7S3005C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
static Base_Class bases_S3005C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C9,    ABISELECT(208,172), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3005C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3005C3_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(96,64), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C8[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C8D1Ev();
extern void _ZN7S3005C8D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C8[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTV7S3005C8[];
static  VTT_ENTRY vtt_S3005C8[] = {
  {&(_ZTV7S3005C8[3]),  3,50},
  {&(_ZTV7S3005C8[42]),  42,50},
};
extern VTBL_ENTRY _ZTI7S3005C8[];
extern  VTBL_ENTRY _ZTV7S3005C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C8[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C8 = {  "S3005C8", // class name
  bases_S3005C8, 5,
  &(vtc_S3005C8[0]), // expected_vtbl_contents
  &(vtt_S3005C8[0]), // expected_vtt_contents
  ABISELECT(320,248), // object size
  NSPAIRA(_ZTI7S3005C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3005C8),50, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C8),2, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C7  : S3005C8 {
  virtual  ~S3005C7(); // _ZN7S3005C7D2Ev
  virtual void  v50(); // _ZN7S3005C73v50Ev
  S3005C7(); // tgen
};
//SIG(-1 S3005C7) C1{ BC2{ VBC3{ vd v2 v3 v4 v5 v6 v7 FD[6]} BC4{ v8 v9 v10 v11 v12 FD[5]} BC5{ BC6{ BC7{ v13 v14 v15 FL} v16 v17 v18 v19 v20 FL} v21 v22 v23 v24 v25 Fi[2] FL[8]} vd v26 v27 v28 v29 v30 v31 v32 v33 Fs[6] Fi} vd v1}


 S3005C7 ::~S3005C7(){ note_dtor("S3005C7", this);}
void  S3005C7 ::v50(){vfunc_called(this, "_ZN7S3005C73v50Ev");}
S3005C7 ::S3005C7(){ note_ctor("S3005C7", this);} // tgen

static void Test_S3005C7()
{
  extern Class_Descriptor cd_S3005C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,63)];
    init_test(&cd_S3005C7, buf);
    S3005C7 *dp, &lv = *(dp=new (buf) S3005C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,248), "sizeof(S3005C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C7)");
    check_base_class_offset(lv, (S3005C9*)(S3005C8*), ABISELECT(208,172), "S3005C7");
    check_base_class_offset(lv, (S3005C10*)(S3005C8*), 0, "S3005C7");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*)(S3005C8*), ABISELECT(96,64), "S3005C7");
    check_base_class_offset(lv, (S3005C4*)(S3005C6*)(S3005C8*), ABISELECT(96,64), "S3005C7");
    check_base_class_offset(lv, (S3005C6*)(S3005C8*), ABISELECT(96,64), "S3005C7");
    check_base_class_offset(lv, (S3005C8*), 0, "S3005C7");
    test_class_info(&lv, &cd_S3005C7);
    dp->~S3005C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C7(Test_S3005C7, "S3005C7", ABISELECT(320,248));

#else // __cplusplus

extern void _ZN7S3005C7C1Ev();
extern void _ZN7S3005C7D2Ev();
Name_Map name_map_S3005C7[] = {
  NSPAIR(_ZN7S3005C7C1Ev),
  NSPAIR(_ZN7S3005C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
extern Class_Descriptor cd_S3005C8;
extern VTBL_ENTRY _ZTI7S3005C8[];
extern  VTBL_ENTRY _ZTV7S3005C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C8[];
static Base_Class bases_S3005C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C9,    ABISELECT(208,172), //bcp->offset
    34, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3005C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3005C3_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(96,64), //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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C7[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C7D1Ev();
extern void _ZN7S3005C7D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN7S3005C73v50Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S3005C7D1Ev,_ZThn172_N7S3005C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S3005C7D0Ev,_ZThn172_N7S3005C7D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C7[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  (VTBL_ENTRY)&_ZN7S3005C73v50Ev,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTV7S3005C7[];
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C8D1Ev();
extern void _ZN7S3005C8D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C8__7S3005C7[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__7S3005C8__7S3005C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
static  VTT_ENTRY vtt_S3005C7[] = {
  {&(_ZTV7S3005C7[3]),  3,51},
  {&(_tg__ZTV7S3005C8__7S3005C7[3]),  3,18},
  {&(_tg__ZTV7S3005C9__7S3005C8__7S3005C7[9]),  9,17},
  {&(_ZTV7S3005C7[43]),  43,51},
};
extern VTBL_ENTRY _ZTI7S3005C7[];
extern  VTBL_ENTRY _ZTV7S3005C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C7[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D0Ev,_ZThn172_N7S3005C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C8D1Ev,_ZThn172_N7S3005C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C7D0Ev,_ZThn172_N7S3005C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S3005C7D1Ev,_ZThn172_N7S3005C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C7 = {  "S3005C7", // class name
  bases_S3005C7, 6,
  &(vtc_S3005C7[0]), // expected_vtbl_contents
  &(vtt_S3005C7[0]), // expected_vtt_contents
  ABISELECT(320,248), // object size
  NSPAIRA(_ZTI7S3005C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3005C7),51, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C7),4, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C13  : S3005C3_nt {
  virtual void  v51(); // _ZN8S3005C133v51Ev
  virtual void  v52(); // _ZN8S3005C133v52Ev
  virtual void  v53(); // _ZN8S3005C133v53Ev
  virtual void  v54(); // _ZN8S3005C133v54Ev
  virtual void  v55(); // _ZN8S3005C133v55Ev
  virtual void  v56(); // _ZN8S3005C133v56Ev
  ~S3005C13(); // tgen
  S3005C13(); // tgen
};
//SIG(-1 S3005C13) C1{ BC2{ v7 v8 v9 FL} v1 v2 v3 v4 v5 v6}


void  S3005C13 ::v51(){vfunc_called(this, "_ZN8S3005C133v51Ev");}
void  S3005C13 ::v52(){vfunc_called(this, "_ZN8S3005C133v52Ev");}
void  S3005C13 ::v53(){vfunc_called(this, "_ZN8S3005C133v53Ev");}
void  S3005C13 ::v54(){vfunc_called(this, "_ZN8S3005C133v54Ev");}
void  S3005C13 ::v55(){vfunc_called(this, "_ZN8S3005C133v55Ev");}
void  S3005C13 ::v56(){vfunc_called(this, "_ZN8S3005C133v56Ev");}
S3005C13 ::~S3005C13(){ note_dtor("S3005C13", this);} // tgen
S3005C13 ::S3005C13(){ note_ctor("S3005C13", this);} // tgen

static void Test_S3005C13()
{
  extern Class_Descriptor cd_S3005C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3005C13, buf);
    S3005C13 *dp, &lv = *(dp=new (buf) S3005C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3005C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3005C13)");
    check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C13");
    test_class_info(&lv, &cd_S3005C13);
    dp->~S3005C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C13(Test_S3005C13, "S3005C13", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S3005C13C1Ev();
extern void _ZN8S3005C13D1Ev();
Name_Map name_map_S3005C13[] = {
  NSPAIR(_ZN8S3005C13C1Ev),
  NSPAIR(_ZN8S3005C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
static Base_Class bases_S3005C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3005C13[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY vtc_S3005C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C13[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
Class_Descriptor cd_S3005C13 = {  "S3005C13", // class name
  bases_S3005C13, 1,
  &(vtc_S3005C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S3005C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3005C13),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  S3005C12  : S3005C3_nt , S3005C10 , virtual S3005C13 , virtual S3005C4 {
  virtual void  v57(); // _ZN8S3005C123v57Ev
  virtual void  v58(); // _ZN8S3005C123v58Ev
  ~S3005C12(); // tgen
  S3005C12(); // tgen
};
//SIG(-1 S3005C12) C1{ BC2{ v3 v4 v5 FL} BC3{ v6 v7 v8 v9 v10 FD[5]} VBC4{ BC2 v11 v12 v13 v14 v15 v16} VBC5{ BC2 v17 v18 v19 v20 v21 FL} v1 v2}


void  S3005C12 ::v57(){vfunc_called(this, "_ZN8S3005C123v57Ev");}
void  S3005C12 ::v58(){vfunc_called(this, "_ZN8S3005C123v58Ev");}
S3005C12 ::~S3005C12(){ note_dtor("S3005C12", this);} // tgen
S3005C12 ::S3005C12(){ note_ctor("S3005C12", this);} // tgen

static void Test_S3005C12()
{
  extern Class_Descriptor cd_S3005C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S3005C12, buf);
    S3005C12 *dp, &lv = *(dp=new (buf) S3005C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S3005C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C12)");
    /*is_ambiguous_... S3005C12::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*), 0, "S3005C12");
    check_base_class_offset(lv, (S3005C10*), ABISELECT(16,12), "S3005C12");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C13*), ABISELECT(112,76), "S3005C12");
    check_base_class_offset(lv, (S3005C13*), ABISELECT(112,76), "S3005C12");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(128,88), "S3005C12");
    check_base_class_offset(lv, (S3005C4*), ABISELECT(128,88), "S3005C12");
    test_class_info(&lv, &cd_S3005C12);
    dp->~S3005C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C12(Test_S3005C12, "S3005C12", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN8S3005C12C1Ev();
extern void _ZN8S3005C12D1Ev();
Name_Map name_map_S3005C12[] = {
  NSPAIR(_ZN8S3005C12C1Ev),
  NSPAIR(_ZN8S3005C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C13;
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
static Base_Class bases_S3005C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3005C10,    ABISELECT(16,12), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3005C13,    ABISELECT(112,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3005C3_nt,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(128,88), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3005C12[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY vtc_S3005C12[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern VTBL_ENTRY _ZTV8S3005C12[];
static  VTT_ENTRY vtt_S3005C12[] = {
  {&(_ZTV8S3005C12[4]),  4,54},
  {&(_ZTV8S3005C12[27]),  27,54},
  {&(_ZTV8S3005C12[46]),  46,54},
};
extern VTBL_ENTRY _ZTI8S3005C12[];
extern  VTBL_ENTRY _ZTV8S3005C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C12[];
Class_Descriptor cd_S3005C12 = {  "S3005C12", // class name
  bases_S3005C12, 6,
  &(vtc_S3005C12[0]), // expected_vtbl_contents
  &(vtt_S3005C12[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI8S3005C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3005C12),54, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3005C12),3, //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  S3005C11  : virtual S3005C12 , virtual S3005C9 {
  short s3005c11f0[2];
  long double s3005c11f1;
  ::S3005C13 s3005c11f2;
  virtual  ~S3005C11(); // _ZN8S3005C11D2Ev
  virtual void  v59(); // _ZN8S3005C113v59Ev
  virtual void  v60(); // _ZN8S3005C113v60Ev
  virtual void  v61(); // _ZN8S3005C113v61Ev
  virtual void  v62(); // _ZN8S3005C113v62Ev
  virtual void  v63(); // _ZN8S3005C113v63Ev
  virtual void  v64(); // _ZN8S3005C113v64Ev
  S3005C11(); // tgen
};
//SIG(-1 S3005C11) C1{ VBC2{ BC3{ v7 v8 v9 FL} BC4{ v10 v11 v12 v13 v14 FD[5]} VBC5{ BC3 v15 v16 v17 v18 v19 v20} VBC6{ BC3 v21 v22 v23 v24 v25 FL} v26 v27} VBC7{ vd v28 v29 v30 v31 v32 v33 FD[6]} vd v1 v2 v3 v4 v5 v6 Fs[2] FD FC5}


 S3005C11 ::~S3005C11(){ note_dtor("S3005C11", this);}
void  S3005C11 ::v59(){vfunc_called(this, "_ZN8S3005C113v59Ev");}
void  S3005C11 ::v60(){vfunc_called(this, "_ZN8S3005C113v60Ev");}
void  S3005C11 ::v61(){vfunc_called(this, "_ZN8S3005C113v61Ev");}
void  S3005C11 ::v62(){vfunc_called(this, "_ZN8S3005C113v62Ev");}
void  S3005C11 ::v63(){vfunc_called(this, "_ZN8S3005C113v63Ev");}
void  S3005C11 ::v64(){vfunc_called(this, "_ZN8S3005C113v64Ev");}
S3005C11 ::S3005C11(){ note_ctor("S3005C11", this);} // tgen

static void Test_S3005C11()
{
  extern Class_Descriptor cd_S3005C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S3005C11, buf);
    S3005C11 *dp, &lv = *(dp=new (buf) S3005C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S3005C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C11)");
    /*is_ambiguous_... S3005C12::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C12*), ABISELECT(48,32), "S3005C11");
    check_base_class_offset(lv, (S3005C10*)(S3005C12*), ABISELECT(64,44), "S3005C11");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C13*), ABISELECT(160,108), "S3005C11");
    check_base_class_offset(lv, (S3005C13*)(S3005C12*), ABISELECT(160,108), "S3005C11");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(176,120), "S3005C11");
    check_base_class_offset(lv, (S3005C4*)(S3005C12*), ABISELECT(176,120), "S3005C11");
    check_base_class_offset(lv, (S3005C12*), ABISELECT(48,32), "S3005C11");
    check_base_class_offset(lv, (S3005C9*), ABISELECT(208,140), "S3005C11");
    check_field_offset(lv, s3005c11f0, ABISELECT(8,4), "S3005C11.s3005c11f0");
    check_field_offset(lv, s3005c11f1, ABISELECT(16,8), "S3005C11.s3005c11f1");
    check_field_offset(lv, s3005c11f2, ABISELECT(32,20), "S3005C11.s3005c11f2");
    test_class_info(&lv, &cd_S3005C11);
    dp->~S3005C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C11(Test_S3005C11, "S3005C11", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S3005C11C1Ev();
extern void _ZN8S3005C11D2Ev();
Name_Map name_map_S3005C11[] = {
  NSPAIR(_ZN8S3005C11C1Ev),
  NSPAIR(_ZN8S3005C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C13;
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C12;
extern VTBL_ENTRY _ZTI8S3005C12[];
extern  VTBL_ENTRY _ZTV8S3005C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C12[];
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
static Base_Class bases_S3005C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3005C10,    ABISELECT(64,44), //bcp->offset
    33, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(160,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
    3, //immediately_derived
  0, 0},
  {&cd_S3005C13,    ABISELECT(160,108), //bcp->offset
    40, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3005C3_nt,    ABISELECT(176,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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(176,120), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3005C12,    ABISELECT(48,32), //bcp->offset
    14, //bcp->virtual_function_table_offset
    14, //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_S3005C9,    ABISELECT(208,140), //bcp->offset
    78, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3005C11[];
extern void _ZN8S3005C11D1Ev();
extern void _ZN8S3005C11D0Ev();
extern void _ZN8S3005C113v59Ev();
extern void _ZN8S3005C113v60Ev();
extern void _ZN8S3005C113v61Ev();
extern void _ZN8S3005C113v62Ev();
extern void _ZN8S3005C113v63Ev();
extern void _ZN8S3005C113v64Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S3005C11D1Ev,_ZThn140_N8S3005C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S3005C11D0Ev,_ZThn140_N8S3005C11D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY vtc_S3005C11[] = {
  ABISELECT(208,140),
  ABISELECT(176,120),
  ABISELECT(160,108),
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3005C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v59Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v60Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v61Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v62Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v63Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v64Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(112,76),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-140),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern VTBL_ENTRY _ZTV8S3005C11[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C12__8S3005C11[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C13__8S3005C12__8S3005C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C4__8S3005C12__8S3005C11[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
static  VTT_ENTRY vtt_S3005C11[] = {
  {&(_ZTV8S3005C11[6]),  6,95},
  {&(_ZTV8S3005C11[28]),  28,95},
  {&(_ZTV8S3005C11[35]),  35,95},
  {&(_ZTV8S3005C11[51]),  51,95},
  {&(_ZTV8S3005C11[70]),  70,95},
  {&(_ZTV8S3005C11[87]),  87,95},
  {&(_tg__ZTV8S3005C12__8S3005C11[4]),  4,9},
  {&(_tg__ZTV8S3005C13__8S3005C12__8S3005C11[11]),  11,20},
  {&(_tg__ZTV7S3005C4__8S3005C12__8S3005C11[10]),  10,18},
};
extern VTBL_ENTRY _ZTI8S3005C11[];
extern  VTBL_ENTRY _ZTV8S3005C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C11[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3005C11D0Ev,_ZThn140_N8S3005C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S3005C11D1Ev,_ZThn140_N8S3005C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C11 = {  "S3005C11", // class name
  bases_S3005C11, 8,
  &(vtc_S3005C11[0]), // expected_vtbl_contents
  &(vtt_S3005C11[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S3005C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3005C11),95, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3005C11),9, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3005C1  : S3005C2 , S3005C6 , S3005C7 , S3005C11 , S3005C5 {
  long double s3005c1f0;
  virtual void  v1(); // _ZN7S3005C12v1Ev
  virtual void  v2(); // _ZN7S3005C12v2Ev
  virtual void  v3(); // _ZN7S3005C12v3Ev
  virtual void  v4(); // _ZN7S3005C12v4Ev
  virtual void  v5(); // _ZN7S3005C12v5Ev
  virtual void  v6(); // _ZN7S3005C12v6Ev
  virtual void  v7(); // _ZN7S3005C12v7Ev
  virtual void  v8(); // _ZN7S3005C12v8Ev
  virtual void  v9(); // _ZN7S3005C12v9Ev
  ~S3005C1(); // tgen
  S3005C1(); // tgen
};
//SIG(1 S3005C1) C1{ BC2{ BC3{ v10 v11 v12 FL} BC4{ BC3 v13 v14 v15 v16 v17 FL} VBC5{ v18 v19 v20 Fs Fi} vd v21 v22 v23 v24 v25} BC6{ BC4 v26 v27 v28 v29 v30 Fi[2] FL[8]} BC7{ BC8{ VBC9{ vd v31 v32 v33 v34 v35 v36 FD[6]} BC10{ v37 v38 v39 v40 v41 FD[5]} BC6 vd v42 v43 v44 v45 v46 v47 v48 v49 Fs[6] Fi} vd v50} BC11{ VBC12{ BC3 BC10 VBC13{ BC3 v51 v52 v53 v54 v55 v56} VBC4 v57 v58} VBC9 vd v59 v60 v61 v62 v63 v64 Fs[2] FD FC13} BC5 v1 v2 v3 v4 v5 v6 v7 v8 v9 FD}


void  S3005C1 ::v1(){vfunc_called(this, "_ZN7S3005C12v1Ev");}
void  S3005C1 ::v2(){vfunc_called(this, "_ZN7S3005C12v2Ev");}
void  S3005C1 ::v3(){vfunc_called(this, "_ZN7S3005C12v3Ev");}
void  S3005C1 ::v4(){vfunc_called(this, "_ZN7S3005C12v4Ev");}
void  S3005C1 ::v5(){vfunc_called(this, "_ZN7S3005C12v5Ev");}
void  S3005C1 ::v6(){vfunc_called(this, "_ZN7S3005C12v6Ev");}
void  S3005C1 ::v7(){vfunc_called(this, "_ZN7S3005C12v7Ev");}
void  S3005C1 ::v8(){vfunc_called(this, "_ZN7S3005C12v8Ev");}
void  S3005C1 ::v9(){vfunc_called(this, "_ZN7S3005C12v9Ev");}
S3005C1 ::~S3005C1(){ note_dtor("S3005C1", this);} // tgen
S3005C1 ::S3005C1(){ note_ctor("S3005C1", this);} // tgen

static void Test_S3005C1()
{
  extern Class_Descriptor cd_S3005C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(46,138)];
    init_test(&cd_S3005C1, buf);
    S3005C1 *dp, &lv = *(dp=new (buf) S3005C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(720,548), "sizeof(S3005C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3005C1)");
    /*is_ambiguous_... S3005C2::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C2*), 0, "S3005C1");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C2*), ABISELECT(16,12), "S3005C1");
    check_base_class_offset(lv, (S3005C4*)(S3005C2*), ABISELECT(16,12), "S3005C1");
    check_base_class_offset(lv, (S3005C5*)(S3005C2*), ABISELECT(432,352), "S3005C1");
    check_base_class_offset(lv, (S3005C2*), 0, "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C6 */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*), ABISELECT(40,32), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C6 */ AMB_check_base_class_offset(lv, (S3005C4*)(S3005C6*), ABISELECT(40,32), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C6 */ AMB_check_base_class_offset(lv, (S3005C6*), ABISELECT(40,32), "S3005C1");
    check_base_class_offset(lv, (S3005C9*)(S3005C8*)(S3005C7*), ABISELECT(448,364), "S3005C1");
    check_base_class_offset(lv, (S3005C9*)(S3005C11*), ABISELECT(448,364), "S3005C1");
    check_base_class_offset(lv, (S3005C10*)(S3005C8*)(S3005C7*), ABISELECT(144,124), "S3005C1");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*)(S3005C6*)(S3005C8*)(S3005C7*), ABISELECT(240,188), "S3005C1");
    check_base_class_offset(lv, (S3005C4*)(S3005C6*)(S3005C8*)(S3005C7*), ABISELECT(240,188), "S3005C1");
    check_base_class_offset(lv, (S3005C6*)(S3005C8*)(S3005C7*), ABISELECT(240,188), "S3005C1");
    check_base_class_offset(lv, (S3005C8*)(S3005C7*), ABISELECT(144,124), "S3005C1");
    check_base_class_offset(lv, (S3005C7*), ABISELECT(144,124), "S3005C1");
    /*is_ambiguous_... S3005C12::S3005C3_nt */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C12*), ABISELECT(560,440), "S3005C1");
    check_base_class_offset(lv, (S3005C10*)(S3005C12*), ABISELECT(576,452), "S3005C1");
    check_base_class_offset(lv, (S3005C3_nt*)(S3005C13*), ABISELECT(672,516), "S3005C1");
    check_base_class_offset(lv, (S3005C13*)(S3005C12*), ABISELECT(672,516), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C4 */ AMB_check_base_class_offset(lv, (S3005C3_nt*)(S3005C4*), ABISELECT(688,528), "S3005C1");
    check_base_class_offset(lv, (S3005C4*)(S3005C12*), ABISELECT(688,528), "S3005C1");
    check_base_class_offset(lv, (S3005C12*)(S3005C11*), ABISELECT(560,440), "S3005C1");
    check_base_class_offset(lv, (S3005C11*), ABISELECT(352,296), "S3005C1");
    /*is_ambiguous_... S3005C1::S3005C5 */ AMB_check_base_class_offset(lv, (S3005C5*), ABISELECT(400,328), "S3005C1");
    check_field_offset(lv, s3005c1f0, ABISELECT(416,340), "S3005C1.s3005c1f0");
    test_class_info(&lv, &cd_S3005C1);
    dp->~S3005C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3005C1(Test_S3005C1, "S3005C1", ABISELECT(720,548));

#else // __cplusplus

extern void _ZN7S3005C1C1Ev();
extern void _ZN7S3005C1D1Ev();
Name_Map name_map_S3005C1[] = {
  NSPAIR(_ZN7S3005C1C1Ev),
  NSPAIR(_ZN7S3005C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C5;
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
extern Class_Descriptor cd_S3005C2;
extern VTBL_ENTRY _ZTI7S3005C2[];
extern  VTBL_ENTRY _ZTV7S3005C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C2[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
extern Class_Descriptor cd_S3005C9;
extern VTBL_ENTRY _ZTI7S3005C9[];
extern  VTBL_ENTRY _ZTV7S3005C9[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C6;
extern VTBL_ENTRY _ZTI7S3005C6[];
extern  VTBL_ENTRY _ZTV7S3005C6[];
extern Class_Descriptor cd_S3005C8;
extern VTBL_ENTRY _ZTI7S3005C8[];
extern  VTBL_ENTRY _ZTV7S3005C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C8[];
extern Class_Descriptor cd_S3005C7;
extern VTBL_ENTRY _ZTI7S3005C7[];
extern  VTBL_ENTRY _ZTV7S3005C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C7[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C10;
extern VTBL_ENTRY _ZTI8S3005C10[];
extern  VTBL_ENTRY _ZTV8S3005C10[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C13;
extern VTBL_ENTRY _ZTI8S3005C13[];
extern  VTBL_ENTRY _ZTV8S3005C13[];
extern Class_Descriptor cd_S3005C3_nt;
extern VTBL_ENTRY _ZTI10S3005C3_nt[];
extern  VTBL_ENTRY _ZTV10S3005C3_nt[];
extern Class_Descriptor cd_S3005C4;
extern VTBL_ENTRY _ZTI7S3005C4[];
extern  VTBL_ENTRY _ZTV7S3005C4[];
extern Class_Descriptor cd_S3005C12;
extern VTBL_ENTRY _ZTI8S3005C12[];
extern  VTBL_ENTRY _ZTV8S3005C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C12[];
extern Class_Descriptor cd_S3005C11;
extern VTBL_ENTRY _ZTI8S3005C11[];
extern  VTBL_ENTRY _ZTV8S3005C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3005C11[];
extern Class_Descriptor cd_S3005C5;
extern VTBL_ENTRY _ZTI7S3005C5[];
extern  VTBL_ENTRY _ZTV7S3005C5[];
static Base_Class bases_S3005C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3005C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S3005C3_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
    11, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(16,12), //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
    12, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3005C5,    ABISELECT(432,352), //bcp->offset
    104, //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
    4, //immediately_derived
  0, 1},
  {&cd_S3005C2,    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_S3005C3_nt,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(40,32), //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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C9,    ABISELECT(448,364), //bcp->offset
    112, //bcp->virtual_function_table_offset
    9, //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
    13, //immediately_derived
  0, 1},
  {&cd_S3005C10,    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
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(240,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
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(240,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
    19, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3005C6,    ABISELECT(240,188), //bcp->offset
    70, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S3005C8,    ABISELECT(144,124), //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
    21, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S3005C7,    ABISELECT(144,124), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C3_nt,    ABISELECT(560,440), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3005C10,    ABISELECT(576,452), //bcp->offset
    148, //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
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3005C3_nt,    ABISELECT(672,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
    18, //immediately_derived
  0, 0},
  {&cd_S3005C13,    ABISELECT(672,516), //bcp->offset
    155, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3005C3_nt,    ABISELECT(688,528), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S3005C4,    ABISELECT(688,528), //bcp->offset
    175, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S3005C12,    ABISELECT(560,440), //bcp->offset
    129, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3005C11,    ABISELECT(352,296), //bcp->offset
    85, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3005C5,    ABISELECT(400,328), //bcp->offset
    99, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3005C1[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C1D1Ev();
extern void _ZN7S3005C1D0Ev();
extern void _ZN7S3005C23v21Ev();
extern void _ZN7S3005C23v22Ev();
extern void _ZN7S3005C23v23Ev();
extern void _ZN7S3005C23v24Ev();
extern void _ZN7S3005C23v25Ev();
extern void _ZN7S3005C12v1Ev();
extern void _ZN7S3005C12v2Ev();
extern void _ZN7S3005C12v3Ev();
extern void _ZN7S3005C12v4Ev();
extern void _ZN7S3005C12v5Ev();
extern void _ZN7S3005C12v6Ev();
extern void _ZN7S3005C12v7Ev();
extern void _ZN7S3005C12v8Ev();
extern void _ZN7S3005C12v9Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void ABISELECT(_ZThn144_N7S3005C1D1Ev,_ZThn124_N7S3005C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S3005C1D0Ev,_ZThn124_N7S3005C1D0Ev)();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN7S3005C73v50Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
extern void _ZN7S3005C63v26Ev();
extern void _ZN7S3005C63v27Ev();
extern void _ZN7S3005C63v28Ev();
extern void _ZN7S3005C63v29Ev();
extern void _ZN7S3005C63v30Ev();
extern void ABISELECT(_ZThn352_N7S3005C1D1Ev,_ZThn296_N7S3005C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S3005C1D0Ev,_ZThn296_N7S3005C1D0Ev)();
extern void _ZN8S3005C113v59Ev();
extern void _ZN8S3005C113v60Ev();
extern void _ZN8S3005C113v61Ev();
extern void _ZN8S3005C113v62Ev();
extern void _ZN8S3005C113v63Ev();
extern void _ZN8S3005C113v64Ev();
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S3005C1D1Ev,_ZTv0_n12_N7S3005C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S3005C1D1Ev,_ZThn364_N7S3005C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C1D0Ev,_ZTv0_n12_N7S3005C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S3005C1D0Ev,_ZThn364_N7S3005C1D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY vtc_S3005C1[] = {
  ABISELECT(688,528),
  ABISELECT(672,516),
  ABISELECT(560,440),
  ABISELECT(448,364),
  ABISELECT(432,352),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v21Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v25Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v8Ev,
  (VTBL_ENTRY)&_ZN7S3005C12v9Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  ABISELECT(304,240),
  ABISELECT(-144,-124),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S3005C1D1Ev,_ZThn124_N7S3005C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S3005C1D0Ev,_ZThn124_N7S3005C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  (VTBL_ENTRY)&_ZN7S3005C73v50Ev,
  ABISELECT(-240,-188),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v26Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v27Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v28Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v29Ev,
  (VTBL_ENTRY)&_ZN7S3005C63v30Ev,
  ABISELECT(96,68),
  ABISELECT(336,232),
  ABISELECT(320,220),
  ABISELECT(208,144),
  ABISELECT(-352,-296),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn352_N7S3005C1D1Ev,_ZThn296_N7S3005C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn352_N7S3005C1D0Ev,_ZThn296_N7S3005C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3005C113v59Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v60Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v61Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v62Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v63Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v64Ev,
  ABISELECT(-400,-328),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
  0,
  0,
  0,
  ABISELECT(-432,-352),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-364),
  ABISELECT(-448,-364),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C1D1Ev,_ZTv0_n12_N7S3005C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C1D0Ev,_ZTv0_n12_N7S3005C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(112,76),
  ABISELECT(-560,-440),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
  ABISELECT(-576,-452),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-672,-516),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-688,-528),
  (VTBL_ENTRY)&(_ZTI7S3005C1[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern VTBL_ENTRY _ZTV7S3005C1[];
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C2D1Ev();
extern void _ZN7S3005C2D0Ev();
extern void _ZN7S3005C23v21Ev();
extern void _ZN7S3005C23v22Ev();
extern void _ZN7S3005C23v23Ev();
extern void _ZN7S3005C23v24Ev();
extern void _ZN7S3005C23v25Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C2__7S3005C1[] = {
  ABISELECT(432,352),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v21Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v22Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v23Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v24Ev,
  (VTBL_ENTRY)&_ZN7S3005C23v25Ev,
};
extern void _ZN7S3005C53v18Ev();
extern void _ZN7S3005C53v19Ev();
extern void _ZN7S3005C53v20Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C5__7S3005C2__7S3005C1[] = {
  0,
  0,
  0,
  ABISELECT(-432,-352),
  (VTBL_ENTRY)&(_ZTI7S3005C2[0]),
  (VTBL_ENTRY)&_ZN7S3005C53v18Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v19Ev,
  (VTBL_ENTRY)&_ZN7S3005C53v20Ev,
};
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C7D1Ev();
extern void _ZN7S3005C7D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
extern void _ZN7S3005C73v50Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C7__7S3005C1[] = {
  ABISELECT(304,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C7D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
  (VTBL_ENTRY)&_ZN7S3005C73v50Ev,
};
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
extern void _ZN7S3005C8D1Ev();
extern void _ZN7S3005C8D0Ev();
extern void _ZN7S3005C83v42Ev();
extern void _ZN7S3005C83v43Ev();
extern void _ZN7S3005C83v44Ev();
extern void _ZN7S3005C83v45Ev();
extern void _ZN7S3005C83v46Ev();
extern void _ZN7S3005C83v47Ev();
extern void _ZN7S3005C83v48Ev();
extern void _ZN7S3005C83v49Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C87S3005C7__7S3005C1[] = {
  ABISELECT(304,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3005C8D0Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v42Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v43Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v44Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v45Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v46Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v47Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v48Ev,
  (VTBL_ENTRY)&_ZN7S3005C83v49Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev)();
extern void ABISELECT(_ZThn304_N7S3005C8D1Ev,_ZThn240_N7S3005C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev)();
extern void ABISELECT(_ZThn304_N7S3005C8D0Ev,_ZThn240_N7S3005C8D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__7S3005C87S3005C7__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-240),
  ABISELECT(-304,-240),
  (VTBL_ENTRY)&(_ZTI7S3005C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev)();
extern void ABISELECT(_ZThn304_N7S3005C7D1Ev,_ZThn240_N7S3005C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev)();
extern void ABISELECT(_ZThn304_N7S3005C7D0Ev,_ZThn240_N7S3005C7D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__7S3005C7__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-240),
  ABISELECT(-304,-240),
  (VTBL_ENTRY)&(_ZTI7S3005C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern void _ZN8S3005C11D1Ev();
extern void _ZN8S3005C11D0Ev();
extern void _ZN8S3005C113v59Ev();
extern void _ZN8S3005C113v60Ev();
extern void _ZN8S3005C113v61Ev();
extern void _ZN8S3005C113v62Ev();
extern void _ZN8S3005C113v63Ev();
extern void _ZN8S3005C113v64Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C11__7S3005C1[] = {
  ABISELECT(96,68),
  ABISELECT(336,232),
  ABISELECT(320,220),
  ABISELECT(208,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3005C11D0Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v59Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v60Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v61Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v62Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v63Ev,
  (VTBL_ENTRY)&_ZN8S3005C113v64Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C12__8S3005C11__7S3005C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(128,88),
  ABISELECT(112,76),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
};
extern void _ZN8S3005C103v37Ev();
extern void _ZN8S3005C103v38Ev();
extern void _ZN8S3005C103v39Ev();
extern void _ZN8S3005C103v40Ev();
extern void _ZN8S3005C103v41Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C108S3005C12__8S3005C11__7S3005C1[] = {
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN8S3005C103v37Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v38Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v39Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v40Ev,
  (VTBL_ENTRY)&_ZN8S3005C103v41Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C13__8S3005C11__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-320,-220),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C4__8S3005C11__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-336,-232),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev)();
extern void ABISELECT(_ZThn96_N8S3005C11D1Ev,_ZThn68_N8S3005C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev)();
extern void ABISELECT(_ZThn96_N8S3005C11D0Ev,_ZThn68_N8S3005C11D0Ev)() __attribute__((weak));
extern void _ZN7S3005C93v31Ev();
extern void _ZN7S3005C93v32Ev();
extern void _ZN7S3005C93v33Ev();
extern void _ZN7S3005C93v34Ev();
extern void _ZN7S3005C93v35Ev();
extern void _ZN7S3005C93v36Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C9__8S3005C11__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S3005C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev),
  (VTBL_ENTRY)&_ZN7S3005C93v31Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v32Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v33Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v34Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v35Ev,
  (VTBL_ENTRY)&_ZN7S3005C93v36Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C123v57Ev();
extern void _ZN8S3005C123v58Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C12__7S3005C1[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v57Ev,
  (VTBL_ENTRY)&_ZN8S3005C123v58Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN8S3005C133v51Ev();
extern void _ZN8S3005C133v52Ev();
extern void _ZN8S3005C133v53Ev();
extern void _ZN8S3005C133v54Ev();
extern void _ZN8S3005C133v55Ev();
extern void _ZN8S3005C133v56Ev();
static  VTBL_ENTRY _tg__ZTV8S3005C13__8S3005C12__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v51Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v52Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v53Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v54Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v55Ev,
  (VTBL_ENTRY)&_ZN8S3005C133v56Ev,
};
extern void _ZN10S3005C3_nt3v10Ev();
extern void _ZN10S3005C3_nt3v11Ev();
extern void _ZN10S3005C3_nt3v12Ev();
extern void _ZN7S3005C43v13Ev();
extern void _ZN7S3005C43v14Ev();
extern void _ZN7S3005C43v15Ev();
extern void _ZN7S3005C43v16Ev();
extern void _ZN7S3005C43v17Ev();
static  VTBL_ENTRY _tg__ZTV7S3005C4__8S3005C12__7S3005C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S3005C12[0]),
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3005C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v13Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v14Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v15Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3005C43v17Ev,
};
static  VTT_ENTRY vtt_S3005C1[] = {
  {&(_ZTV7S3005C1[7]),  7,193},
  {&(_tg__ZTV7S3005C2__7S3005C1[3]),  3,13},
  {&(_tg__ZTV7S3005C5__7S3005C2__7S3005C1[5]),  5,8},
  {&(_tg__ZTV7S3005C7__7S3005C1[3]),  3,19},
  {&(_tg__ZTV7S3005C87S3005C7__7S3005C1[3]),  3,18},
  {&(_tg__ZTV7S3005C9__7S3005C87S3005C7__7S3005C1[9]),  9,17},
  {&(_tg__ZTV7S3005C9__7S3005C7__7S3005C1[9]),  9,17},
  {&(_tg__ZTV8S3005C11__7S3005C1[6]),  6,14},
  {&(_tg__ZTV8S3005C12__8S3005C11__7S3005C1[14]),  14,19},
  {&(_tg__ZTV8S3005C108S3005C12__8S3005C11__7S3005C1[2]),  2,7},
  {&(_tg__ZTV8S3005C13__8S3005C11__7S3005C1[11]),  11,20},
  {&(_tg__ZTV7S3005C4__8S3005C11__7S3005C1[10]),  10,18},
  {&(_tg__ZTV7S3005C9__8S3005C11__7S3005C1[9]),  9,17},
  {&(_ZTV7S3005C1[109]),  109,193},
  {&(_ZTV7S3005C1[54]),  54,193},
  {&(_ZTV7S3005C1[121]),  121,193},
  {&(_ZTV7S3005C1[91]),  91,193},
  {&(_ZTV7S3005C1[143]),  143,193},
  {&(_ZTV7S3005C1[150]),  150,193},
  {&(_ZTV7S3005C1[166]),  166,193},
  {&(_ZTV7S3005C1[185]),  185,193},
  {&(_tg__ZTV8S3005C12__7S3005C1[4]),  4,9},
  {&(_tg__ZTV8S3005C13__8S3005C12__7S3005C1[11]),  11,20},
  {&(_tg__ZTV7S3005C4__8S3005C12__7S3005C1[10]),  10,18},
};
extern VTBL_ENTRY _ZTI7S3005C1[];
extern  VTBL_ENTRY _ZTV7S3005C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3005C1[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D0Ev,_ZTv0_n12_N8S3005C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3005C11D0Ev,_ZThn68_N8S3005C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3005C11D1Ev,_ZTv0_n12_N8S3005C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3005C11D1Ev,_ZThn68_N8S3005C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D0Ev,_ZTv0_n12_N7S3005C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C7D0Ev,_ZThn240_N7S3005C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C7D1Ev,_ZTv0_n12_N7S3005C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C7D1Ev,_ZThn240_N7S3005C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D0Ev,_ZTv0_n12_N7S3005C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C8D0Ev,_ZThn240_N7S3005C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C8D1Ev,_ZTv0_n12_N7S3005C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3005C8D1Ev,_ZThn240_N7S3005C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C1D0Ev,_ZTv0_n12_N7S3005C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S3005C1D0Ev,_ZThn364_N7S3005C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3005C1D1Ev,_ZTv0_n12_N7S3005C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S3005C1D1Ev,_ZThn364_N7S3005C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3005C1 = {  "S3005C1", // class name
  bases_S3005C1, 24,
  &(vtc_S3005C1[0]), // expected_vtbl_contents
  &(vtt_S3005C1[0]), // expected_vtt_contents
  ABISELECT(720,548), // object size
  NSPAIRA(_ZTI7S3005C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3005C1),193, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3005C1),24, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C2  {
  ::S19763C18_nt s19676c2f0;
  int s19676c2f1[3];
  void  mf19676c2(); // _ZN8S19676C29mf19676c2Ev
};
//SIG(-1 S19676C2) C1{ m FC2{} Fi[3]}


void  S19676C2 ::mf19676c2(){}

static void Test_S19676C2()
{
  {
    init_simple_test("S19676C2");
    S19676C2 lv;
    check2(sizeof(lv), 16, "sizeof(S19676C2)");
    check2(__alignof__(lv), 4, "__alignof__(S19676C2)");
    check_field_offset(lv, s19676c2f0, 0, "S19676C2.s19676c2f0");
    check_field_offset(lv, s19676c2f1, 4, "S19676C2.s19676c2f1");
  }
}
static Arrange_To_Call_Me vS19676C2(Test_S19676C2, "S19676C2", 16);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S19676C2[];
VTBL_ENTRY *P__ZTI8S19676C2 = _ZTI8S19676C2; 
Class_Descriptor cd_S19676C2 = {  "S19676C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  NSPAIRA(_ZTI8S19676C2),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  S19676C9  {
  void *s19676c9f0;
  int s19676c9f1;
  char s19676c9f2;
  long double s19676c9f3;
  void  mf19676c9(); // _ZN8S19676C99mf19676c9Ev
  virtual  ~S19676C9(); // _ZN8S19676C9D1Ev
  S19676C9(); // tgen
};
//SIG(-1 S19676C9) C1{ vd m Fp Fi Fc FD}


void  S19676C9 ::mf19676c9(){}
 S19676C9 ::~S19676C9(){ note_dtor("S19676C9", this);}
S19676C9 ::S19676C9(){ note_ctor("S19676C9", this);} // tgen

static void Test_S19676C9()
{
  extern Class_Descriptor cd_S19676C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19676C9, buf);
    S19676C9 *dp, &lv = *(dp=new (buf) S19676C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19676C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C9)");
    check_field_offset(lv, s19676c9f0, ABISELECT(8,4), "S19676C9.s19676c9f0");
    check_field_offset(lv, s19676c9f1, ABISELECT(16,8), "S19676C9.s19676c9f1");
    check_field_offset(lv, s19676c9f2, ABISELECT(20,12), "S19676C9.s19676c9f2");
    check_field_offset(lv, s19676c9f3, ABISELECT(32,16), "S19676C9.s19676c9f3");
    test_class_info(&lv, &cd_S19676C9);
    dp->~S19676C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C9(Test_S19676C9, "S19676C9", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19676C9C1Ev();
extern void _ZN8S19676C9D1Ev();
Name_Map name_map_S19676C9[] = {
  NSPAIR(_ZN8S19676C9C1Ev),
  NSPAIR(_ZN8S19676C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19676C9[];
extern void _ZN8S19676C9D1Ev();
extern void _ZN8S19676C9D0Ev();
static  VTBL_ENTRY vtc_S19676C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C9[0]),
  (VTBL_ENTRY)&_ZN8S19676C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C9D0Ev,
};
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
Class_Descriptor cd_S19676C9 = {  "S19676C9", // class name
  0,0,//no base classes
  &(vtc_S19676C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19676C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19676C9),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  S19676C10  : virtual S19676C9 {
  virtual  ~S19676C10(); // _ZN9S19676C10D2Ev
  S19676C10(); // tgen
};
//SIG(-1 S19676C10) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S19676C10 ::~S19676C10(){ note_dtor("S19676C10", this);}
S19676C10 ::S19676C10(){ note_ctor("S19676C10", this);} // tgen

static void Test_S19676C10()
{
  extern Class_Descriptor cd_S19676C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19676C10, buf);
    S19676C10 *dp, &lv = *(dp=new (buf) S19676C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19676C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C10)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S19676C10");
    test_class_info(&lv, &cd_S19676C10);
    dp->~S19676C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C10(Test_S19676C10, "S19676C10", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S19676C10C1Ev();
extern void _ZN9S19676C10D2Ev();
Name_Map name_map_S19676C10[] = {
  NSPAIR(_ZN9S19676C10C1Ev),
  NSPAIR(_ZN9S19676C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S19676C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C10[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C10[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C10[];
static  VTT_ENTRY vtt_S19676C10[] = {
  {&(_ZTV9S19676C10[3]),  3,10},
  {&(_ZTV9S19676C10[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C10 = {  "S19676C10", // class name
  bases_S19676C10, 1,
  &(vtc_S19676C10[0]), // expected_vtbl_contents
  &(vtt_S19676C10[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S19676C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19676C10),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C10),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C8  : virtual S19676C9 , S19676C10 {
  void *s19676c8f0[10];
  int s19676c8f1;
  __tsi64 s19676c8f2;
  ~S19676C8(); // tgen
  S19676C8(); // tgen
};
//SIG(-1 S19676C8) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S19676C8 ::~S19676C8(){ note_dtor("S19676C8", this);} // tgen
S19676C8 ::S19676C8(){ note_ctor("S19676C8", this);} // tgen

static void Test_S19676C8()
{
  extern Class_Descriptor cd_S19676C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S19676C8, buf);
    S19676C8 *dp, &lv = *(dp=new (buf) S19676C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S19676C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C8)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S19676C8");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(112,56), "S19676C8");
    check_base_class_offset(lv, (S19676C10*), 0, "S19676C8");
    check_field_offset(lv, s19676c8f0, ABISELECT(8,4), "S19676C8.s19676c8f0");
    check_field_offset(lv, s19676c8f1, ABISELECT(88,44), "S19676C8.s19676c8f1");
    check_field_offset(lv, s19676c8f2, ABISELECT(96,48), "S19676C8.s19676c8f2");
    test_class_info(&lv, &cd_S19676C8);
    dp->~S19676C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C8(Test_S19676C8, "S19676C8", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN8S19676C8C1Ev();
extern void _ZN8S19676C8D1Ev();
Name_Map name_map_S19676C8[] = {
  NSPAIR(_ZN8S19676C8C1Ev),
  NSPAIR(_ZN8S19676C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C8[];
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C8[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__8S19676C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__8S19676C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
static  VTT_ENTRY vtt_S19676C8[] = {
  {&(_ZTV8S19676C8[3]),  3,10},
  {&(_tg__ZTV9S19676C10__8S19676C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__8S19676C8[3]),  3,5},
  {&(_ZTV8S19676C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C8 = {  "S19676C8", // class name
  bases_S19676C8, 2,
  &(vtc_S19676C8[0]), // expected_vtbl_contents
  &(vtt_S19676C8[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI8S19676C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19676C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C12  : virtual S19676C8 , S19676C10 {
  int s19676c12f0;
  virtual  ~S19676C12(); // _ZN9S19676C12D2Ev
  S19676C12(); // tgen
};
//SIG(-1 S19676C12) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S19676C12 ::~S19676C12(){ note_dtor("S19676C12", this);}
S19676C12 ::S19676C12(){ note_ctor("S19676C12", this);} // tgen

static void Test_S19676C12()
{
  extern Class_Descriptor cd_S19676C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19676C12, buf);
    S19676C12 *dp, &lv = *(dp=new (buf) S19676C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19676C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C12)");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(128,64), "S19676C12");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(128,64), "S19676C12");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(128,64), "S19676C12");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(16,8), "S19676C12");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(16,8), "S19676C12");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), 0, "S19676C12");
    check_field_offset(lv, s19676c12f0, ABISELECT(8,4), "S19676C12.s19676c12f0");
    test_class_info(&lv, &cd_S19676C12);
    dp->~S19676C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C12(Test_S19676C12, "S19676C12", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19676C12C1Ev();
extern void _ZN9S19676C12D2Ev();
Name_Map name_map_S19676C12[] = {
  NSPAIR(_ZN9S19676C12C1Ev),
  NSPAIR(_ZN9S19676C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C12[];
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C12[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C12[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C12[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__9S19676C12[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C12[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C12[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C12[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C12[] = {
  {&(_ZTV9S19676C12[4]),  4,17},
  {&(_tg__ZTV9S19676C10__A1__9S19676C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__9S19676C12[3]),  3,5},
  {&(_ZTV9S19676C12[10]),  10,17},
  {&(_ZTV9S19676C12[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C12[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C12 = {  "S19676C12", // class name
  bases_S19676C12, 4,
  &(vtc_S19676C12[0]), // expected_vtbl_contents
  &(vtt_S19676C12[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19676C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C12),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C12),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C14  : S19676C9 , virtual S19676C10 , virtual S19676C8 , S19676C12 {
  int s19676c14f0;
  virtual  ~S19676C14(); // _ZN9S19676C14D2Ev
  S19676C14(); // tgen
};
//SIG(-1 S19676C14) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S19676C14 ::~S19676C14(){ note_dtor("S19676C14", this);}
S19676C14 ::S19676C14(){ note_ctor("S19676C14", this);} // tgen

static void Test_S19676C14()
{
  extern Class_Descriptor cd_S19676C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S19676C14, buf);
    S19676C14 *dp, &lv = *(dp=new (buf) S19676C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S19676C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C14)");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S19676C14");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(80,44), "S19676C14");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(80,44), "S19676C14");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(80,44), "S19676C14");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(80,44), "S19676C14");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), ABISELECT(64,40), "S19676C14");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(128,72), "S19676C14");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(128,72), "S19676C14");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(128,72), "S19676C14");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(48,28), "S19676C14");
    check_base_class_offset(lv, (S19676C12*), ABISELECT(48,28), "S19676C14");
    check_field_offset(lv, s19676c14f0, ABISELECT(60,36), "S19676C14.s19676c14f0");
    test_class_info(&lv, &cd_S19676C14);
    dp->~S19676C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C14(Test_S19676C14, "S19676C14", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN9S19676C14C1Ev();
extern void _ZN9S19676C14D2Ev();
Name_Map name_map_S19676C14[] = {
  NSPAIR(_ZN9S19676C14C1Ev),
  NSPAIR(_ZN9S19676C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
static Base_Class bases_S19676C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(128,72), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C14[];
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C14[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C14[];
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__9S19676C14[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C14[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C14[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C14[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C14[] = {
  {&(_ZTV9S19676C14[5]),  5,30},
  {&(_tg__ZTV9S19676C12__9S19676C14[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C14[3]),  3,5},
  {&(_ZTV9S19676C14[17]),  17,30},
  {&(_ZTV9S19676C14[22]),  22,30},
  {&(_ZTV9S19676C14[28]),  28,30},
  {&(_ZTV9S19676C14[11]),  11,30},
  {&(_tg__ZTV9S19676C10__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C14 = {  "S19676C14", // class name
  bases_S19676C14, 7,
  &(vtc_S19676C14[0]), // expected_vtbl_contents
  &(vtt_S19676C14[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI9S19676C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19676C14),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C14),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C15  : virtual S19676C9 , virtual S19676C8 , S19676C10 {
  void *s19676c15f0;
  int s19676c15f1;
  ::S19676C9 s19676c15f2[3];
  int s19676c15f3[7];
  virtual  ~S19676C15(); // _ZN9S19676C15D2Ev
  S19676C15(); // tgen
};
//SIG(-1 S19676C15) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S19676C15 ::~S19676C15(){ note_dtor("S19676C15", this);}
S19676C15 ::S19676C15(){ note_ctor("S19676C15", this);} // tgen

static void Test_S19676C15()
{
  extern Class_Descriptor cd_S19676C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S19676C15, buf);
    S19676C15 *dp, &lv = *(dp=new (buf) S19676C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S19676C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C15)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19676C15");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(208,124), "S19676C15");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(208,124), "S19676C15");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(208,124), "S19676C15");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(256,152), "S19676C15");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(256,152), "S19676C15");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), 0, "S19676C15");
    check_field_offset(lv, s19676c15f0, ABISELECT(8,4), "S19676C15.s19676c15f0");
    check_field_offset(lv, s19676c15f1, ABISELECT(16,8), "S19676C15.s19676c15f1");
    check_field_offset(lv, s19676c15f2, ABISELECT(32,12), "S19676C15.s19676c15f2");
    check_field_offset(lv, s19676c15f3, ABISELECT(176,96), "S19676C15.s19676c15f3");
    test_class_info(&lv, &cd_S19676C15);
    dp->~S19676C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C15(Test_S19676C15, "S19676C15", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN9S19676C15C1Ev();
extern void _ZN9S19676C15D2Ev();
Name_Map name_map_S19676C15[] = {
  NSPAIR(_ZN9S19676C15C1Ev),
  NSPAIR(_ZN9S19676C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C15[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C15D1Ev,_ZThn124_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn208_N9S19676C15D0Ev,_ZThn124_N9S19676C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C15D1Ev,_ZThn152_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S19676C15D0Ev,_ZThn152_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C15[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C15[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C15[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C10D1Ev,_ZThn124_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn208_N9S19676C10D0Ev,_ZThn124_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__9S19676C15[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C15[] = {
  {&(_ZTV9S19676C15[4]),  4,17},
  {&(_tg__ZTV9S19676C10__A1__9S19676C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__9S19676C15[3]),  3,5},
  {&(_ZTV9S19676C15[9]),  9,17},
  {&(_ZTV9S19676C15[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C15[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C10D0Ev,_ZThn124_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C10D1Ev,_ZThn124_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19676C15D0Ev,_ZThn152_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S19676C15D1Ev,_ZThn152_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C15D0Ev,_ZThn124_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C15D1Ev,_ZThn124_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C15 = {  "S19676C15", // class name
  bases_S19676C15, 4,
  &(vtc_S19676C15[0]), // expected_vtbl_contents
  &(vtt_S19676C15[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI9S19676C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19676C15),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C15),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C13  : virtual S19676C8 , virtual S19676C14 , S19676C15 , S19676C9 , S19676C10 {
  virtual  ~S19676C13(); // _ZN9S19676C13D2Ev
  S19676C13(); // tgen
};
//SIG(-1 S19676C13) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S19676C13 ::~S19676C13(){ note_dtor("S19676C13", this);}
S19676C13 ::S19676C13(){ note_ctor("S19676C13", this);} // tgen

static void Test_S19676C13()
{
  extern Class_Descriptor cd_S19676C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S19676C13, buf);
    S19676C13 *dp, &lv = *(dp=new (buf) S19676C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S19676C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C13)");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(368,212), "S19676C13");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(368,212), "S19676C13");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*), ABISELECT(368,212), "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(368,212), "S19676C13");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(264,156), "S19676C13");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*), ABISELECT(264,156), "S19676C13");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(416,240), "S19676C13");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(480,280), "S19676C13");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(464,268), "S19676C13");
    check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(464,268), "S19676C13");
    check_base_class_offset(lv, (S19676C14*), ABISELECT(416,240), "S19676C13");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*), 0, "S19676C13");
    check_base_class_offset(lv, (S19676C15*), 0, "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19676C13");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), ABISELECT(256,152), "S19676C13");
    test_class_info(&lv, &cd_S19676C13);
    dp->~S19676C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C13(Test_S19676C13, "S19676C13", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN9S19676C13C1Ev();
extern void _ZN9S19676C13D2Ev();
Name_Map name_map_S19676C13[] = {
  NSPAIR(_ZN9S19676C13C1Ev),
  NSPAIR(_ZN9S19676C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
static Base_Class bases_S19676C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19676C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C13[];
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
extern void ABISELECT(_ZThn208_N9S19676C13D1Ev,_ZThn124_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C13D0Ev,_ZThn124_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S19676C13D1Ev,_ZThn156_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S19676C13D0Ev,_ZThn156_N9S19676C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C13D1Ev,_ZThn280_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C13D0Ev,_ZThn280_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C13[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C13D1Ev,_ZThn124_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C13D0Ev,_ZThn124_N9S19676C13D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C13[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C15__9S19676C13[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C15__A3__9S19676C13[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C10D1Ev,_ZThn212_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C10D0Ev,_ZThn212_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C13[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C15D1Ev,_ZThn212_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C15D0Ev,_ZThn212_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C15__9S19676C13[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn264_N9S19676C15D1Ev,_ZThn156_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn264_N9S19676C15D0Ev,_ZThn156_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15__9S19676C13[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn60_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn60_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A__9S19676C13[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C13[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C13[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C13[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C13[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C13[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C13[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C13[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C13[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C13[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C13[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__9S19676C13[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
static  VTT_ENTRY vtt_S19676C13[] = {
  {&(_ZTV9S19676C13[6]),  6,48},
  {&(_tg__ZTV9S19676C15__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C15__A3__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C15__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C15__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A__9S19676C13[3]),  3,5},
  {&(_ZTV9S19676C13[21]),  21,48},
  {&(_ZTV9S19676C13[26]),  26,48},
  {&(_ZTV9S19676C13[34]),  34,48},
  {&(_ZTV9S19676C13[46]),  46,48},
  {&(_ZTV9S19676C13[40]),  40,48},
  {&(_ZTV9S19676C13[15]),  15,48},
  {&(_tg__ZTV8S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C13[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C13[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C13[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__9S19676C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C15D0Ev,_ZThn156_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C15D1Ev,_ZThn156_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C15D0Ev,_ZThn212_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C15D1Ev,_ZThn212_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn60_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C10D0Ev,_ZThn212_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn60_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C10D1Ev,_ZThn212_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C13D0Ev,_ZThn280_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C13D0Ev,_ZThn156_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C13D1Ev,_ZThn280_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19676C13D1Ev,_ZThn156_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C13 = {  "S19676C13", // class name
  bases_S19676C13, 12,
  &(vtc_S19676C13[0]), // expected_vtbl_contents
  &(vtt_S19676C13[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI9S19676C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19676C13),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C13),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C11  : virtual S19676C10 , virtual S19676C12 , S19676C8 , S19676C13 , S19676C14 {
  short s19676c11f0;
  virtual  ~S19676C11(); // _ZN9S19676C11D2Ev
  S19676C11(); // tgen
};
//SIG(-1 S19676C11) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S19676C11 ::~S19676C11(){ note_dtor("S19676C11", this);}
S19676C11 ::S19676C11(){ note_ctor("S19676C11", this);} // tgen

static void Test_S19676C11()
{
  extern Class_Descriptor cd_S19676C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S19676C11, buf);
    S19676C11 *dp, &lv = *(dp=new (buf) S19676C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S19676C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C11)");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(464,260), "S19676C11");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(464,260), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), ABISELECT(456,256), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(456,256), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(456,256), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(528,296), "S19676C11");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(528,296), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(512,288), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*), ABISELECT(512,288), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), 0, "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*), 0, "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(640,352), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(688,380), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(688,380), "S19676C11");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(640,352), "S19676C11");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(112,56), "S19676C11");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(112,56), "S19676C11");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(320,180), "S19676C11");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(368,208), "S19676C11");
    check_base_class_offset(lv, (S19676C13*), ABISELECT(112,56), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(384,212), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(432,240), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(432,240), "S19676C11");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*), ABISELECT(384,212), "S19676C11");
    check_field_offset(lv, s19676c11f0, ABISELECT(448,252), "S19676C11.s19676c11f0");
    test_class_info(&lv, &cd_S19676C11);
    dp->~S19676C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C11(Test_S19676C11, "S19676C11", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN9S19676C11C1Ev();
extern void _ZN9S19676C11D2Ev();
Name_Map name_map_S19676C11[] = {
  NSPAIR(_ZN9S19676C11C1Ev),
  NSPAIR(_ZN9S19676C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
static Base_Class bases_S19676C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(528,296), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C8,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C11[];
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19676C11D1Ev,_ZThn180_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19676C11D0Ev,_ZThn180_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn288_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn288_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C11D1Ev,_ZThn296_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C11D0Ev,_ZThn296_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY vtc_S19676C11[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C11D1Ev,_ZThn180_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C11D0Ev,_ZThn180_N9S19676C11D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C11[];
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__A__9S19676C11[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A3__9S19676C11[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn260_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn260_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A3__9S19676C11[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn260_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn260_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__A__9S19676C11[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__9S19676C11[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A5__9S19676C11[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn204_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn204_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A5__9S19676C11[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn204_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn204_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__9S19676C11[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn416_N9S19676C15D1Ev,_ZThn240_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn416_N9S19676C15D0Ev,_ZThn240_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__9S19676C11[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn52_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn52_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A6__9S19676C11[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__9S19676C11[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn204_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn204_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__9S19676C11[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__9S19676C11[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__9S19676C11[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__9S19676C11[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__9S19676C11[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A7__9S19676C11[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn20_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn20_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A7__9S19676C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S19676C12D1Ev,_ZThn56_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S19676C12D0Ev,_ZThn56_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A2__9S19676C11[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn20_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn20_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A2__9S19676C11[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__A__9S19676C11[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn48_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn48_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__A__9S19676C11[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C14D1Ev,_ZThn84_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C14D0Ev,_ZThn84_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__A__9S19676C11[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__A__9S19676C11[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C11[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__9S19676C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C11[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C11[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C11[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__9S19676C11[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__9S19676C11[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C11[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C11[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C11[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C11[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C11[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C11[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
static  VTT_ENTRY vtt_S19676C11[] = {
  {&(_ZTV9S19676C11[7]),  7,77},
  {&(_tg__ZTV8S19676C8__A__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A3__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A3__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__A__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C13__9S19676C11[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A5__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A5__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A6__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__9S19676C11[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A7__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A7__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A2__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A2__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__A__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__A__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__A__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__A__9S19676C11[4]),  4,6},
  {&(_ZTV9S19676C11[43]),  43,77},
  {&(_ZTV9S19676C11[48]),  48,77},
  {&(_ZTV9S19676C11[55]),  55,77},
  {&(_ZTV9S19676C11[61]),  61,77},
  {&(_ZTV9S19676C11[15]),  15,77},
  {&(_ZTV9S19676C11[69]),  69,77},
  {&(_ZTV9S19676C11[75]),  75,77},
  {&(_ZTV9S19676C11[24]),  24,77},
  {&(_ZTV9S19676C11[31]),  31,77},
  {&(_ZTV9S19676C11[37]),  37,77},
  {&(_tg__ZTV9S19676C10__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C11[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C11[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C11[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C11[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn48_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn48_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C14D0Ev,_ZThn84_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C14D1Ev,_ZThn84_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn20_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn20_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C12D0Ev,_ZThn56_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C12D1Ev,_ZThn56_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn204_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn204_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D0Ev,_ZThn240_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C13D1Ev,_ZThn240_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C15D0Ev,_ZThn240_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S19676C15D1Ev,_ZThn240_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn204_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn204_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn260_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn260_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19676C10D0Ev,_ZThn4_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn20_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn52_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn204_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn260_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19676C10D1Ev,_ZThn4_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn20_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn52_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn204_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn260_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn288_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn288_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C11D0Ev,_ZThn296_N9S19676C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C11D1Ev,_ZThn296_N9S19676C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C11 = {  "S19676C11", // class name
  bases_S19676C11, 21,
  &(vtc_S19676C11[0]), // expected_vtbl_contents
  &(vtt_S19676C11[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI9S19676C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19676C11),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C11),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C7  : virtual S19676C8 , virtual S19676C11 , virtual S19676C13 , virtual S19676C2 , S19676C14 {
  short s19676c7f0;
  void *s19676c7f1[2];
  ~S19676C7(); // tgen
  S19676C7(); // tgen
};
//SIG(-1 S19676C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S19676C7 ::~S19676C7(){ note_dtor("S19676C7", this);} // tgen
S19676C7 ::S19676C7(){ note_ctor("S19676C7", this);} // tgen

static void Test_S19676C7()
{
  extern Class_Descriptor cd_S19676C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S19676C7, buf);
    S19676C7 *dp, &lv = *(dp=new (buf) S19676C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S19676C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C7)");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(192,108), "S19676C7");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(192,108), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(88,52), "S19676C7");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(88,52), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(696,392), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(704,396), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(704,396), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(240,136), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(240,136), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(720,404), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(768,432), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(768,432), "S19676C7");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(720,404), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(720,404), "S19676C7");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(352,192), "S19676C7");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(352,192), "S19676C7");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(560,316), "S19676C7");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(608,344), "S19676C7");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(352,192), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(624,348), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(672,376), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(672,376), "S19676C7");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(624,348), "S19676C7");
    check_base_class_offset(lv, (S19676C11*), ABISELECT(240,136), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(784,444), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(784,444), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(992,568), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(1040,596), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*), ABISELECT(784,444), "S19676C7");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), 0, "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(48,28), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(48,28), "S19676C7");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*), 0, "S19676C7");
    check_field_offset(lv, s19676c7f0, ABISELECT(64,40), "S19676C7.s19676c7f0");
    check_field_offset(lv, s19676c7f1, ABISELECT(72,44), "S19676C7.s19676c7f1");
    test_class_info(&lv, &cd_S19676C7);
    dp->~S19676C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C7(Test_S19676C7, "S19676C7", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN8S19676C7C1Ev();
extern void _ZN8S19676C7D1Ev();
Name_Map name_map_S19676C7[] = {
  NSPAIR(_ZN8S19676C7C1Ev),
  NSPAIR(_ZN8S19676C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
static Base_Class bases_S19676C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C10,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C15,    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
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(784,444), //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
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C14,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C7[];
extern void _ZN8S19676C7D1Ev();
extern void _ZN8S19676C7D0Ev();
extern void ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn704_N8S19676C7D1Ev,_ZThn396_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn704_N8S19676C7D0Ev,_ZThn396_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn404_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn404_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn444_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn444_N8S19676C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY vtc_S19676C7[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&_ZN8S19676C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C7D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C7[];
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__8S19676C7[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A3__8S19676C7[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A10__8S19676C7[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A10__8S19676C7[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A3__8S19676C7[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A3__8S19676C7[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn696_N9S19676C14D1Ev,_ZThn392_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn696_N9S19676C14D0Ev,_ZThn392_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__A__8S19676C7[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__A__8S19676C7[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__A__8S19676C7[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__A__8S19676C7[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C7[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__8S19676C7[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C7[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__8S19676C7[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C7[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__8S19676C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C7[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C7[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C7[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C7[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C7[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__8S19676C7[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__8S19676C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__8S19676C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__8S19676C7[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__8S19676C7[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn268_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn268_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__8S19676C7[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C7[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__8S19676C7[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C7[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C7[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__8S19676C7[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C7[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__8S19676C7[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C7[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__8S19676C7[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__8S19676C7[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C7[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C7[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C7[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C7[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C7[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__8S19676C7[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__8S19676C7[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__8S19676C7[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C7[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A1__8S19676C7[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C7[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C7[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C7[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C7[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C7[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C7[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C7[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
static  VTT_ENTRY vtt_S19676C7[] = {
  {&(_ZTV8S19676C7[10]),  10,114},
  {&(_tg__ZTV9S19676C14__A__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A3__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A10__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A10__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A3__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A3__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__A__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__A__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__A__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__A__8S19676C7[4]),  4,6},
  {&(_ZTV8S19676C7[22]),  22,114},
  {&(_ZTV8S19676C7[27]),  27,114},
  {&(_ZTV8S19676C7[37]),  37,114},
  {&(_ZTV8S19676C7[73]),  73,114},
  {&(_ZTV8S19676C7[80]),  80,114},
  {&(_ZTV8S19676C7[45]),  45,114},
  {&(_ZTV8S19676C7[88]),  88,114},
  {&(_ZTV8S19676C7[94]),  94,114},
  {&(_ZTV8S19676C7[49]),  49,114},
  {&(_ZTV8S19676C7[54]),  54,114},
  {&(_ZTV8S19676C7[61]),  61,114},
  {&(_ZTV8S19676C7[67]),  67,114},
  {&(_ZTV8S19676C7[103]),  103,114},
  {&(_ZTV8S19676C7[107]),  107,114},
  {&(_ZTV8S19676C7[112]),  112,114},
  {&(_ZTV8S19676C7[16]),  16,114},
  {&(_tg__ZTV8S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C7[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__8S19676C7[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C12__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__8S19676C7[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C7[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A1__8S19676C7[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A1__8S19676C7[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C7[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19676C7[];
extern  VTBL_ENTRY _ZTV8S19676C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C7[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn268_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn268_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn260_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn260_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn212_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn212_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N9S19676C14D0Ev,_ZThn392_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N9S19676C14D1Ev,_ZThn392_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn444_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn444_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn404_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn404_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19676C7D0Ev,_ZThn396_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19676C7D1Ev,_ZThn396_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C7 = {  "S19676C7", // class name
  bases_S19676C7, 32,
  &(vtc_S19676C7[0]), // expected_vtbl_contents
  &(vtt_S19676C7[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI8S19676C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19676C7),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C7),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C17  : virtual S19676C10 , virtual S19676C14 , virtual S19676C2 {
  int s19676c17f0;
  virtual  ~S19676C17(); // _ZN9S19676C17D2Ev
  S19676C17(); // tgen
};
//SIG(-1 S19676C17) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S19676C17 ::~S19676C17(){ note_dtor("S19676C17", this);}
S19676C17 ::S19676C17(){ note_ctor("S19676C17", this);} // tgen

static void Test_S19676C17()
{
  extern Class_Descriptor cd_S19676C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S19676C17, buf);
    S19676C17 *dp, &lv = *(dp=new (buf) S19676C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S19676C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C17)");
    /*is_ambiguous_... S19676C17::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(16,8), "S19676C17");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(16,8), "S19676C17");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(16,8), "S19676C17");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(16,8), "S19676C17");
    /*is_ambiguous_... S19676C17::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*), 0, "S19676C17");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), 0, "S19676C17");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(64,36), "S19676C17");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(128,76), "S19676C17");
    check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(128,76), "S19676C17");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(128,76), "S19676C17");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(112,64), "S19676C17");
    check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(112,64), "S19676C17");
    check_base_class_offset(lv, (S19676C14*), ABISELECT(64,36), "S19676C17");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S19676C17");
    check_field_offset(lv, s19676c17f0, ABISELECT(8,4), "S19676C17.s19676c17f0");
    test_class_info(&lv, &cd_S19676C17);
    dp->~S19676C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C17(Test_S19676C17, "S19676C17", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN9S19676C17C1Ev();
extern void _ZN9S19676C17D2Ev();
Name_Map name_map_S19676C17[] = {
  NSPAIR(_ZN9S19676C17C1Ev),
  NSPAIR(_ZN9S19676C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S19676C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //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_S19676C10,    0, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(128,76), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C17[];
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C17[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C17[];
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C17[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C17[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C17[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C17[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C17[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C17[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C17[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C17[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C17[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C17[] = {
  {&(_ZTV9S19676C17[8]),  8,35},
  {&(_ZTV9S19676C17[8]),  8,35},
  {&(_ZTV9S19676C17[13]),  13,35},
  {&(_ZTV9S19676C17[21]),  21,35},
  {&(_ZTV9S19676C17[33]),  33,35},
  {&(_ZTV9S19676C17[27]),  27,35},
  {&(_tg__ZTV9S19676C10__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C17[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C17[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C17[4]),  4,6},
  {&(_tg__ZTV8S19676C8__9S19676C17[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C17[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C17 = {  "S19676C17", // class name
  bases_S19676C17, 9,
  &(vtc_S19676C17[0]), // expected_vtbl_contents
  &(vtt_S19676C17[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI9S19676C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19676C17),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C17),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C16  : virtual S19676C17 , S19676C15 {
  virtual  ~S19676C16(); // _ZN9S19676C16D2Ev
  S19676C16(); // tgen
};
//SIG(-1 S19676C16) C1{ VBC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} vd} VBC5{ BC4 VBC3 VBC6{ VBC4 BC3 Fp[10] Fi FL} BC7{ VBC6 BC3 vd Fi} vd Fi} VBC8{ m FC9{} Fi[3]} vd Fi} BC10{ VBC4 VBC6 BC3 vd Fp Fi FC4[3] Fi[7]} vd}


 S19676C16 ::~S19676C16(){ note_dtor("S19676C16", this);}
S19676C16 ::S19676C16(){ note_ctor("S19676C16", this);} // tgen

static void Test_S19676C16()
{
  extern Class_Descriptor cd_S19676C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,69)];
    init_test(&cd_S19676C16, buf);
    S19676C16 *dp, &lv = *(dp=new (buf) S19676C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,272), "sizeof(S19676C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C16)");
    /*is_ambiguous_... S19676C16::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(224,132), "S19676C16");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(224,132), "S19676C16");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(224,132), "S19676C16");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(224,132), "S19676C16");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*), ABISELECT(224,132), "S19676C16");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*), ABISELECT(224,132), "S19676C16");
    /*is_ambiguous_... S19676C17::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(208,124), "S19676C16");
    /*is_ambiguous_... S19676C14::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(208,124), "S19676C16");
    /*is_ambiguous_... S19676C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(272,160), "S19676C16");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(336,200), "S19676C16");
    check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(336,200), "S19676C16");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(336,200), "S19676C16");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*), ABISELECT(336,200), "S19676C16");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(320,188), "S19676C16");
    check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(320,188), "S19676C16");
    check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(272,160), "S19676C16");
    check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(440,256), "S19676C16");
    check_base_class_offset(lv, (S19676C17*), ABISELECT(208,124), "S19676C16");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*), 0, "S19676C16");
    check_base_class_offset(lv, (S19676C15*), 0, "S19676C16");
    test_class_info(&lv, &cd_S19676C16);
    dp->~S19676C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C16(Test_S19676C16, "S19676C16", ABISELECT(464,272));

#else // __cplusplus

extern void _ZN9S19676C16C1Ev();
extern void _ZN9S19676C16D2Ev();
Name_Map name_map_S19676C16[] = {
  NSPAIR(_ZN9S19676C16C1Ev),
  NSPAIR(_ZN9S19676C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
static Base_Class bases_S19676C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(224,132), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(336,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(336,200), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(320,188), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(320,188), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(272,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(440,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
    9, //immediately_derived
  0, 1},
  {&cd_S19676C17,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C15,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C16[];
extern void _ZN9S19676C16D1Ev();
extern void _ZN9S19676C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C16D1Ev,_ZThn124_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn208_N9S19676C16D0Ev,_ZThn124_N9S19676C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn224_N9S19676C16D1Ev,_ZThn132_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn224_N9S19676C16D0Ev,_ZThn132_N9S19676C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn272_N9S19676C16D1Ev,_ZThn160_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn272_N9S19676C16D0Ev,_ZThn160_N9S19676C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn336_N9S19676C16D1Ev,_ZThn200_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn336_N9S19676C16D0Ev,_ZThn200_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C16[] = {
  ABISELECT(440,256),
  ABISELECT(272,160),
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&_ZN9S19676C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C16D0Ev,
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  ABISELECT(-208,-124),
  ABISELECT(16,8),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev),
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C16[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C15__9S19676C16[] = {
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C15__A3__9S19676C16[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn224_N9S19676C10D1Ev,_ZThn132_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn224_N9S19676C10D0Ev,_ZThn132_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S19676C15D1Ev,_ZThn132_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S19676C15D0Ev,_ZThn132_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C15__9S19676C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn336_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn336_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15__9S19676C16[] = {
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__9S19676C16[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__9S19676C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__9S19676C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__9S19676C16[] = {
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__9S19676C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__9S19676C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C16[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C16[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C16[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C16[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C16[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__A1__9S19676C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C16[] = {
  {&(_ZTV9S19676C16[8]),  8,45},
  {&(_tg__ZTV9S19676C15__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C15__A3__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C15__A3__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C15__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C15__9S19676C16[4]),  4,6},
  {&(_ZTV9S19676C16[18]),  18,45},
  {&(_ZTV9S19676C16[18]),  18,45},
  {&(_ZTV9S19676C16[23]),  23,45},
  {&(_ZTV9S19676C16[31]),  31,45},
  {&(_ZTV9S19676C16[43]),  43,45},
  {&(_ZTV9S19676C16[37]),  37,45},
  {&(_tg__ZTV9S19676C17__9S19676C16[8]),  8,10},
  {&(_tg__ZTV9S19676C17__9S19676C16[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C17__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__9S19676C16[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C16[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A2__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A2__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C16[4]),  4,6},
  {&(_tg__ZTV8S19676C8__9S19676C16[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__A1__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__A1__9S19676C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C16[];
extern  VTBL_ENTRY _ZTV9S19676C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C16[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D0Ev,_ZThn40_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C14D1Ev,_ZThn40_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn12_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn12_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D0Ev,_ZThn36_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C17D1Ev,_ZThn36_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D0Ev,_ZThn8_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C17D1Ev,_ZThn8_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D0Ev,_ZThn76_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C17D1Ev,_ZThn76_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C15D0Ev,_ZThn132_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C15D1Ev,_ZThn132_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D0Ev,_ZThn8_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C10D0Ev,_ZThn132_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C10D1Ev,_ZThn8_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C10D1Ev,_ZThn132_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C16D0Ev,_ZThn160_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C16D1Ev,_ZThn160_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C16D0Ev,_ZThn132_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19676C16D1Ev,_ZThn132_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C16D0Ev,_ZThn200_N9S19676C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C16D0Ev,_ZThn124_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19676C16D1Ev,_ZThn200_N9S19676C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19676C16D1Ev,_ZThn124_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C16 = {  "S19676C16", // class name
  bases_S19676C16, 12,
  &(vtc_S19676C16[0]), // expected_vtbl_contents
  &(vtt_S19676C16[0]), // expected_vtt_contents
  ABISELECT(464,272), // object size
  NSPAIRA(_ZTI9S19676C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C16),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C16),34, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C18  : virtual S19676C9 , virtual S19676C8 {
  int s19676c18f0;
  ::S19763C18_nt s19676c18f1;
  virtual  ~S19676C18(); // _ZN9S19676C18D2Ev
  S19676C18(); // tgen
};
//SIG(-1 S19676C18) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} vd Fi FC5{}}


 S19676C18 ::~S19676C18(){ note_dtor("S19676C18", this);}
S19676C18 ::S19676C18(){ note_ctor("S19676C18", this);} // tgen

static void Test_S19676C18()
{
  extern Class_Descriptor cd_S19676C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S19676C18, buf);
    S19676C18 *dp, &lv = *(dp=new (buf) S19676C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19676C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C18)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,12), "S19676C18");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(16,12), "S19676C18");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(16,12), "S19676C18");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(64,40), "S19676C18");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(64,40), "S19676C18");
    check_field_offset(lv, s19676c18f0, ABISELECT(8,4), "S19676C18.s19676c18f0");
    check_field_offset(lv, s19676c18f1, ABISELECT(12,8), "S19676C18.s19676c18f1");
    test_class_info(&lv, &cd_S19676C18);
    dp->~S19676C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C18(Test_S19676C18, "S19676C18", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN9S19676C18C1Ev();
extern void _ZN9S19676C18D2Ev();
Name_Map name_map_S19676C18[] = {
  NSPAIR(_ZN9S19676C18C1Ev),
  NSPAIR(_ZN9S19676C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
static Base_Class bases_S19676C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,12), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(64,40), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C18[];
extern void _ZN9S19676C18D1Ev();
extern void _ZN9S19676C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C18D1Ev,_ZThn12_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C18D0Ev,_ZThn12_N9S19676C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19676C18D1Ev,_ZThn40_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19676C18D0Ev,_ZThn40_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C18[] = {
  ABISELECT(64,40),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&_ZN9S19676C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C18D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C18[];
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C18[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C18[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C18[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C18[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C18[] = {
  {&(_ZTV9S19676C18[4]),  4,17},
  {&(_ZTV9S19676C18[9]),  9,17},
  {&(_ZTV9S19676C18[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C18[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C18[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C18[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C18[];
extern  VTBL_ENTRY _ZTV9S19676C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C18[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C18D0Ev,_ZThn40_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19676C18D1Ev,_ZThn40_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C18D0Ev,_ZThn12_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C18D1Ev,_ZThn12_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C18 = {  "S19676C18", // class name
  bases_S19676C18, 3,
  &(vtc_S19676C18[0]), // expected_vtbl_contents
  &(vtt_S19676C18[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI9S19676C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C18),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C18),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C5  : S4228C37 , virtual S19676C7 , S19676C16 , S19676C18 , S19676C17 {
  int s19676c5f0[10];
  long double s19676c5f1;
  virtual  ~S19676C5(); // _ZN8S19676C5D2Ev
  S19676C5(); // tgen
};
//SIG(-1 S19676C5) C1{ BC2{ m} VBC3{ VBC4{ VBC5{ vd m Fp Fi Fc FD} BC6{ VBC5 vd} Fp[10] Fi FL} VBC7{ VBC6 VBC8{ VBC4 BC6 vd Fi} BC4 BC9{ VBC4 VBC10{ BC5 VBC6 VBC4 BC8 vd Fi} BC11{ VBC5 VBC4 BC6 vd Fp Fi FC5[3] Fi[7]} BC5 BC6 vd} BC10 vd Fs} VBC9 VBC12{ m FC13{} Fi[3]} BC10 Fs Fp[2]} BC14{ VBC15{ VBC6 VBC10 VBC12 vd Fi} BC11 vd} BC16{ VBC5 VBC4 vd Fi FC13} BC15 vd Fi[10] FD}


 S19676C5 ::~S19676C5(){ note_dtor("S19676C5", this);}
S19676C5 ::S19676C5(){ note_ctor("S19676C5", this);} // tgen

static void Test_S19676C5()
{
  extern Class_Descriptor cd_S19676C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,205)];
    init_test(&cd_S19676C5, buf);
    S19676C5 *dp, &lv = *(dp=new (buf) S19676C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,816), "sizeof(S19676C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C5)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(496,304), "S19676C5");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(496,304), "S19676C5");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C16*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C16*), ABISELECT(496,304), "S19676C5");
    check_base_class_offset(lv, (S19676C9*)(S19676C18*), ABISELECT(496,304), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C7*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C7*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C16*), ABISELECT(392,248), "S19676C5");
    check_base_class_offset(lv, (S19676C8*)(S19676C18*), ABISELECT(392,248), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C7*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(1000,588), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(1000,588), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(544,332), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(544,332), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(1072,624), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(1072,624), "S19676C5");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(1024,596), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(656,388), "S19676C5");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(656,388), "S19676C5");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(864,512), "S19676C5");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(912,540), "S19676C5");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(656,388), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(928,544), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(976,572), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(976,572), "S19676C5");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(928,544), "S19676C5");
    check_base_class_offset(lv, (S19676C11*)(S19676C7*), ABISELECT(544,332), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(1088,636), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(1088,636), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(1296,760), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(1344,788), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*)(S19676C7*), ABISELECT(1088,636), "S19676C5");
    check_base_class_offset(lv, (S19676C2*)(S19676C7*), ABISELECT(1352,792), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(1352,792), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(1352,792), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C7*), ABISELECT(304,196), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(352,224), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(352,224), "S19676C5");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C7*), ABISELECT(304,196), "S19676C5");
    check_base_class_offset(lv, (S19676C7*), ABISELECT(304,196), "S19676C5");
    check_base_class_offset(lv, (S19676C17*)(S19676C16*), ABISELECT(1368,808), "S19676C5");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C16*), 0, "S19676C5");
    check_base_class_offset(lv, (S19676C15*)(S19676C16*), 0, "S19676C5");
    check_base_class_offset(lv, (S19676C16*), 0, "S19676C5");
    check_base_class_offset(lv, (S19676C18*), ABISELECT(208,124), "S19676C5");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C17*), ABISELECT(224,136), "S19676C5");
    check_field_offset(lv, s19676c5f0, ABISELECT(236,144), "S19676C5.s19676c5f0");
    check_field_offset(lv, s19676c5f1, ABISELECT(288,184), "S19676C5.s19676c5f1");
    test_class_info(&lv, &cd_S19676C5);
    dp->~S19676C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C5(Test_S19676C5, "S19676C5", ABISELECT(1392,816));

#else // __cplusplus

extern void _ZN8S19676C5C1Ev();
extern void _ZN8S19676C5D2Ev();
Name_Map name_map_S19676C5[] = {
  NSPAIR(_ZN8S19676C5C1Ev),
  NSPAIR(_ZN8S19676C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C7;
extern VTBL_ENTRY _ZTI8S19676C7[];
extern  VTBL_ENTRY _ZTV8S19676C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C7[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C16;
extern VTBL_ENTRY _ZTI9S19676C16[];
extern  VTBL_ENTRY _ZTV9S19676C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C16[];
extern Class_Descriptor cd_S19676C18;
extern VTBL_ENTRY _ZTI9S19676C18[];
extern  VTBL_ENTRY _ZTV9S19676C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C18[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
static Base_Class bases_S19676C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(496,304), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(392,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(392,248), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1368,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1000,588), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1000,588), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(544,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(544,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1024,596), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1072,624), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1072,624), //bcp->offset
    115, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(1024,596), //bcp->offset
    107, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(656,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(656,388), //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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(864,512), //bcp->offset
    78, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(912,540), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(656,388), //bcp->offset
    70, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(928,544), //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(976,572), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    20, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(976,572), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(928,544), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(544,332), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1088,636), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1088,636), //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
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1296,760), //bcp->offset
    130, //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
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1344,788), //bcp->offset
    134, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(1088,636), //bcp->offset
    121, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1352,792), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(304,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
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(352,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(352,224), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(304,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19676C7,    ABISELECT(304,196), //bcp->offset
    30, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C17,    ABISELECT(1368,808), //bcp->offset
    139, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19676C15,    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
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19676C16,    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
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C18,    ABISELECT(208,124), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C17,    ABISELECT(224,136), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C5[];
extern void _ZN8S19676C5D1Ev();
extern void _ZN8S19676C5D0Ev();
extern void ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C5[] = {
  ABISELECT(1088,636),
  ABISELECT(1000,588),
  ABISELECT(544,332),
  ABISELECT(304,196),
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&_ZN8S19676C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C5D0Ev,
  ABISELECT(184,124),
  ABISELECT(288,180),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev),
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  ABISELECT(-224,-136),
  ABISELECT(272,168),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
  ABISELECT(-304,-196),
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev),
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev),
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev),
  ABISELECT(-544,-332),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev),
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-656,-388),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev),
  ABISELECT(-864,-512),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-912,-540),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-928,-544),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-976,-572),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev),
  ABISELECT(-1000,-588),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-1000,-588),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev),
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev),
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev),
  ABISELECT(-1088,-636),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-1088,-636),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev),
  ABISELECT(-1296,-760),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev),
  ABISELECT(-848,-484),
  ABISELECT(-1344,-788),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev),
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C5[];
extern void _ZN9S19676C16D1Ev();
extern void _ZN9S19676C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C16__8S19676C5[] = {
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&_ZN9S19676C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C16D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C16__A2__8S19676C5[] = {
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C16__A11__8S19676C5[] = {
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C16__A11__8S19676C5[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C16__A2__8S19676C5[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C16__A2__8S19676C5[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__9S19676C16__8S19676C5[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C16__8S19676C5[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C16__8S19676C5[] = {
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C16__8S19676C5[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C16__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev),
};
extern void _ZN9S19676C18D1Ev();
extern void _ZN9S19676C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C18__8S19676C5[] = {
  ABISELECT(184,124),
  ABISELECT(288,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&_ZN9S19676C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C18__8S19676C5[] = {
  ABISELECT(-288,-180),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C18__8S19676C5[] = {
  ABISELECT(-184,-124),
  ABISELECT(104,56),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__A__8S19676C5[] = {
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  0,
  ABISELECT(272,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-1144,-672),
  ABISELECT(-872,-504),
  ABISELECT(-1144,-672),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-272,-168),
  ABISELECT(-272,-168),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-800,-460),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-168,-112),
  ABISELECT(104,56),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__A__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-848,-488),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void _ZN8S19676C7D1Ev();
extern void _ZN8S19676C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C7__8S19676C5[] = {
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&_ZN8S19676C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C7D0Ev,
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C5[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C7__8S19676C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C7__8S19676C5[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C7__8S19676C5[] = {
  ABISELECT(-240,-136),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C7__8S19676C5[] = {
  ABISELECT(-696,-392),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C5[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C7__8S19676C5[] = {
  ABISELECT(-720,-400),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C5[] = {
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C7__8S19676C5[] = {
  ABISELECT(-784,-440),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-784,-440),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C5[] = {
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C5[] = {
  ABISELECT(-848,-484),
  ABISELECT(-1040,-592),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__8S19676C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__8S19676C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C5[] = {
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__8S19676C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C5[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-368,-208),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-712,-420),
  ABISELECT(-872,-504),
  ABISELECT(-712,-420),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C5[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(-440,-264),
  ABISELECT(-872,-504),
  ABISELECT(-440,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__8S19676C5[] = {
  ABISELECT(-824,-476),
  ABISELECT(-872,-504),
  ABISELECT(-824,-476),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__8S19676C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__8S19676C5[] = {
  ABISELECT(-456,-256),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__8S19676C5[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__8S19676C5[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__8S19676C5[] = {
  ABISELECT(-480,-264),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__8S19676C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C5[] = {
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__8S19676C5[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C5[] = {
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__8S19676C5[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C5[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__8S19676C5[] = {
  ABISELECT(608,340),
  ABISELECT(104,56),
  ABISELECT(608,340),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__8S19676C5[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C5[] = {
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C5[] = {
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C5[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C5[] = {
  ABISELECT(680,376),
  ABISELECT(104,56),
  ABISELECT(680,376),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C5[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__8S19676C5[] = {
  ABISELECT(-344,-212),
  ABISELECT(-872,-504),
  ABISELECT(-344,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__8S19676C5[] = {
  ABISELECT(528,292),
  ABISELECT(528,292),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__8S19676C5[] = {
  ABISELECT(632,348),
  ABISELECT(104,56),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C5[] = {
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A1__8S19676C5[] = {
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C5[] = {
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C5[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C5[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C5[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C5[] = {
  ABISELECT(-848,-484),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C5[] = {
  ABISELECT(848,484),
  ABISELECT(848,484),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(-280,-172),
  ABISELECT(-872,-504),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C5[] = {
  ABISELECT(-848,-484),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__8S19676C5[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  0,
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__8S19676C5[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__8S19676C5[] = {
  ABISELECT(344,212),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(344,212),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__8S19676C5[] = {
  ABISELECT(976,560),
  ABISELECT(104,56),
  ABISELECT(976,560),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C5[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
static  VTT_ENTRY vtt_S19676C5[] = {
  {&(_ZTV8S19676C5[12]),  12,149},
  {&(_tg__ZTV9S19676C16__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C159S19676C16__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C16__A11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C16__A11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C16__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C16__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C17__9S19676C16__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C17__9S19676C16__8S19676C5[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C16__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C16__8S19676C5[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C16__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C16__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C18__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C18__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C18__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C17__A__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C10__9S19676C17__A__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C17__A__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__A__8S19676C5[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__A__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__A__8S19676C5[4]),  4,6},
  {&(_ZTV8S19676C5[41]),  41,149},
  {&(_ZTV8S19676C5[53]),  53,149},
  {&(_ZTV8S19676C5[58]),  58,149},
  {&(_ZTV8S19676C5[68]),  68,149},
  {&(_ZTV8S19676C5[147]),  147,149},
  {&(_ZTV8S19676C5[105]),  105,149},
  {&(_ZTV8S19676C5[76]),  76,149},
  {&(_ZTV8S19676C5[113]),  113,149},
  {&(_ZTV8S19676C5[119]),  119,149},
  {&(_ZTV8S19676C5[80]),  80,149},
  {&(_ZTV8S19676C5[85]),  85,149},
  {&(_ZTV8S19676C5[92]),  92,149},
  {&(_ZTV8S19676C5[98]),  98,149},
  {&(_ZTV8S19676C5[128]),  128,149},
  {&(_ZTV8S19676C5[132]),  132,149},
  {&(_ZTV8S19676C5[137]),  137,149},
  {&(_ZTV8S19676C5[47]),  47,149},
  {&(_ZTV8S19676C5[147]),  147,149},
  {&(_ZTV8S19676C5[18]),  18,149},
  {&(_ZTV8S19676C5[28]),  28,149},
  {&(_tg__ZTV8S19676C7__8S19676C5[10]),  10,12},
  {&(_tg__ZTV9S19676C148S19676C7__A2__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19676C7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C7__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C10__A1__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__8S19676C7__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C14__8S19676C7__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C5[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C7__8S19676C5[7]),  7,9},
  {&(_tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C5[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C5[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__8S19676C5[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C12__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__8S19676C5[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C5[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A1__8S19676C5[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C17__8S19676C5[8]),  8,10},
  {&(_tg__ZTV9S19676C17__8S19676C5[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C17__8S19676C5[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__8S19676C5[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__8S19676C5[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19676C5[];
extern  VTBL_ENTRY _ZTV8S19676C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C5[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C5 = {  "S19676C5", // class name
  bases_S19676C5, 40,
  &(vtc_S19676C5[0]), // expected_vtbl_contents
  &(vtt_S19676C5[0]), // expected_vtt_contents
  ABISELECT(1392,816), // object size
  NSPAIRA(_ZTI8S19676C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19676C5),149, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C5),149, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C20  : virtual S19676C8 , S19676C12 {
  short  :0;
  virtual  ~S19676C20(); // _ZN9S19676C20D2Ev
  S19676C20(); // tgen
};
//SIG(-1 S19676C20) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC5{ VBC2 BC4 vd Fi} vd Fs:0}


 S19676C20 ::~S19676C20(){ note_dtor("S19676C20", this);}
S19676C20 ::S19676C20(){ note_ctor("S19676C20", this);} // tgen

static void Test_S19676C20()
{
  extern Class_Descriptor cd_S19676C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19676C20, buf);
    S19676C20 *dp, &lv = *(dp=new (buf) S19676C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19676C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C20)");
    check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(128,64), "S19676C20");
    check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(128,64), "S19676C20");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(128,64), "S19676C20");
    check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(16,8), "S19676C20");
    check_base_class_offset(lv, (S19676C8*), ABISELECT(16,8), "S19676C20");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(16,8), "S19676C20");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), 0, "S19676C20");
    check_base_class_offset(lv, (S19676C12*), 0, "S19676C20");
    test_class_info(&lv, &cd_S19676C20);
    dp->~S19676C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C20(Test_S19676C20, "S19676C20", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19676C20C1Ev();
extern void _ZN9S19676C20D2Ev();
Name_Map name_map_S19676C20[] = {
  NSPAIR(_ZN9S19676C20C1Ev),
  NSPAIR(_ZN9S19676C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
static Base_Class bases_S19676C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    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
    4, //immediately_derived
  0, 0},
  {&cd_S19676C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C20[];
extern void _ZN9S19676C20D1Ev();
extern void _ZN9S19676C20D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C20D1Ev,_ZThn8_N9S19676C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C20D0Ev,_ZThn8_N9S19676C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C20D1Ev,_ZThn64_N9S19676C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C20D0Ev,_ZThn64_N9S19676C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C20[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&_ZN9S19676C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C20D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C20[];
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C20[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A1__9S19676C20[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A1__9S19676C20[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C20[] = {
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C20[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C20[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C20[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C20[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
static  VTT_ENTRY vtt_S19676C20[] = {
  {&(_ZTV9S19676C20[4]),  4,17},
  {&(_tg__ZTV9S19676C12__9S19676C20[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A1__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A1__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C20[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C20[3]),  3,5},
  {&(_ZTV9S19676C20[10]),  10,17},
  {&(_ZTV9S19676C20[15]),  15,17},
  {&(_tg__ZTV8S19676C8__9S19676C20[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C20[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C20[];
extern  VTBL_ENTRY _ZTV9S19676C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C20[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D0Ev,_ZThn64_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C12D1Ev,_ZThn64_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D0Ev,_ZThn8_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C12D1Ev,_ZThn8_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D0Ev,_ZThn64_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C10D1Ev,_ZThn64_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C20D0Ev,_ZThn64_N9S19676C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C20D1Ev,_ZThn64_N9S19676C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C20D0Ev,_ZThn8_N9S19676C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19676C20D1Ev,_ZThn8_N9S19676C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C20 = {  "S19676C20", // class name
  bases_S19676C20, 5,
  &(vtc_S19676C20[0]), // expected_vtbl_contents
  &(vtt_S19676C20[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19676C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19676C20),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C20),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C19  : S19676C15 , S19676C11 , virtual S19676C20 {
  virtual  ~S19676C19(); // _ZN9S19676C19D2Ev
  S19676C19(); // tgen
};
//SIG(-1 S19676C19) C1{ BC2{ VBC3{ vd m Fp Fi Fc FD} VBC4{ VBC3 BC5{ VBC3 vd} Fp[10] Fi FL} BC5 vd Fp Fi FC3[3] Fi[7]} BC6{ VBC5 VBC7{ VBC4 BC5 vd Fi} BC4 BC8{ VBC4 VBC9{ BC3 VBC5 VBC4 BC7 vd Fi} BC2 BC3 BC5 vd} BC9 vd Fs} VBC10{ VBC4 BC7 vd Fs:0} vd}


 S19676C19 ::~S19676C19(){ note_dtor("S19676C19", this);}
S19676C19 ::S19676C19(){ note_ctor("S19676C19", this);} // tgen

static void Test_S19676C19()
{
  extern Class_Descriptor cd_S19676C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,132)];
    init_test(&cd_S19676C19, buf);
    S19676C19 *dp, &lv = *(dp=new (buf) S19676C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,524), "sizeof(S19676C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C19)");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(672,380), "S19676C19");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(672,380), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C20*), ABISELECT(720,408), "S19676C19");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C20*), ABISELECT(720,408), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*), 0, "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C15*), 0, "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(824,464), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(824,464), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(824,464), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(832,468), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(832,468), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(208,124), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(208,124), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(848,476), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(896,504), "S19676C19");
    /*is_ambiguous_... S19676C19::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(896,504), "S19676C19");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(848,476), "S19676C19");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(320,180), "S19676C19");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(320,180), "S19676C19");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(528,304), "S19676C19");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(576,332), "S19676C19");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(320,180), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(592,336), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(640,364), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(640,364), "S19676C19");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(592,336), "S19676C19");
    check_base_class_offset(lv, (S19676C11*), ABISELECT(208,124), "S19676C19");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(912,516), "S19676C19");
    check_base_class_offset(lv, (S19676C12*)(S19676C20*), ABISELECT(912,516), "S19676C19");
    check_base_class_offset(lv, (S19676C20*), ABISELECT(912,516), "S19676C19");
    test_class_info(&lv, &cd_S19676C19);
    dp->~S19676C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C19(Test_S19676C19, "S19676C19", ABISELECT(928,524));

#else // __cplusplus

extern void _ZN9S19676C19C1Ev();
extern void _ZN9S19676C19D2Ev();
Name_Map name_map_S19676C19[] = {
  NSPAIR(_ZN9S19676C19C1Ev),
  NSPAIR(_ZN9S19676C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C20;
extern VTBL_ENTRY _ZTI9S19676C20[];
extern  VTBL_ENTRY _ZTV9S19676C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C20[];
static Base_Class bases_S19676C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(672,380), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(720,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(720,408), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19676C10,    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
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19676C15,    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_S19676C10,    ABISELECT(824,464), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(832,468), //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(832,468), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C10,    ABISELECT(896,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(896,504), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(848,476), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(320,180), //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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(320,180), //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
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(528,304), //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
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(576,332), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(320,180), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(592,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
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(640,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(640,364), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(592,336), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(912,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(912,516), //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
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C20,    ABISELECT(912,516), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19676C19[];
extern void _ZN9S19676C19D1Ev();
extern void _ZN9S19676C19D0Ev();
extern void ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C19D1Ev,_ZThn304_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C19D0Ev,_ZThn304_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn672_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn672_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn720_N9S19676C19D1Ev,_ZThn408_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn720_N9S19676C19D0Ev,_ZThn408_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn824_N9S19676C19D1Ev,_ZThn464_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn824_N9S19676C19D0Ev,_ZThn464_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn832_N9S19676C19D1Ev,_ZThn468_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn832_N9S19676C19D0Ev,_ZThn468_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn848_N9S19676C19D1Ev,_ZThn476_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn848_N9S19676C19D0Ev,_ZThn476_N9S19676C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn912_N9S19676C19D1Ev,_ZThn516_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn912_N9S19676C19D0Ev,_ZThn516_N9S19676C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C19[] = {
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&_ZN9S19676C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C19D0Ev,
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev),
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N9S19676C19D1Ev,_ZThn304_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N9S19676C19D0Ev,_ZThn304_N9S19676C19D0Ev),
  ABISELECT(96,48),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev),
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev),
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev),
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
  ABISELECT(-824,-464),
  ABISELECT(-152,-84),
  ABISELECT(-824,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
  ABISELECT(-832,-468),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
  ABISELECT(-848,-476),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-896,-504),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev),
  ABISELECT(-912,-516),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-912,-516),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S19676C19[];
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C15__9S19676C19[] = {
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C15__A1__9S19676C19[] = {
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn672_N9S19676C10D1Ev,_ZThn380_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn672_N9S19676C10D0Ev,_ZThn380_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C15__A1__9S19676C19[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn672_N9S19676C15D1Ev,_ZThn380_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn672_N9S19676C15D0Ev,_ZThn380_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C15__9S19676C19[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn720_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn720_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C15__9S19676C19[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__9S19676C19[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__9S19676C19[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A4__9S19676C19[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn256_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn256_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A4__9S19676C19[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn256_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn256_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__9S19676C19[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__A1__9S19676C19[] = {
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[] = {
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn200_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn200_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__A1__9S19676C19[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn400_N9S19676C15D1Ev,_ZThn228_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn400_N9S19676C15D0Ev,_ZThn228_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__A1__9S19676C19[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn48_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn48_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A7__9S19676C19[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn400_N9S19676C13D1Ev,_ZThn228_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn400_N9S19676C13D0Ev,_ZThn228_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-528,-296),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn504_N9S19676C13D1Ev,_ZThn284_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn504_N9S19676C13D0Ev,_ZThn284_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-504,-284),
  ABISELECT(-152,-84),
  ABISELECT(-504,-284),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__9S19676C19[] = {
  ABISELECT(96,48),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__9S19676C19[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__9S19676C19[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn232_N9S19676C14D1Ev,_ZThn128_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn232_N9S19676C14D0Ev,_ZThn128_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(-232,-128),
  ABISELECT(-152,-84),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__9S19676C19[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn616_N9S19676C11D1Ev,_ZThn340_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn616_N9S19676C11D0Ev,_ZThn340_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__9S19676C19[] = {
  ABISELECT(-616,-340),
  ABISELECT(-152,-84),
  ABISELECT(-616,-340),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__9S19676C19[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn624_N9S19676C11D1Ev,_ZThn344_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn624_N9S19676C11D0Ev,_ZThn344_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__9S19676C19[] = {
  ABISELECT(-624,-344),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-624,-344),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn284_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn284_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__9S19676C19[] = {
  ABISELECT(-512,-284),
  ABISELECT(-48,-28),
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__9S19676C19[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__9S19676C19[] = {
  ABISELECT(-640,-352),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__9S19676C19[] = {
  ABISELECT(96,48),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__9S19676C19[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__9S19676C19[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C19[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__9S19676C19[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C19[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__9S19676C19[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A2__9S19676C19[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A2__9S19676C19[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C19[] = {
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A3__9S19676C19[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A3__9S19676C19[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__9S19676C19[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__9S19676C19[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C19[] = {
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A5__9S19676C19[] = {
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A5__9S19676C19[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C19[] = {
  ABISELECT(176,96),
  ABISELECT(-48,-28),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C19[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__9S19676C19[] = {
  ABISELECT(24,12),
  ABISELECT(-152,-84),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__9S19676C19[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__9S19676C19[] = {
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__9S19676C19[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C20D1Ev();
extern void _ZN9S19676C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C20__9S19676C19[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&_ZN9S19676C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C20D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C20__A3__9S19676C19[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C20__A9__9S19676C19[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A9__9S19676C19[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C20__A3__9S19676C19[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C20__A3__9S19676C19[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C20__9S19676C19[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C20__9S19676C19[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev),
};
static  VTT_ENTRY vtt_S19676C19[] = {
  {&(_ZTV9S19676C19[8]),  8,94},
  {&(_tg__ZTV9S19676C15__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C15__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C15__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C15__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C15__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C11__9S19676C19[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A4__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A4__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A6__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A7__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__9S19676C19[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__9S19676C19[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__9S19676C19[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__9S19676C19[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__9S19676C19[4]),  4,6},
  {&(_ZTV9S19676C19[52]),  52,94},
  {&(_ZTV9S19676C19[58]),  58,94},
  {&(_ZTV9S19676C19[17]),  17,94},
  {&(_ZTV9S19676C19[64]),  64,94},
  {&(_ZTV9S19676C19[71]),  71,94},
  {&(_ZTV9S19676C19[25]),  25,94},
  {&(_ZTV9S19676C19[79]),  79,94},
  {&(_ZTV9S19676C19[85]),  85,94},
  {&(_ZTV9S19676C19[34]),  34,94},
  {&(_ZTV9S19676C19[41]),  41,94},
  {&(_ZTV9S19676C19[47]),  47,94},
  {&(_ZTV9S19676C19[92]),  92,94},
  {&(_tg__ZTV8S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C10__A2__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A2__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A3__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A3__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C19[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A5__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A5__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__9S19676C19[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C20__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C20__A3__9S19676C19[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C20__A9__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A9__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C20__A3__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C20__A3__9S19676C19[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C20__9S19676C19[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C20__9S19676C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19676C19[];
extern  VTBL_ENTRY _ZTV9S19676C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C19[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D0Ev,_ZThn352_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N9S19676C11D1Ev,_ZThn352_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19676C11D0Ev,_ZThn344_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N9S19676C11D1Ev,_ZThn344_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D0Ev,_ZThn284_N9S19676C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N9S19676C11D0Ev,_ZThn340_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C11D1Ev,_ZThn284_N9S19676C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N9S19676C11D1Ev,_ZThn340_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D0Ev,_ZThn44_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C14D1Ev,_ZThn44_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D0Ev,_ZThn72_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19676C14D0Ev,_ZThn128_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19676C14D1Ev,_ZThn72_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19676C14D1Ev,_ZThn128_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D0Ev,_ZThn16_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C12D1Ev,_ZThn16_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D0Ev,_ZThn44_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19676C12D1Ev,_ZThn44_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D0Ev,_ZThn296_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N9S19676C13D1Ev,_ZThn296_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D0Ev,_ZThn200_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C13D1Ev,_ZThn200_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19676C13D0Ev,_ZThn284_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C13D0Ev,_ZThn228_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N9S19676C13D1Ev,_ZThn284_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C13D1Ev,_ZThn228_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D0Ev,_ZThn256_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19676C8D1Ev,_ZThn256_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C15D0Ev,_ZThn228_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19676C15D1Ev,_ZThn228_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D0Ev,_ZThn200_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C15D0Ev,_ZThn380_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C15D1Ev,_ZThn200_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C15D1Ev,_ZThn380_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D0Ev,_ZThn16_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D0Ev,_ZThn48_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D0Ev,_ZThn200_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D0Ev,_ZThn256_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C10D0Ev,_ZThn380_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19676C10D1Ev,_ZThn16_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19676C10D1Ev,_ZThn48_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S19676C10D1Ev,_ZThn200_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N9S19676C10D1Ev,_ZThn256_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C10D1Ev,_ZThn380_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S19676C19D0Ev,_ZThn476_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N9S19676C19D1Ev,_ZThn476_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N9S19676C19D0Ev,_ZThn516_N9S19676C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19676C19D0Ev,_ZThn468_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N9S19676C19D1Ev,_ZThn516_N9S19676C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N9S19676C19D1Ev,_ZThn468_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C19D0Ev,_ZThn464_N9S19676C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C19D0Ev,_ZThn408_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C19D1Ev,_ZThn464_N9S19676C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S19676C19D1Ev,_ZThn408_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C19 = {  "S19676C19", // class name
  bases_S19676C19, 27,
  &(vtc_S19676C19[0]), // expected_vtbl_contents
  &(vtt_S19676C19[0]), // expected_vtt_contents
  ABISELECT(928,524), // object size
  NSPAIRA(_ZTI9S19676C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19676C19),94, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19676C19),86, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C4  : virtual S19676C5 , S19676C13 , virtual S19676C19 {
  int s19676c4f0;
  virtual  ~S19676C4(); // _ZN8S19676C4D2Ev
  S19676C4(); // tgen
};
//SIG(-1 S19676C4) C1{ VBC2{ BC3{ m} VBC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} BC7{ VBC6 vd} Fp[10] Fi FL} VBC8{ VBC7 VBC9{ VBC5 BC7 vd Fi} BC5 BC10{ VBC5 VBC11{ BC6 VBC7 VBC5 BC9 vd Fi} BC12{ VBC6 VBC5 BC7 vd Fp Fi FC6[3] Fi[7]} BC6 BC7 vd} BC11 vd Fs} VBC10 VBC13{ m FC14{} Fi[3]} BC11 Fs Fp[2]} BC15{ VBC16{ VBC7 VBC11 VBC13 vd Fi} BC12 vd} BC17{ VBC6 VBC5 vd Fi FC14} BC16 vd Fi[10] FD} BC10 VBC18{ BC12 BC8 VBC19{ VBC5 BC9 vd Fs:0} vd} vd Fi}


 S19676C4 ::~S19676C4(){ note_dtor("S19676C4", this);}
S19676C4 ::S19676C4(){ note_ctor("S19676C4", this);} // tgen

static void Test_S19676C4()
{
  extern Class_Descriptor cd_S19676C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(148,342)];
    init_test(&cd_S19676C4, buf);
    S19676C4 *dp, &lv = *(dp=new (buf) S19676C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2352,1364), "sizeof(S19676C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C4)");
    check_base_class_offset(lv, (S4228C37*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(768,464), "S19676C4");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(768,464), "S19676C4");
    check_base_class_offset(lv, (S19676C9*)(S19676C18*)(S19676C5*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    check_base_class_offset(lv, (S19676C9*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(768,464), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C7*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C7*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C18*)(S19676C5*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C20*), ABISELECT(664,408), "S19676C4");
    check_base_class_offset(lv, (S19676C8*)(S19676C12*)(S19676C20*), ABISELECT(664,408), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C7*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C17*)(S19676C5*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C11*)(S19676C19*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*), ABISELECT(1272,748), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*), ABISELECT(1272,748), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C12 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C11*)(S19676C19*), ABISELECT(1272,748), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*), ABISELECT(816,492), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*), ABISELECT(816,492), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*), ABISELECT(1344,784), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*), ABISELECT(1344,784), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C17*)(S19676C5*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C13*), ABISELECT(1296,756), "S19676C4");
    check_base_class_offset(lv, (S19676C14*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1296,756), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(928,548), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*), ABISELECT(928,548), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*), ABISELECT(1136,672), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*), ABISELECT(1184,700), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C13*)(S19676C11*), ABISELECT(928,548), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*), ABISELECT(1200,704), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(1248,732), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*), ABISELECT(1248,732), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C11 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*), ABISELECT(1200,704), "S19676C4");
    check_base_class_offset(lv, (S19676C11*)(S19676C7*), ABISELECT(816,492), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), ABISELECT(1360,796), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), ABISELECT(1360,796), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(1568,920), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(1616,948), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*)(S19676C7*), ABISELECT(1360,796), "S19676C4");
    check_base_class_offset(lv, (S19676C2*)(S19676C7*), ABISELECT(1624,952), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*), ABISELECT(1624,952), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C2*)(S19676C17*)(S19676C5*), ABISELECT(1624,952), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C7*), ABISELECT(576,356), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(624,384), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C7*), ABISELECT(624,384), "S19676C4");
    /*is_ambiguous_... S19676C7::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C7*), ABISELECT(576,356), "S19676C4");
    check_base_class_offset(lv, (S19676C7*)(S19676C5*), ABISELECT(576,356), "S19676C4");
    check_base_class_offset(lv, (S19676C17*)(S19676C16*)(S19676C5*), ABISELECT(1640,968), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    check_base_class_offset(lv, (S19676C15*)(S19676C16*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    check_base_class_offset(lv, (S19676C16*)(S19676C5*), ABISELECT(272,160), "S19676C4");
    check_base_class_offset(lv, (S19676C18*)(S19676C5*), ABISELECT(480,284), "S19676C4");
    /*is_ambiguous_... S19676C5::S19676C17 */ AMB_check_base_class_offset(lv, (S19676C17*)(S19676C5*), ABISELECT(496,296), "S19676C4");
    check_base_class_offset(lv, (S19676C5*), ABISELECT(272,160), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*), 0, "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C13*), 0, "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*), ABISELECT(208,124), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*), ABISELECT(256,152), "S19676C4");
    /*is_ambiguous_... S19676C4::S19676C13 */ AMB_check_base_class_offset(lv, (S19676C13*), 0, "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C19*), ABISELECT(1664,976), "S19676C4");
    /*is_ambiguous_... S19676C19::S19676C15 */ AMB_check_base_class_offset(lv, (S19676C15*)(S19676C19*), ABISELECT(1664,976), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(1872,1100), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C8 */ AMB_check_base_class_offset(lv, (S19676C8*)(S19676C11*)(S19676C19*), ABISELECT(1872,1100), "S19676C4");
    /*is_ambiguous_... S19676C15::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1984,1156), "S19676C4");
    check_base_class_offset(lv, (S19676C15*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1984,1156), "S19676C4");
    /*is_ambiguous_... S19676C13::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(2192,1280), "S19676C4");
    /*is_ambiguous_... S19676C13::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(2240,1308), "S19676C4");
    check_base_class_offset(lv, (S19676C13*)(S19676C11*)(S19676C19*), ABISELECT(1984,1156), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2256,1312), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2304,1340), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C12*)(S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2304,1340), "S19676C4");
    /*is_ambiguous_... S19676C11::S19676C14 */ AMB_check_base_class_offset(lv, (S19676C14*)(S19676C11*)(S19676C19*), ABISELECT(2256,1312), "S19676C4");
    check_base_class_offset(lv, (S19676C11*)(S19676C19*), ABISELECT(1872,1100), "S19676C4");
    /*is_ambiguous_... S19676C12::S19676C10 */ AMB_check_base_class_offset(lv, (S19676C10*)(S19676C12*)(S19676C20*), ABISELECT(2328,1356), "S19676C4");
    check_base_class_offset(lv, (S19676C12*)(S19676C20*), ABISELECT(2328,1356), "S19676C4");
    check_base_class_offset(lv, (S19676C20*)(S19676C19*), ABISELECT(2328,1356), "S19676C4");
    check_base_class_offset(lv, (S19676C19*), ABISELECT(1664,976), "S19676C4");
    check_field_offset(lv, s19676c4f0, ABISELECT(264,156), "S19676C4.s19676c4f0");
    test_class_info(&lv, &cd_S19676C4);
    dp->~S19676C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C4(Test_S19676C4, "S19676C4", ABISELECT(2352,1364));

#else // __cplusplus

extern void _ZN8S19676C4C1Ev();
extern void _ZN8S19676C4D2Ev();
Name_Map name_map_S19676C4[] = {
  NSPAIR(_ZN8S19676C4C1Ev),
  NSPAIR(_ZN8S19676C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C7;
extern VTBL_ENTRY _ZTI8S19676C7[];
extern  VTBL_ENTRY _ZTV8S19676C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C7[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C16;
extern VTBL_ENTRY _ZTI9S19676C16[];
extern  VTBL_ENTRY _ZTV9S19676C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C16[];
extern Class_Descriptor cd_S19676C18;
extern VTBL_ENTRY _ZTI9S19676C18[];
extern  VTBL_ENTRY _ZTV9S19676C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C18[];
extern Class_Descriptor cd_S19676C17;
extern VTBL_ENTRY _ZTI9S19676C17[];
extern  VTBL_ENTRY _ZTV9S19676C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C17[];
extern Class_Descriptor cd_S19676C5;
extern VTBL_ENTRY _ZTI8S19676C5[];
extern  VTBL_ENTRY _ZTV8S19676C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C5[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C8;
extern VTBL_ENTRY _ZTI8S19676C8[];
extern  VTBL_ENTRY _ZTV8S19676C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C8[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C15;
extern VTBL_ENTRY _ZTI9S19676C15[];
extern  VTBL_ENTRY _ZTV9S19676C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C13;
extern VTBL_ENTRY _ZTI9S19676C13[];
extern  VTBL_ENTRY _ZTV9S19676C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C13[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C14;
extern VTBL_ENTRY _ZTI9S19676C14[];
extern  VTBL_ENTRY _ZTV9S19676C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C14[];
extern Class_Descriptor cd_S19676C11;
extern VTBL_ENTRY _ZTI9S19676C11[];
extern  VTBL_ENTRY _ZTV9S19676C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C11[];
extern Class_Descriptor cd_S19676C10;
extern VTBL_ENTRY _ZTI9S19676C10[];
extern  VTBL_ENTRY _ZTV9S19676C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C10[];
extern Class_Descriptor cd_S19676C12;
extern VTBL_ENTRY _ZTI9S19676C12[];
extern  VTBL_ENTRY _ZTV9S19676C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C12[];
extern Class_Descriptor cd_S19676C20;
extern VTBL_ENTRY _ZTI9S19676C20[];
extern  VTBL_ENTRY _ZTV9S19676C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C20[];
extern Class_Descriptor cd_S19676C19;
extern VTBL_ENTRY _ZTI9S19676C19[];
extern  VTBL_ENTRY _ZTV9S19676C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19676C19[];
static Base_Class bases_S19676C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(272,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
    40, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(768,464), //bcp->offset
    82, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(664,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(664,408), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1640,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1272,748), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    161, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1272,748), //bcp->offset
    127, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    160, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(816,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(816,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1296,756), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1344,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1344,784), //bcp->offset
    142, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(1296,756), //bcp->offset
    134, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    165, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(928,548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(928,548), //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
    14, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1136,672), //bcp->offset
    105, //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
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1184,700), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(928,548), //bcp->offset
    97, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1200,704), //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1248,732), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(1248,732), //bcp->offset
    121, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(1200,704), //bcp->offset
    114, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(816,492), //bcp->offset
    87, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(1360,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    177, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1360,796), //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
    27, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1568,920), //bcp->offset
    157, //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
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1616,948), //bcp->offset
    161, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(1360,796), //bcp->offset
    148, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1624,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
    33, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(576,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
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(624,384), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(624,384), //bcp->offset
    70, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(576,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19676C7,    ABISELECT(576,356), //bcp->offset
    57, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S19676C17,    ABISELECT(1640,968), //bcp->offset
    166, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19676C10,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(272,160), //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
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19676C16,    ABISELECT(272,160), //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
    36, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C18,    ABISELECT(480,284), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C17,    ABISELECT(496,296), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19676C5,    ABISELECT(272,160), //bcp->offset
    26, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S19676C15,    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
    59, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //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
    60, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(256,152), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S19676C13,    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
    62, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C10,    ABISELECT(1664,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    197, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1664,976), //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
    44, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1872,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19676C8,    ABISELECT(1872,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(1984,1156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19676C15,    ABISELECT(1984,1156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    207, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(2192,1280), //bcp->offset
    204, //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
    49, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(2240,1308), //bcp->offset
    208, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    212, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19676C13,    ABISELECT(1984,1156), //bcp->offset
    196, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    206, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(2256,1312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(2304,1340), //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
    53, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(2304,1340), //bcp->offset
    220, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    221, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19676C14,    ABISELECT(2256,1312), //bcp->offset
    213, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    220, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S19676C11,    ABISELECT(1872,1100), //bcp->offset
    187, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    201, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19676C10,    ABISELECT(2328,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    254, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S19676C12,    ABISELECT(2328,1356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    253, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S19676C20,    ABISELECT(2328,1356), //bcp->offset
    226, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    252, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S19676C19,    ABISELECT(1664,976), //bcp->offset
    176, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19676C4[];
extern void _ZN8S19676C4D1Ev();
extern void _ZN8S19676C4D0Ev();
extern void ABISELECT(_ZThn208_N8S19676C4D1Ev,_ZThn124_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn208_N8S19676C4D0Ev,_ZThn124_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S19676C4D1Ev,_ZThn152_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S19676C4D0Ev,_ZThn152_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n104_N8S19676C4D1Ev,_ZTv0_n52_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn272_N8S19676C4D1Ev,_ZThn160_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19676C4D0Ev,_ZTv0_n52_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn272_N8S19676C4D0Ev,_ZThn160_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n104_N8S19676C4D1Ev,_ZTvn124_n52_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn208_n104_N8S19676C4D0Ev,_ZTvn124_n52_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn496_N8S19676C4D1Ev,_ZThn296_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn496_N8S19676C4D0Ev,_ZThn296_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C4D1Ev,_ZTv0_n44_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn576_N8S19676C4D1Ev,_ZThn356_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C4D0Ev,_ZTv0_n44_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn576_N8S19676C4D0Ev,_ZThn356_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N8S19676C4D1Ev,_ZTvn28_n44_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19676C4D0Ev,_ZTvn28_n44_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn664_N8S19676C4D1Ev,_ZThn408_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn664_N8S19676C4D0Ev,_ZThn408_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C4D1Ev,_ZTv0_n12_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn768_N8S19676C4D1Ev,_ZThn464_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C4D0Ev,_ZTv0_n12_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn768_N8S19676C4D0Ev,_ZThn464_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C4D1Ev,_ZTv0_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn816_N8S19676C4D1Ev,_ZThn492_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C4D0Ev,_ZTv0_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn816_N8S19676C4D0Ev,_ZThn492_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S19676C4D1Ev,_ZTvn56_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C4D0Ev,_ZTvn56_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C4D1Ev,_ZTvn180_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C4D0Ev,_ZTvn180_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C4D1Ev,_ZTvn208_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C4D0Ev,_ZTvn208_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C4D1Ev,_ZTvn212_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C4D0Ev,_ZTvn212_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C4D1Ev,_ZTvn240_n32_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C4D0Ev,_ZTvn240_n32_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1272_N8S19676C4D1Ev,_ZThn748_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1272_N8S19676C4D0Ev,_ZThn748_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C4D1Ev,_ZTv0_n24_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1296_N8S19676C4D1Ev,_ZThn756_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C4D0Ev,_ZTv0_n24_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1296_N8S19676C4D0Ev,_ZThn756_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19676C4D1Ev,_ZTvn28_n24_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C4D0Ev,_ZTvn28_n24_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S19676C4D1Ev,_ZTv0_n28_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1360_N8S19676C4D1Ev,_ZThn796_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C4D0Ev,_ZTv0_n28_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1360_N8S19676C4D0Ev,_ZThn796_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S19676C4D1Ev,_ZTvn124_n28_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C4D0Ev,_ZTvn124_n28_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C4D1Ev,_ZTvn152_n28_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C4D0Ev,_ZTvn152_n28_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1640_N8S19676C4D1Ev,_ZThn968_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1640_N8S19676C4D0Ev,_ZThn968_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19676C4D1Ev,_ZTv0_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn1664_N8S19676C4D1Ev,_ZThn976_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19676C4D0Ev,_ZTv0_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn1664_N8S19676C4D0Ev,_ZThn976_N8S19676C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n72_N8S19676C4D1Ev,_ZTvn124_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N8S19676C4D0Ev,_ZTvn124_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19676C4D1Ev,_ZTvn180_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19676C4D0Ev,_ZTvn180_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19676C4D1Ev,_ZTvn304_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19676C4D0Ev,_ZTvn304_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19676C4D1Ev,_ZTvn332_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19676C4D0Ev,_ZTvn332_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19676C4D1Ev,_ZTvn336_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19676C4D0Ev,_ZTvn336_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19676C4D1Ev,_ZTvn364_n36_N8S19676C4D1Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19676C4D0Ev,_ZTvn364_n36_N8S19676C4D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev)();
extern void ABISELECT(_ZThn2328_N8S19676C4D1Ev,_ZThn1356_N8S19676C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev)();
extern void ABISELECT(_ZThn2328_N8S19676C4D0Ev,_ZThn1356_N8S19676C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19676C4[] = {
  ABISELECT(2328,1356),
  ABISELECT(1664,976),
  ABISELECT(1640,968),
  ABISELECT(1624,952),
  ABISELECT(1360,796),
  ABISELECT(1272,748),
  ABISELECT(816,492),
  ABISELECT(576,356),
  ABISELECT(272,160),
  ABISELECT(1640,968),
  ABISELECT(1296,756),
  ABISELECT(664,408),
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&_ZN8S19676C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C4D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C4D1Ev,_ZThn124_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C4D0Ev,_ZThn124_N8S19676C4D0Ev),
  ABISELECT(512,312),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19676C4D1Ev,_ZThn152_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19676C4D0Ev,_ZThn152_N8S19676C4D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(1088,636),
  ABISELECT(1000,588),
  ABISELECT(544,332),
  ABISELECT(304,196),
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19676C4D1Ev,_ZTv0_n52_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19676C4D0Ev,_ZTv0_n52_N8S19676C4D0Ev),
  ABISELECT(184,124),
  ABISELECT(288,180),
  ABISELECT(-480,-284),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n104_N8S19676C4D1Ev,_ZTvn124_n52_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n104_N8S19676C4D0Ev,_ZTvn124_n52_N8S19676C4D0Ev),
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  ABISELECT(-496,-296),
  ABISELECT(272,168),
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev),
  ABISELECT(-576,-356),
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  ABISELECT(-576,-356),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C4D1Ev,_ZTv0_n44_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C4D0Ev,_ZTv0_n44_N8S19676C4D0Ev),
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-624,-384),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C4D1Ev,_ZTvn28_n44_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C4D0Ev,_ZTvn28_n44_N8S19676C4D0Ev),
  ABISELECT(-664,-408),
  ABISELECT(104,56),
  ABISELECT(-664,-408),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev),
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C4D1Ev,_ZTv0_n12_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C4D0Ev,_ZTv0_n12_N8S19676C4D0Ev),
  ABISELECT(-816,-492),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-816,-492),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C4D1Ev,_ZTv0_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C4D0Ev,_ZTv0_n32_N8S19676C4D0Ev),
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-928,-548),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C4D1Ev,_ZTvn56_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C4D0Ev,_ZTvn56_n32_N8S19676C4D0Ev),
  ABISELECT(-1136,-672),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C4D1Ev,_ZTvn180_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C4D0Ev,_ZTvn180_n32_N8S19676C4D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-1184,-700),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C4D1Ev,_ZTvn208_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C4D0Ev,_ZTvn208_n32_N8S19676C4D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-1200,-704),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C4D1Ev,_ZTvn212_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C4D0Ev,_ZTvn212_n32_N8S19676C4D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-1248,-732),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C4D1Ev,_ZTvn240_n32_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C4D0Ev,_ZTvn240_n32_N8S19676C4D0Ev),
  ABISELECT(-1272,-748),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-1272,-748),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev),
  ABISELECT(-1296,-756),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1296,-756),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C4D1Ev,_ZTv0_n24_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C4D0Ev,_ZTv0_n24_N8S19676C4D0Ev),
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1344,-784),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C4D1Ev,_ZTvn28_n24_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C4D0Ev,_ZTvn28_n24_N8S19676C4D0Ev),
  ABISELECT(-1360,-796),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-1360,-796),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C4D1Ev,_ZTv0_n28_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C4D0Ev,_ZTv0_n28_N8S19676C4D0Ev),
  ABISELECT(-1568,-920),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C4D1Ev,_ZTvn124_n28_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C4D0Ev,_ZTvn124_n28_N8S19676C4D0Ev),
  ABISELECT(-848,-484),
  ABISELECT(-1616,-948),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C4D1Ev,_ZTvn152_n28_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C4D0Ev,_ZTvn152_n28_N8S19676C4D0Ev),
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1640,-968),
  ABISELECT(-872,-504),
  ABISELECT(-1640,-968),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev),
  ABISELECT(-1664,-976),
  ABISELECT(664,380),
  ABISELECT(-368,-220),
  ABISELECT(-392,-228),
  ABISELECT(-24,-8),
  ABISELECT(-1000,-568),
  ABISELECT(-896,-512),
  ABISELECT(-1664,-976),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19676C4D1Ev,_ZTv0_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19676C4D0Ev,_ZTv0_n36_N8S19676C4D0Ev),
  ABISELECT(-576,-344),
  ABISELECT(-1208,-692),
  ABISELECT(-600,-352),
  ABISELECT(-232,-132),
  ABISELECT(-1104,-636),
  ABISELECT(-1872,-1100),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19676C4D1Ev,_ZTvn124_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19676C4D0Ev,_ZTvn124_n36_N8S19676C4D0Ev),
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  ABISELECT(-1984,-1156),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19676C4D1Ev,_ZTvn180_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19676C4D0Ev,_ZTvn180_n36_N8S19676C4D0Ev),
  ABISELECT(-2192,-1280),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19676C4D1Ev,_ZTvn304_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19676C4D0Ev,_ZTvn304_n36_N8S19676C4D0Ev),
  ABISELECT(-1472,-844),
  ABISELECT(-2240,-1308),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19676C4D1Ev,_ZTvn332_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19676C4D0Ev,_ZTvn332_n36_N8S19676C4D0Ev),
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  ABISELECT(-2256,-1312),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19676C4D1Ev,_ZTvn336_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19676C4D0Ev,_ZTvn336_n36_N8S19676C4D0Ev),
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-2304,-1340),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19676C4D1Ev,_ZTvn364_n36_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19676C4D0Ev,_ZTvn364_n36_N8S19676C4D0Ev),
  ABISELECT(-2328,-1356),
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  ABISELECT(-2328,-1356),
  (VTBL_ENTRY)&(_ZTI8S19676C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19676C4[];
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A__8S19676C4[] = {
  ABISELECT(1640,968),
  ABISELECT(1296,756),
  ABISELECT(664,408),
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A3__8S19676C4[] = {
  ABISELECT(664,408),
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A12__8S19676C4[] = {
  ABISELECT(768,464),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn768_N9S19676C10D1Ev,_ZThn464_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn768_N9S19676C10D0Ev,_ZThn464_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A12__8S19676C4[] = {
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn768_N9S19676C15D1Ev,_ZThn464_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn768_N9S19676C15D0Ev,_ZThn464_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A3__8S19676C4[] = {
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn664_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn664_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A3__8S19676C4[] = {
  ABISELECT(-664,-408),
  ABISELECT(104,56),
  ABISELECT(-664,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A13__8S19676C4[] = {
  ABISELECT(512,312),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn512_N9S19676C10D1Ev,_ZThn312_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn512_N9S19676C10D0Ev,_ZThn312_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A13__8S19676C4[] = {
  ABISELECT(-512,-312),
  ABISELECT(-512,-312),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn664_N9S19676C13D1Ev,_ZThn408_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn664_N9S19676C13D0Ev,_ZThn408_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-664,-408),
  ABISELECT(104,56),
  ABISELECT(-664,-408),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn768_N9S19676C13D1Ev,_ZThn464_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn768_N9S19676C13D0Ev,_ZThn464_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-768,-464),
  ABISELECT(-768,-464),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn1296_N9S19676C13D1Ev,_ZThn756_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn1296_N9S19676C13D0Ev,_ZThn756_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-1296,-756),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1296,-756),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn1640_N9S19676C13D1Ev,_ZThn968_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn1640_N9S19676C13D0Ev,_ZThn968_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-1640,-968),
  ABISELECT(-872,-504),
  ABISELECT(-1640,-968),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1344,-784),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A__8S19676C4[] = {
  ABISELECT(512,312),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN8S19676C5D1Ev();
extern void _ZN8S19676C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C5__8S19676C4[] = {
  ABISELECT(1088,636),
  ABISELECT(1000,588),
  ABISELECT(544,332),
  ABISELECT(304,196),
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&_ZN8S19676C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C5D0Ev,
};
extern void _ZN9S19676C16D1Ev();
extern void _ZN9S19676C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(1352,792),
  ABISELECT(1024,596),
  ABISELECT(1368,808),
  ABISELECT(1368,808),
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&_ZN9S19676C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C16D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C168S19676C5__A2__8S19676C4[] = {
  ABISELECT(392,248),
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[] = {
  ABISELECT(496,304),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C168S19676C5__A2__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C168S19676C5__A2__8S19676C4[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__9S19676C168S19676C5__8S19676C4[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev)();
extern void ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C168S19676C5__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI9S19676C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D1Ev,_ZTvn28_n24_N9S19676C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C16D0Ev,_ZTvn28_n24_N9S19676C16D0Ev),
};
extern void _ZN9S19676C18D1Ev();
extern void _ZN9S19676C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C188S19676C5__8S19676C4[] = {
  ABISELECT(184,124),
  ABISELECT(288,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&_ZN9S19676C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C188S19676C5__8S19676C4[] = {
  ABISELECT(-288,-180),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev)();
extern void ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C188S19676C5__8S19676C4[] = {
  ABISELECT(-184,-124),
  ABISELECT(104,56),
  ABISELECT(-184,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  0,
  ABISELECT(272,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-1144,-672),
  ABISELECT(-872,-504),
  ABISELECT(-1144,-672),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-272,-168),
  ABISELECT(-272,-168),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-800,-460),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-168,-112),
  ABISELECT(104,56),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C178S19676C5__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-848,-488),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C7__8S19676C5__8S19676C4[] = {
  ABISELECT(-304,-196),
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C5__8S19676C4[] = {
  ABISELECT(-392,-248),
  ABISELECT(104,56),
  ABISELECT(-392,-248),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C5__8S19676C4[] = {
  ABISELECT(-496,-304),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C5__8S19676C4[] = {
  ABISELECT(-544,-332),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__8S19676C5__8S19676C4[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  ABISELECT(-1368,-808),
  ABISELECT(-872,-504),
  ABISELECT(-1368,-808),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C5__8S19676C4[] = {
  ABISELECT(-1000,-588),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-1000,-588),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C5__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-656,-388),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D1Ev,_ZTvn56_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C5D0Ev,_ZTvn56_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C5__8S19676C4[] = {
  ABISELECT(-1024,-596),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-1024,-596),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C5__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-1072,-624),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D1Ev,_ZTvn28_n24_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C5D0Ev,_ZTvn28_n24_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C5__8S19676C4[] = {
  ABISELECT(-864,-512),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D1Ev,_ZTvn180_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C5D0Ev,_ZTvn180_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-912,-540),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D1Ev,_ZTvn208_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C5D0Ev,_ZTvn208_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C5__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-928,-544),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D1Ev,_ZTvn212_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C5D0Ev,_ZTvn212_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-976,-572),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D1Ev,_ZTvn240_n32_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C5D0Ev,_ZTvn240_n32_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C5__8S19676C4[] = {
  ABISELECT(-1088,-636),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-1088,-636),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C13__A4__8S19676C5__8S19676C4[] = {
  ABISELECT(-1296,-760),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D1Ev,_ZTvn124_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C5D0Ev,_ZTvn124_n28_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C5__8S19676C4[] = {
  ABISELECT(-848,-484),
  ABISELECT(-1344,-788),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D1Ev,_ZTvn152_n28_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C5D0Ev,_ZTvn152_n28_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D1Ev,_ZTvn28_n44_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S19676C5D0Ev,_ZTvn28_n44_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C18__8S19676C5__8S19676C4[] = {
  ABISELECT(184,124),
  ABISELECT(288,180),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D1Ev,_ZThn124_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19676C5D0Ev,_ZThn124_N8S19676C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__A__8S19676C5__8S19676C4[] = {
  ABISELECT(1128,656),
  ABISELECT(168,112),
  ABISELECT(800,460),
  ABISELECT(1144,672),
  ABISELECT(-224,-136),
  ABISELECT(272,168),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev),
};
extern void _ZN8S19676C7D1Ev();
extern void _ZN8S19676C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C7__8S19676C4[] = {
  ABISELECT(1048,596),
  ABISELECT(784,440),
  ABISELECT(720,400),
  ABISELECT(696,392),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&_ZN8S19676C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C7D0Ev,
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(1064,612),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
extern void ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C4[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C7__8S19676C4[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C7__8S19676C4[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C7__8S19676C4[] = {
  ABISELECT(-240,-136),
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-1064,-612),
  ABISELECT(-872,-504),
  ABISELECT(-1064,-612),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C7__8S19676C4[] = {
  ABISELECT(-696,-392),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D1Ev,_ZTvn56_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S19676C7D0Ev,_ZTvn56_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C7__8S19676C4[] = {
  ABISELECT(-720,-400),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D1Ev,_ZTvn28_n24_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19676C7D0Ev,_ZTvn28_n24_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C4[] = {
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D1Ev,_ZTvn180_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S19676C7D0Ev,_ZTvn180_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D1Ev,_ZTvn208_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S19676C7D0Ev,_ZTvn208_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D1Ev,_ZTvn212_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S19676C7D0Ev,_ZTvn212_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D1Ev,_ZTvn240_n32_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S19676C7D0Ev,_ZTvn240_n32_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev)();
extern void ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C7__8S19676C4[] = {
  ABISELECT(-784,-440),
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  ABISELECT(-784,-440),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C4[] = {
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D1Ev,_ZTvn124_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S19676C7D0Ev,_ZTvn124_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C4[] = {
  ABISELECT(-848,-484),
  ABISELECT(-1040,-592),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D1Ev,_ZTvn152_n28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S19676C7D0Ev,_ZTvn152_n28_N8S19676C7D0Ev),
};
extern void ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev)();
extern void ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C4[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19676C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D1Ev,_ZThn28_N8S19676C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S19676C7D0Ev,_ZThn28_N8S19676C7D0Ev),
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C8__8S19676C4[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C8__8S19676C4[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
extern void ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C4[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
extern void ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C8__8S19676C4[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C11__8S19676C4[] = {
  ABISELECT(480,264),
  ABISELECT(-152,-84),
  ABISELECT(456,256),
  ABISELECT(824,476),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C11__A1__8S19676C4[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C4[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C4[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C4[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-368,-208),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-712,-420),
  ABISELECT(-872,-504),
  ABISELECT(-712,-420),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C4[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C4[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(-440,-264),
  ABISELECT(-872,-504),
  ABISELECT(-440,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C11__8S19676C4[] = {
  ABISELECT(-824,-476),
  ABISELECT(-872,-504),
  ABISELECT(-824,-476),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C11__8S19676C4[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C11__8S19676C4[] = {
  ABISELECT(-456,-256),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C11__8S19676C4[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C11__8S19676C4[] = {
  ABISELECT(712,420),
  ABISELECT(368,208),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
extern void ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C11__8S19676C4[] = {
  ABISELECT(-480,-264),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C4[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C11__8S19676C4[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(440,264),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C4[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__8S19676C4[] = {
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C10__A1__8S19676C4[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C12__8S19676C4[] = {
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C12__A2__8S19676C4[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C4[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C12__8S19676C4[] = {
  ABISELECT(608,340),
  ABISELECT(104,56),
  ABISELECT(608,340),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C12__8S19676C4[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C14__8S19676C4[] = {
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C4[] = {
  ABISELECT(-576,-320),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C4[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C4[] = {
  ABISELECT(680,376),
  ABISELECT(104,56),
  ABISELECT(680,376),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C4[] = {
  ABISELECT(576,320),
  ABISELECT(576,320),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
extern void ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C14__8S19676C4[] = {
  ABISELECT(-344,-212),
  ABISELECT(-872,-504),
  ABISELECT(-344,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C14__8S19676C4[] = {
  ABISELECT(528,292),
  ABISELECT(528,292),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C14__8S19676C4[] = {
  ABISELECT(632,348),
  ABISELECT(104,56),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C14__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C13__A1__8S19676C4[] = {
  ABISELECT(280,172),
  ABISELECT(-64,-40),
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C13__A1__8S19676C4[] = {
  ABISELECT(-696,-388),
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C4[] = {
  ABISELECT(-592,-332),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C4[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C4[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C4[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A9__8S19676C4[] = {
  ABISELECT(-848,-484),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C4[] = {
  ABISELECT(848,484),
  ABISELECT(848,484),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(696,388),
  ABISELECT(104,56),
  ABISELECT(696,388),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(592,332),
  ABISELECT(592,332),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
extern void ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(-280,-172),
  ABISELECT(-872,-504),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C4[] = {
  ABISELECT(-848,-484),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void _ZN9S19676C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
extern void _ZN9S19676C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C17__8S19676C4[] = {
  -16,
  ABISELECT(-976,-560),
  ABISELECT(-344,-212),
  0,
  0,
  ABISELECT(-872,-504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C17__8S19676C4[] = {
  ABISELECT(872,504),
  ABISELECT(872,504),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C17__8S19676C4[] = {
  ABISELECT(344,212),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(344,212),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C17__8S19676C4[] = {
  ABISELECT(976,560),
  ABISELECT(104,56),
  ABISELECT(976,560),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(296,184),
  (VTBL_ENTRY)&(_ZTI9S19676C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D1Ev,_ZTvn28_n24_N9S19676C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C17D0Ev,_ZTvn28_n24_N9S19676C17D0Ev),
};
extern void _ZN9S19676C19D1Ev();
extern void _ZN9S19676C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C19__8S19676C4[] = {
  ABISELECT(664,380),
  ABISELECT(-368,-220),
  ABISELECT(-392,-228),
  ABISELECT(-24,-8),
  ABISELECT(-1000,-568),
  ABISELECT(-896,-512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&_ZN9S19676C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C19D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C19__A4__8S19676C4[] = {
  ABISELECT(-1000,-568),
  ABISELECT(-896,-512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C19__A14__8S19676C4[] = {
  ABISELECT(-896,-512),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C19__A14__8S19676C4[] = {
  ABISELECT(896,512),
  ABISELECT(896,512),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C19__A4__8S19676C4[] = {
  ABISELECT(896,512),
  ABISELECT(896,512),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C19__A4__8S19676C4[] = {
  ABISELECT(1000,568),
  ABISELECT(104,56),
  ABISELECT(1000,568),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C11D1Ev();
extern void _ZN9S19676C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-576,-344),
  ABISELECT(-1208,-692),
  ABISELECT(-600,-352),
  ABISELECT(-232,-132),
  ABISELECT(-1104,-636),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&_ZN9S19676C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C11D0Ev,
};
extern void _ZN8S19676C8D1Ev();
extern void _ZN8S19676C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19676C89S19676C119S19676C19__A2__8S19676C4[] = {
  ABISELECT(-1104,-636),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&_ZN8S19676C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C8D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[] = {
  ABISELECT(-1104,-636),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[] = {
  ABISELECT(1104,636),
  ABISELECT(1104,636),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19676C89S19676C119S19676C19__A2__8S19676C4[] = {
  ABISELECT(1104,636),
  ABISELECT(1104,636),
  (VTBL_ENTRY)&(_ZTI8S19676C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev),
};
extern void _ZN9S19676C13D1Ev();
extern void _ZN9S19676C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&_ZN9S19676C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C13D0Ev,
};
extern void _ZN9S19676C15D1Ev();
extern void _ZN9S19676C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[] = {
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&_ZN9S19676C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C15D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[] = {
  ABISELECT(-1216,-692),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[] = {
  ABISELECT(1216,692),
  ABISELECT(1216,692),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[] = {
  ABISELECT(1216,692),
  ABISELECT(1216,692),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[] = {
  ABISELECT(1320,748),
  ABISELECT(104,56),
  ABISELECT(1320,748),
  (VTBL_ENTRY)&(_ZTI9S19676C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev),
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[] = {
  ABISELECT(-1472,-844),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[] = {
  ABISELECT(1472,844),
  ABISELECT(1472,844),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1320,748),
  ABISELECT(104,56),
  ABISELECT(1320,748),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1216,692),
  ABISELECT(1216,692),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(688,400),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(688,400),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A1__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(344,188),
  ABISELECT(-872,-504),
  ABISELECT(344,188),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(640,372),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D1Ev,_ZTvn28_n24_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C13D0Ev,_ZTvn28_n24_N9S19676C13D0Ev),
};
extern void ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev)();
extern void ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A__9S19676C139S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-1472,-844),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI9S19676C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D1Ev,_ZThn152_N9S19676C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N9S19676C13D0Ev,_ZThn152_N9S19676C13D0Ev),
};
extern void _ZN9S19676C14D1Ev();
extern void _ZN9S19676C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&_ZN9S19676C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C14D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[] = {
  ABISELECT(-1536,-876),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[] = {
  ABISELECT(1536,876),
  ABISELECT(1536,876),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[] = {
  ABISELECT(1640,932),
  ABISELECT(104,56),
  ABISELECT(1640,932),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[] = {
  ABISELECT(1536,876),
  ABISELECT(1536,876),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(616,344),
  ABISELECT(-872,-504),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1488,848),
  ABISELECT(1488,848),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(1592,904),
  ABISELECT(104,56),
  ABISELECT(1592,904),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C149S19676C119S19676C19__A3__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19676C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D1Ev,_ZThn28_N9S19676C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19676C14D0Ev,_ZThn28_N9S19676C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(232,132),
  ABISELECT(-872,-504),
  ABISELECT(232,132),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(1104,636),
  ABISELECT(1104,636),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D1Ev,_ZTv0_n12_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C11D0Ev,_ZTv0_n12_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(600,352),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(600,352),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(1208,692),
  ABISELECT(104,56),
  ABISELECT(1208,692),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C13__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D1Ev,_ZThn56_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S19676C11D0Ev,_ZThn56_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(576,344),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(576,344),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(528,316),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D1Ev,_ZTvn28_n24_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C11D0Ev,_ZTvn28_n24_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C13__A6__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-1472,-844),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D1Ev,_ZThn208_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N9S19676C11D0Ev,_ZThn208_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__A__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D1Ev,_ZThn212_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N9S19676C11D0Ev,_ZThn212_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev)();
extern void ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A2__9S19676C119S19676C19__A1__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI9S19676C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D1Ev,_ZThn240_N9S19676C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N9S19676C11D0Ev,_ZThn240_N9S19676C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C19__8S19676C4[] = {
  ABISELECT(896,512),
  ABISELECT(896,512),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D1Ev,_ZTv0_n12_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C19D0Ev,_ZTv0_n12_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C19__8S19676C4[] = {
  ABISELECT(1000,568),
  ABISELECT(104,56),
  ABISELECT(1000,568),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C11__9S19676C19__8S19676C4[] = {
  ABISELECT(-576,-344),
  ABISELECT(-1208,-692),
  ABISELECT(-600,-352),
  ABISELECT(-232,-132),
  ABISELECT(-1104,-636),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D1Ev,_ZThn124_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N9S19676C19D0Ev,_ZThn124_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C10__A2__9S19676C19__8S19676C4[] = {
  ABISELECT(24,8),
  ABISELECT(-872,-504),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D1Ev,_ZTv0_n16_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C19D0Ev,_ZTv0_n16_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C12__9S19676C19__8S19676C4[] = {
  ABISELECT(392,228),
  ABISELECT(-608,-340),
  ABISELECT(-504,-284),
  ABISELECT(392,228),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C139S19676C11__9S19676C19__8S19676C4[] = {
  ABISELECT(-344,-188),
  ABISELECT(-688,-400),
  ABISELECT(-1320,-748),
  ABISELECT(-1216,-692),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D1Ev,_ZThn180_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N9S19676C19D0Ev,_ZThn180_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C14__9S19676C19__8S19676C4[] = {
  ABISELECT(368,220),
  ABISELECT(-632,-348),
  ABISELECT(-528,-292),
  ABISELECT(344,212),
  ABISELECT(368,220),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D1Ev,_ZTv0_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19676C19D0Ev,_ZTv0_n24_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C14__A1__9S19676C19__8S19676C4[] = {
  ABISELECT(-680,-376),
  ABISELECT(-576,-320),
  ABISELECT(320,192),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D1Ev,_ZTvn28_n24_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N9S19676C19D0Ev,_ZTvn28_n24_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19__8S19676C4[] = {
  ABISELECT(-1472,-844),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D1Ev,_ZThn332_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N9S19676C19D0Ev,_ZThn332_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C149S19676C11__A1__9S19676C19__8S19676C4[] = {
  ABISELECT(-1592,-904),
  ABISELECT(-1488,-848),
  ABISELECT(-616,-344),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D1Ev,_ZThn336_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N9S19676C19D0Ev,_ZThn336_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19__8S19676C4[] = {
  ABISELECT(-1640,-932),
  ABISELECT(-1536,-876),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D1Ev,_ZThn364_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N9S19676C19D0Ev,_ZThn364_N9S19676C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev)();
extern void ABISELECT(_ZThn664_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev)();
extern void ABISELECT(_ZThn664_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19676C20__9S19676C19__8S19676C4[] = {
  ABISELECT(-664,-380),
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  ABISELECT(-664,-380),
  (VTBL_ENTRY)&(_ZTI9S19676C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev),
};
extern void _ZN9S19676C20D1Ev();
extern void _ZN9S19676C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C20__8S19676C4[] = {
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&_ZN9S19676C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C20D0Ev,
};
extern void _ZN9S19676C12D1Ev();
extern void _ZN9S19676C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C129S19676C20__A5__8S19676C4[] = {
  ABISELECT(-1664,-948),
  ABISELECT(-1560,-892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&_ZN9S19676C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C12D0Ev,
};
extern void _ZN9S19676C10D1Ev();
extern void _ZN9S19676C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19676C109S19676C129S19676C20__A19__8S19676C4[] = {
  ABISELECT(-1560,-892),
  0,
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&_ZN9S19676C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19676C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A19__8S19676C4[] = {
  ABISELECT(1560,892),
  ABISELECT(1560,892),
  (VTBL_ENTRY)&(_ZTI9S19676C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C129S19676C20__A5__8S19676C4[] = {
  ABISELECT(1664,948),
  ABISELECT(104,56),
  ABISELECT(1664,948),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C129S19676C20__A5__8S19676C4[] = {
  ABISELECT(1560,892),
  ABISELECT(1560,892),
  (VTBL_ENTRY)&(_ZTI9S19676C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C8__9S19676C20__8S19676C4[] = {
  ABISELECT(1664,948),
  ABISELECT(104,56),
  ABISELECT(1664,948),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D1Ev,_ZTv0_n16_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19676C20D0Ev,_ZTv0_n16_N9S19676C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19676C20__8S19676C4[] = {
  ABISELECT(1560,892),
  ABISELECT(1560,892),
  (VTBL_ENTRY)&(_ZTI9S19676C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D1Ev,_ZTv0_n12_N9S19676C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19676C20D0Ev,_ZTv0_n12_N9S19676C20D0Ev),
};
static  VTT_ENTRY vtt_S19676C4[] = {
  {&(_ZTV8S19676C4[15]),  15,233},
  {&(_tg__ZTV9S19676C13__A__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A12__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A12__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A13__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A13__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A__8S19676C4[3]),  3,5},
  {&(_ZTV8S19676C4[39]),  39,233},
  {&(_ZTV8S19676C4[68]),  68,233},
  {&(_ZTV8S19676C4[80]),  80,233},
  {&(_ZTV8S19676C4[85]),  85,233},
  {&(_ZTV8S19676C4[95]),  95,233},
  {&(_ZTV8S19676C4[174]),  174,233},
  {&(_ZTV8S19676C4[132]),  132,233},
  {&(_ZTV8S19676C4[103]),  103,233},
  {&(_ZTV8S19676C4[140]),  140,233},
  {&(_ZTV8S19676C4[146]),  146,233},
  {&(_ZTV8S19676C4[107]),  107,233},
  {&(_ZTV8S19676C4[112]),  112,233},
  {&(_ZTV8S19676C4[119]),  119,233},
  {&(_ZTV8S19676C4[125]),  125,233},
  {&(_ZTV8S19676C4[155]),  155,233},
  {&(_ZTV8S19676C4[159]),  159,233},
  {&(_ZTV8S19676C4[164]),  164,233},
  {&(_ZTV8S19676C4[74]),  74,233},
  {&(_ZTV8S19676C4[174]),  174,233},
  {&(_ZTV8S19676C4[45]),  45,233},
  {&(_ZTV8S19676C4[55]),  55,233},
  {&(_ZTV8S19676C4[24]),  24,233},
  {&(_ZTV8S19676C4[185]),  185,233},
  {&(_ZTV8S19676C4[194]),  194,233},
  {&(_ZTV8S19676C4[202]),  202,233},
  {&(_ZTV8S19676C4[206]),  206,233},
  {&(_ZTV8S19676C4[211]),  211,233},
  {&(_ZTV8S19676C4[218]),  218,233},
  {&(_ZTV8S19676C4[224]),  224,233},
  {&(_ZTV8S19676C4[231]),  231,233},
  {&(_tg__ZTV8S19676C5__8S19676C4[12]),  12,14},
  {&(_tg__ZTV9S19676C168S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C159S19676C168S19676C5__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C168S19676C5__A11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C168S19676C5__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C168S19676C5__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C17__9S19676C168S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C17__9S19676C168S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C168S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C168S19676C5__8S19676C4[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C168S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C168S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C188S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C188S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C188S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C178S19676C5__A1__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C10__9S19676C178S19676C5__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C178S19676C5__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C178S19676C5__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C178S19676C5__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C178S19676C5__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C7__8S19676C5__8S19676C4[11]),  11,13},
  {&(_tg__ZTV8S19676C8__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C17__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C12__8S19676C5__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C5__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__8S19676C5__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C5__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C5__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C5__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C99S19676C13__A4__8S19676C5__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C17__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C18__8S19676C5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C17__A__8S19676C5__8S19676C4[8]),  8,10},
  {&(_tg__ZTV8S19676C7__8S19676C4[10]),  10,12},
  {&(_tg__ZTV9S19676C148S19676C7__A2__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C148S19676C7__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C148S19676C7__A10__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C148S19676C7__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C148S19676C7__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C148S19676C7__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C148S19676C7__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C148S19676C7__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C148S19676C7__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19676C7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C7__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C10__A1__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__8S19676C7__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C7__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__8S19676C7__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C99S19676C139S19676C11__A2__8S19676C7__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C7__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C7__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C99S19676C13__A4__8S19676C7__8S19676C4[2]),  2,4},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C129S19676C14__A3__8S19676C7__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C11__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C11__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C11__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C11__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C11__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C11__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A6__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C11__A6__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C11__A7__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C11__A2__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C11__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C11__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C11__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C11__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C11__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C11__8S19676C4[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C11__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C11__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C11__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C11__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C10__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C12__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C12__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C12__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C12__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C12__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C14__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C14__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C14__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C14__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C14__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C14__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C14__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C14__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C13__A8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C13__A8__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C13__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A9__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C13__A9__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C13__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C13__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C13__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C13__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C17__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C17__8S19676C4[8]),  8,10},
  {&(_tg__ZTV8S19676C9__9S19676C17__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C17__8S19676C4[6]),  6,8},
  {&(_tg__ZTV8S19676C8__9S19676C17__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C17__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C19__8S19676C4[8]),  8,10},
  {&(_tg__ZTV9S19676C159S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C19__A14__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C19__A14__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C19__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C119S19676C19__A1__8S19676C4[7]),  7,9},
  {&(_tg__ZTV8S19676C89S19676C119S19676C19__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C108S19676C89S19676C119S19676C19__A15__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19676C89S19676C119S19676C19__A2__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C139S19676C119S19676C19__A3__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C159S19676C139S19676C119S19676C19__A16__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C159S19676C139S19676C119S19676C19__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C139S19676C119S19676C19__A17__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C139S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C139S19676C119S19676C19__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C10__A1__9S19676C139S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C14__9S19676C139S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__A__9S19676C139S19676C119S19676C19__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C119S19676C19__A3__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C149S19676C119S19676C19__A18__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C149S19676C119S19676C19__A4__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C10__9S19676C149S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19676C149S19676C119S19676C19__A3__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C149S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C149S19676C119S19676C19__A3__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C10__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C119S19676C19__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C12__9S19676C119S19676C19__A1__8S19676C4[5]),  5,7},
  {&(_tg__ZTV8S19676C8__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C13__9S19676C119S19676C19__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C119S19676C19__A1__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C13__A6__9S19676C119S19676C19__A1__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C14__A__9S19676C119S19676C19__A1__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C14__A2__9S19676C119S19676C19__A1__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C11__9S19676C19__8S19676C4[7]),  7,9},
  {&(_tg__ZTV9S19676C10__A2__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C12__9S19676C19__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C139S19676C11__9S19676C19__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C14__9S19676C19__8S19676C4[6]),  6,8},
  {&(_tg__ZTV9S19676C129S19676C14__A1__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C139S19676C11__A7__9S19676C19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV9S19676C149S19676C11__A1__9S19676C19__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C129S19676C149S19676C11__A2__9S19676C19__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C20__9S19676C19__8S19676C4[5]),  5,7},
  {&(_tg__ZTV9S19676C20__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C129S19676C20__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV9S19676C109S19676C129S19676C20__A19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C9__9S19676C109S19676C129S19676C20__A19__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C129S19676C20__A5__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C129S19676C20__A5__8S19676C4[3]),  3,5},
  {&(_tg__ZTV8S19676C8__9S19676C20__8S19676C4[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19676C20__8S19676C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19676C4[];
extern  VTBL_ENTRY _ZTV8S19676C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C4[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D0Ev,_ZTv0_n20_N9S19676C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C19D0Ev,_ZThn380_N9S19676C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C19D1Ev,_ZTv0_n20_N9S19676C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C19D1Ev,_ZThn380_N9S19676C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D0Ev,_ZTv0_n24_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D0Ev,_ZThn264_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C11D1Ev,_ZTv0_n24_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N9S19676C11D1Ev,_ZThn264_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D0Ev,_ZTv0_n20_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D0Ev,_ZThn256_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19676C11D1Ev,_ZTv0_n20_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N9S19676C11D1Ev,_ZThn256_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D0Ev,_ZTv0_n16_N9S19676C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D0Ev,_ZThn476_N9S19676C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C11D1Ev,_ZTv0_n16_N9S19676C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N9S19676C11D1Ev,_ZThn476_N9S19676C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D0Ev,_ZTv0_n12_N8S19676C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D0Ev,_ZThn56_N8S19676C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C8D1Ev,_ZTv0_n12_N8S19676C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19676C8D1Ev,_ZThn56_N8S19676C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D0Ev,_ZTv0_n28_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D0Ev,_ZThn440_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C7D1Ev,_ZTv0_n28_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S19676C7D1Ev,_ZThn440_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D0Ev,_ZTv0_n24_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D0Ev,_ZThn400_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C7D1Ev,_ZTv0_n24_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19676C7D1Ev,_ZThn400_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D0Ev,_ZTv0_n20_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D0Ev,_ZThn392_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C7D1Ev,_ZTv0_n20_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S19676C7D1Ev,_ZThn392_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D0Ev,_ZTv0_n32_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D0Ev,_ZThn136_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C7D1Ev,_ZTv0_n32_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19676C7D1Ev,_ZThn136_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D0Ev,_ZTv0_n12_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D0Ev,_ZThn108_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C7D1Ev,_ZTv0_n12_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19676C7D1Ev,_ZThn108_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D0Ev,_ZTv0_n16_N8S19676C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D0Ev,_ZThn612_N8S19676C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D0Ev,_ZThn52_N8S19676C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C7D1Ev,_ZTv0_n16_N8S19676C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N8S19676C7D1Ev,_ZThn612_N8S19676C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19676C7D1Ev,_ZThn52_N8S19676C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D0Ev,_ZTv0_n12_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D0Ev,_ZThn108_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C14D1Ev,_ZTv0_n12_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19676C14D1Ev,_ZThn108_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D0Ev,_ZTv0_n16_N9S19676C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D0Ev,_ZThn212_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D0Ev,_ZThn264_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D0Ev,_ZThn52_N9S19676C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D0Ev,_ZThn612_N9S19676C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C14D1Ev,_ZTv0_n16_N9S19676C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N9S19676C14D1Ev,_ZThn212_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19676C14D1Ev,_ZThn264_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19676C14D1Ev,_ZThn52_N9S19676C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1064_N9S19676C14D1Ev,_ZThn612_N9S19676C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D0Ev,_ZTv0_n12_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D0Ev,_ZThn80_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C12D1Ev,_ZTv0_n12_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C12D1Ev,_ZThn80_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D0Ev,_ZTv0_n16_N9S19676C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D0Ev,_ZThn24_N9S19676C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C12D1Ev,_ZTv0_n16_N9S19676C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19676C12D1Ev,_ZThn24_N9S19676C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D0Ev,_ZTv0_n28_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D0Ev,_ZThn636_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C5D1Ev,_ZTv0_n28_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1088_N8S19676C5D1Ev,_ZThn636_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D0Ev,_ZTv0_n24_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D0Ev,_ZThn596_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C5D1Ev,_ZTv0_n24_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N8S19676C5D1Ev,_ZThn596_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D0Ev,_ZTv0_n20_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D0Ev,_ZThn588_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C5D1Ev,_ZTv0_n20_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1000_N8S19676C5D1Ev,_ZThn588_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D0Ev,_ZTv0_n32_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D0Ev,_ZThn332_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C5D1Ev,_ZTv0_n32_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn544_N8S19676C5D1Ev,_ZThn332_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D0Ev,_ZTv0_n12_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D0Ev,_ZThn304_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C5D1Ev,_ZTv0_n12_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C5D1Ev,_ZThn304_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D0Ev,_ZTv0_n16_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D0Ev,_ZThn136_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D0Ev,_ZThn808_N8S19676C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D0Ev,_ZThn248_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C5D1Ev,_ZTv0_n16_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19676C5D1Ev,_ZThn136_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N8S19676C5D1Ev,_ZThn808_N8S19676C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn392_N8S19676C5D1Ev,_ZThn248_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D0Ev,_ZTv0_n44_N8S19676C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D0Ev,_ZThn196_N8S19676C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C5D1Ev,_ZTv0_n44_N8S19676C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S19676C5D1Ev,_ZThn196_N8S19676C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D0Ev,_ZTv0_n24_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D0Ev,_ZThn460_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C17D1Ev,_ZTv0_n24_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19676C17D1Ev,_ZThn460_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D0Ev,_ZTv0_n12_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D0Ev,_ZThn168_N9S19676C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C17D1Ev,_ZTv0_n12_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S19676C17D1Ev,_ZThn168_N9S19676C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D0Ev,_ZTv0_n16_N9S19676C17D0Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D0Ev,_ZThn112_N9S19676C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D0Ev,_ZThn672_N9S19676C17D0Ev),
  (VTBL_ENTRY)_ZN9S19676C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C17D1Ev,_ZTv0_n16_N9S19676C17D1Ev), // 
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19676C17D1Ev,_ZThn112_N9S19676C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1144_N9S19676C17D1Ev,_ZThn672_N9S19676C17D1Ev),
  (VTBL_ENTRY)_ZN9S19676C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D0Ev,_ZTv0_n16_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D0Ev,_ZThn124_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C18D1Ev,_ZTv0_n16_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19676C18D1Ev,_ZThn124_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D0Ev,_ZTv0_n12_N9S19676C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D0Ev,_ZThn180_N9S19676C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C18D1Ev,_ZTv0_n12_N9S19676C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19676C18D1Ev,_ZThn180_N9S19676C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D0Ev,_ZTv0_n24_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D0Ev,_ZThn596_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C16D1Ev,_ZTv0_n24_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N9S19676C16D1Ev,_ZThn596_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D0Ev,_ZTv0_n12_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D0Ev,_ZThn304_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C16D1Ev,_ZTv0_n12_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C16D1Ev,_ZThn304_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D0Ev,_ZTv0_n16_N9S19676C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D0Ev,_ZThn248_N9S19676C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D0Ev,_ZThn808_N9S19676C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C16D1Ev,_ZTv0_n16_N9S19676C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C16D1Ev,_ZThn248_N9S19676C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1368_N9S19676C16D1Ev,_ZThn808_N9S19676C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D0Ev,_ZTv0_n24_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D0Ev,_ZThn208_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S19676C13D0Ev,_ZThn756_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19676C13D1Ev,_ZTv0_n24_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19676C13D1Ev,_ZThn208_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S19676C13D1Ev,_ZThn756_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D0Ev,_ZTv0_n12_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C13D0Ev,_ZThn464_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C13D1Ev,_ZTv0_n12_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C13D1Ev,_ZThn464_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D0Ev,_ZTv0_n16_N9S19676C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D0Ev,_ZThn172_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D0Ev,_ZThn420_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N9S19676C13D0Ev,_ZThn968_N9S19676C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C13D0Ev,_ZThn408_N9S19676C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C13D1Ev,_ZTv0_n16_N9S19676C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19676C13D1Ev,_ZThn172_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn712_N9S19676C13D1Ev,_ZThn420_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N9S19676C13D1Ev,_ZThn968_N9S19676C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C13D1Ev,_ZThn408_N9S19676C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D0Ev,_ZTv0_n16_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D0Ev,_ZThn248_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C15D0Ev,_ZThn408_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19676C15D1Ev,_ZTv0_n16_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn392_N9S19676C15D1Ev,_ZThn248_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N9S19676C15D1Ev,_ZThn408_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D0Ev,_ZTv0_n12_N9S19676C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D0Ev,_ZThn304_N9S19676C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C15D0Ev,_ZThn464_N9S19676C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C15D1Ev,_ZTv0_n12_N9S19676C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C15D1Ev,_ZThn304_N9S19676C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C15D1Ev,_ZThn464_N9S19676C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D0Ev,_ZTv0_n12_N9S19676C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D0Ev,_ZThn56_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D0Ev,_ZThn80_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D0Ev,_ZThn304_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C10D0Ev,_ZThn312_N9S19676C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C10D0Ev,_ZThn464_N9S19676C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19676C10D1Ev,_ZTv0_n12_N9S19676C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19676C10D1Ev,_ZThn56_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19676C10D1Ev,_ZThn80_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N9S19676C10D1Ev,_ZThn304_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S19676C10D1Ev,_ZThn312_N9S19676C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn768_N9S19676C10D1Ev,_ZThn464_N9S19676C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19676C4D0Ev,_ZTv0_n36_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1664_N8S19676C4D0Ev,_ZThn976_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19676C4D1Ev,_ZTv0_n36_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1664_N8S19676C4D1Ev,_ZThn976_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C4D0Ev,_ZTv0_n28_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S19676C4D0Ev,_ZThn796_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19676C4D1Ev,_ZTv0_n28_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S19676C4D1Ev,_ZThn796_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C4D0Ev,_ZTv0_n24_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S19676C4D0Ev,_ZThn756_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19676C4D1Ev,_ZTv0_n24_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S19676C4D1Ev,_ZThn756_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C4D0Ev,_ZTv0_n20_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2328_N8S19676C4D0Ev,_ZThn1356_N8S19676C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S19676C4D0Ev,_ZThn748_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19676C4D1Ev,_ZTv0_n20_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2328_N8S19676C4D1Ev,_ZThn1356_N8S19676C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N8S19676C4D1Ev,_ZThn748_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C4D0Ev,_ZTv0_n32_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N8S19676C4D0Ev,_ZThn492_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19676C4D1Ev,_ZTv0_n32_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn816_N8S19676C4D1Ev,_ZThn492_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C4D0Ev,_ZTv0_n12_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S19676C4D0Ev,_ZThn464_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19676C4D1Ev,_ZTv0_n12_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N8S19676C4D1Ev,_ZThn464_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C4D0Ev,_ZTv0_n44_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19676C4D0Ev,_ZThn356_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19676C4D1Ev,_ZTv0_n44_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S19676C4D1Ev,_ZThn356_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C4D0Ev,_ZTv0_n16_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S19676C4D0Ev,_ZThn968_N8S19676C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19676C4D0Ev,_ZThn408_N8S19676C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C4D0Ev,_ZThn296_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19676C4D1Ev,_ZTv0_n16_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S19676C4D1Ev,_ZThn968_N8S19676C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn664_N8S19676C4D1Ev,_ZThn408_N8S19676C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19676C4D1Ev,_ZThn296_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19676C4D0Ev,_ZTv0_n52_N8S19676C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19676C4D0Ev,_ZThn160_N8S19676C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19676C4D1Ev,_ZTv0_n52_N8S19676C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19676C4D1Ev,_ZThn160_N8S19676C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19676C4 = {  "S19676C4", // class name
  bases_S19676C4, 64,
  &(vtc_S19676C4[0]), // expected_vtbl_contents
  &(vtt_S19676C4[0]), // expected_vtt_contents
  ABISELECT(2352,1364), // object size
  NSPAIRA(_ZTI8S19676C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19676C4),233, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C4),259, //virtual table table var
  62, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19676C1  : virtual S19676C2 {
  void *s19676c1f0;
  ::S19676C4 s19676c1f1;
  virtual  ~S19676C1(); // _ZN8S19676C1D2Ev
  S19676C1(); // tgen
};
//SIG(1 S19676C1) C1{ VBC2{ m FC3{} Fi[3]} vd Fp FC4{ VBC5{ BC6{ m} VBC7{ VBC8{ VBC9{ vd m Fp Fi Fc FD} BC10{ VBC9 vd} Fp[10] Fi FL} VBC11{ VBC10 VBC12{ VBC8 BC10 vd Fi} BC8 BC13{ VBC8 VBC14{ BC9 VBC10 VBC8 BC12 vd Fi} BC15{ VBC9 VBC8 BC10 vd Fp Fi FC9[3] Fi[7]} BC9 BC10 vd} BC14 vd Fs} VBC13 VBC2 BC14 Fs Fp[2]} BC16{ VBC17{ VBC10 VBC14 VBC2 vd Fi} BC15 vd} BC18{ VBC9 VBC8 vd Fi FC3} BC17 vd Fi[10] FD} BC13 VBC19{ BC15 BC11 VBC20{ VBC8 BC12 vd Fs:0} vd} vd Fi}}


 S19676C1 ::~S19676C1(){ note_dtor("S19676C1", this);}
S19676C1 ::S19676C1(){ note_ctor("S19676C1", this);} // tgen

static void Test_S19676C1()
{
  extern Class_Descriptor cd_S19676C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(150,348)];
    init_test(&cd_S19676C1, buf);
    S19676C1 *dp, &lv = *(dp=new (buf) S19676C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2384,1388), "sizeof(S19676C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19676C1)");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(2368,1372), "S19676C1");
    check_field_offset(lv, s19676c1f0, ABISELECT(8,4), "S19676C1.s19676c1f0");
    check_field_offset(lv, s19676c1f1, ABISELECT(16,8), "S19676C1.s19676c1f1");
    test_class_info(&lv, &cd_S19676C1);
    dp->~S19676C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19676C1(Test_S19676C1, "S19676C1", ABISELECT(2384,1388));

#else // __cplusplus

extern void _ZN8S19676C1C1Ev();
extern void _ZN8S19676C1D2Ev();
Name_Map name_map_S19676C1[] = {
  NSPAIR(_ZN8S19676C1C1Ev),
  NSPAIR(_ZN8S19676C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S19676C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(2368,1372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19676C1[];
extern void _ZN8S19676C1D1Ev();
extern void _ZN8S19676C1D0Ev();
static  VTBL_ENTRY vtc_S19676C1[] = {
  ABISELECT(2368,1372),
  0,
  (VTBL_ENTRY)&(_ZTI8S19676C1[0]),
  (VTBL_ENTRY)&_ZN8S19676C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19676C1D0Ev,
};
extern VTBL_ENTRY _ZTV8S19676C1[];
static  VTT_ENTRY vtt_S19676C1[] = {
  {&(_ZTV8S19676C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19676C1[];
extern  VTBL_ENTRY _ZTV8S19676C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19676C1[];
Class_Descriptor cd_S19676C1 = {  "S19676C1", // class name
  bases_S19676C1, 1,
  &(vtc_S19676C1[0]), // expected_vtbl_contents
  &(vtt_S19676C1[0]), // expected_vtt_contents
  ABISELECT(2384,1388), // object size
  NSPAIRA(_ZTI8S19676C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19676C1),5, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19676C1),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  S7572C3  {
  short s7572c3f0:6;
  long s7572c3f1;
  short s7572c3f2:4;
  __tsi64 s7572c3f3[6];
  long s7572c3f4[7];
  void *s7572c3f5;
  virtual void  v3(); // _ZN7S7572C32v3Ev
  ~S7572C3(); // tgen
  S7572C3(); // tgen
};
//SIG(-1 S7572C3) C1{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}


void  S7572C3 ::v3(){vfunc_called(this, "_ZN7S7572C32v3Ev");}
S7572C3 ::~S7572C3(){ note_dtor("S7572C3", this);} // tgen
S7572C3 ::S7572C3(){ note_ctor("S7572C3", this);} // tgen

static void Test_S7572C3()
{
  extern Class_Descriptor cd_S7572C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,25)];
    init_test(&cd_S7572C3, buf);
    S7572C3 *dp, &lv = *(dp=new (buf) S7572C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,96), "sizeof(S7572C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7572C3)");
    set_bf_and_test(lv, s7572c3f0, ABISELECT(8,4), 0, 6, 1, "S7572C3");
    set_bf_and_test(lv, s7572c3f0, ABISELECT(8,4), 0, 6, hide_sll(1LL<<5), "S7572C3");
    check_field_offset(lv, s7572c3f1, ABISELECT(16,8), "S7572C3.s7572c3f1");
    set_bf_and_test(lv, s7572c3f2, ABISELECT(24,12), 0, 4, 1, "S7572C3");
    set_bf_and_test(lv, s7572c3f2, ABISELECT(24,12), 0, 4, hide_sll(1LL<<3), "S7572C3");
    check_field_offset(lv, s7572c3f3, ABISELECT(32,16), "S7572C3.s7572c3f3");
    check_field_offset(lv, s7572c3f4, ABISELECT(80,64), "S7572C3.s7572c3f4");
    check_field_offset(lv, s7572c3f5, ABISELECT(136,92), "S7572C3.s7572c3f5");
    test_class_info(&lv, &cd_S7572C3);
    dp->~S7572C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C3(Test_S7572C3, "S7572C3", ABISELECT(144,96));

#else // __cplusplus

extern void _ZN7S7572C3C1Ev();
extern void _ZN7S7572C3D1Ev();
Name_Map name_map_S7572C3[] = {
  NSPAIR(_ZN7S7572C3C1Ev),
  NSPAIR(_ZN7S7572C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7572C3[];
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C3[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
Class_Descriptor cd_S7572C3 = {  "S7572C3", // class name
  0,0,//no base classes
  &(vtc_S7572C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,96), // object size
  NSPAIRA(_ZTI7S7572C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7572C3),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  S7572C2  : virtual S7572C3 {
  void *s7572c2f0;
  ::S7572C3 s7572c2f1;
  __tsi64 s7572c2f2:3;
  ~S7572C2(); // tgen
  S7572C2(); // tgen
};
//SIG(-1 S7572C2) C1{ VBC2{ v1 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC2 FL:3}


S7572C2 ::~S7572C2(){ note_dtor("S7572C2", this);} // tgen
S7572C2 ::S7572C2(){ note_ctor("S7572C2", this);} // tgen

static void Test_S7572C2()
{
  extern Class_Descriptor cd_S7572C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,52)];
    init_test(&cd_S7572C2, buf);
    S7572C2 *dp, &lv = *(dp=new (buf) S7572C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,204), "sizeof(S7572C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7572C2)");
    check_base_class_offset(lv, (S7572C3*), ABISELECT(168,108), "S7572C2");
    check_field_offset(lv, s7572c2f0, ABISELECT(8,4), "S7572C2.s7572c2f0");
    check_field_offset(lv, s7572c2f1, ABISELECT(16,8), "S7572C2.s7572c2f1");
    set_bf_and_test(lv, s7572c2f2, ABISELECT(160,104), 0, 3, 1, "S7572C2");
    set_bf_and_test(lv, s7572c2f2, ABISELECT(160,104), 0, 3, hide_sll(1LL<<2), "S7572C2");
    test_class_info(&lv, &cd_S7572C2);
    dp->~S7572C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C2(Test_S7572C2, "S7572C2", ABISELECT(312,204));

#else // __cplusplus

extern void _ZN7S7572C2C1Ev();
extern void _ZN7S7572C2D1Ev();
Name_Map name_map_S7572C2[] = {
  NSPAIR(_ZN7S7572C2C1Ev),
  NSPAIR(_ZN7S7572C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
static Base_Class bases_S7572C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C3,    ABISELECT(168,108), //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 _ZTI7S7572C2[];
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C2[] = {
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern VTBL_ENTRY _ZTV7S7572C2[];
static  VTT_ENTRY vtt_S7572C2[] = {
  {&(_ZTV7S7572C2[3]),  3,7},
  {&(_ZTV7S7572C2[6]),  6,7},
};
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
Class_Descriptor cd_S7572C2 = {  "S7572C2", // class name
  bases_S7572C2, 1,
  &(vtc_S7572C2[0]), // expected_vtbl_contents
  &(vtt_S7572C2[0]), // expected_vtt_contents
  ABISELECT(312,204), // object size
  NSPAIRA(_ZTI7S7572C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7572C2),7, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C2),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  S7572C6  {
  __tsi64 s7572c6f0;
  long double s7572c6f1;
  void *s7572c6f2;
  char s7572c6f3;
  ::S7572C3 s7572c6f4;
  void *s7572c6f5[2];
  long s7572c6f6[8];
  short s7572c6f7;
  void *s7572c6f8;
  __tsi64 s7572c6f9:64;
  virtual void  v4(); // _ZN7S7572C62v4Ev
  ~S7572C6(); // tgen
  S7572C6(); // tgen
};
//SIG(-1 S7572C6) C1{ v1 FL FD Fp Fc FC2{ v2 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64}


void  S7572C6 ::v4(){vfunc_called(this, "_ZN7S7572C62v4Ev");}
S7572C6 ::~S7572C6(){ note_dtor("S7572C6", this);} // tgen
S7572C6 ::S7572C6(){ note_ctor("S7572C6", this);} // tgen

static void Test_S7572C6()
{
  extern Class_Descriptor cd_S7572C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,47)];
    init_test(&cd_S7572C6, buf);
    S7572C6 *dp, &lv = *(dp=new (buf) S7572C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,184), "sizeof(S7572C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C6)");
    check_field_offset(lv, s7572c6f0, ABISELECT(8,4), "S7572C6.s7572c6f0");
    check_field_offset(lv, s7572c6f1, ABISELECT(16,12), "S7572C6.s7572c6f1");
    check_field_offset(lv, s7572c6f2, ABISELECT(32,24), "S7572C6.s7572c6f2");
    check_field_offset(lv, s7572c6f3, ABISELECT(40,28), "S7572C6.s7572c6f3");
    check_field_offset(lv, s7572c6f4, ABISELECT(48,32), "S7572C6.s7572c6f4");
    check_field_offset(lv, s7572c6f5, ABISELECT(192,128), "S7572C6.s7572c6f5");
    check_field_offset(lv, s7572c6f6, ABISELECT(208,136), "S7572C6.s7572c6f6");
    check_field_offset(lv, s7572c6f7, ABISELECT(272,168), "S7572C6.s7572c6f7");
    check_field_offset(lv, s7572c6f8, ABISELECT(280,172), "S7572C6.s7572c6f8");
    set_bf_and_test(lv, s7572c6f9, ABISELECT(288,176), 0, 64, 1, "S7572C6");
    set_bf_and_test(lv, s7572c6f9, ABISELECT(288,176), 0, 64, hide_sll(1LL<<63), "S7572C6");
    test_class_info(&lv, &cd_S7572C6);
    dp->~S7572C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C6(Test_S7572C6, "S7572C6", ABISELECT(304,184));

#else // __cplusplus

extern void _ZN7S7572C6C1Ev();
extern void _ZN7S7572C6D1Ev();
Name_Map name_map_S7572C6[] = {
  NSPAIR(_ZN7S7572C6C1Ev),
  NSPAIR(_ZN7S7572C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7572C6[];
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY vtc_S7572C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C6[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
Class_Descriptor cd_S7572C6 = {  "S7572C6", // class name
  0,0,//no base classes
  &(vtc_S7572C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,184), // object size
  NSPAIRA(_ZTI7S7572C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7572C6),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  S7572C5  : S7572C6 {
  ::S7572C2 s7572c5f0;
  int s7572c5f1;
  void *s7572c5f2;
  int s7572c5f3;
  virtual  ~S7572C5(); // _ZN7S7572C5D1Ev
  virtual void  v5(); // _ZN7S7572C52v5Ev
  S7572C5(); // tgen
};
//SIG(-1 S7572C5) C1{ BC2{ v2 FL FD Fp Fc FC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v1 FC4{ VBC3 Fp FC3 FL:3} Fi Fp Fi}


 S7572C5 ::~S7572C5(){ note_dtor("S7572C5", this);}
void  S7572C5 ::v5(){vfunc_called(this, "_ZN7S7572C52v5Ev");}
S7572C5 ::S7572C5(){ note_ctor("S7572C5", this);} // tgen

static void Test_S7572C5()
{
  extern Class_Descriptor cd_S7572C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(41,101)];
    init_test(&cd_S7572C5, buf);
    S7572C5 *dp, &lv = *(dp=new (buf) S7572C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,400), "sizeof(S7572C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C5)");
    check_base_class_offset(lv, (S7572C6*), 0, "S7572C5");
    check_field_offset(lv, s7572c5f0, ABISELECT(296,184), "S7572C5.s7572c5f0");
    check_field_offset(lv, s7572c5f1, ABISELECT(608,388), "S7572C5.s7572c5f1");
    check_field_offset(lv, s7572c5f2, ABISELECT(616,392), "S7572C5.s7572c5f2");
    check_field_offset(lv, s7572c5f3, ABISELECT(624,396), "S7572C5.s7572c5f3");
    test_class_info(&lv, &cd_S7572C5);
    dp->~S7572C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C5(Test_S7572C5, "S7572C5", ABISELECT(640,400));

#else // __cplusplus

extern void _ZN7S7572C5C1Ev();
extern void _ZN7S7572C5D1Ev();
Name_Map name_map_S7572C5[] = {
  NSPAIR(_ZN7S7572C5C1Ev),
  NSPAIR(_ZN7S7572C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
static Base_Class bases_S7572C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C5[];
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C5D1Ev();
extern void _ZN7S7572C5D0Ev();
extern void _ZN7S7572C52v5Ev();
static  VTBL_ENTRY vtc_S7572C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C5[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7572C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S7572C5[];
extern  VTBL_ENTRY _ZTV7S7572C5[];
Class_Descriptor cd_S7572C5 = {  "S7572C5", // class name
  bases_S7572C5, 1,
  &(vtc_S7572C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,400), // object size
  NSPAIRA(_ZTI7S7572C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7572C5),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  S7572C9  {
  int s7572c9f0[2];
  long s7572c9f1[2];
  ::S7572C3 s7572c9f2[3];
  virtual void  v6(); // _ZN7S7572C92v6Ev
  virtual void  v7(); // _ZN7S7572C92v7Ev
  virtual void  v8(); // _ZN7S7572C92v8Ev
  ~S7572C9(); // tgen
  S7572C9(); // tgen
};
//SIG(-1 S7572C9) C1{ v1 v2 v3 Fi[2] Fl[2] FC2{ v4 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp}[3]}


void  S7572C9 ::v6(){vfunc_called(this, "_ZN7S7572C92v6Ev");}
void  S7572C9 ::v7(){vfunc_called(this, "_ZN7S7572C92v7Ev");}
void  S7572C9 ::v8(){vfunc_called(this, "_ZN7S7572C92v8Ev");}
S7572C9 ::~S7572C9(){ note_dtor("S7572C9", this);} // tgen
S7572C9 ::S7572C9(){ note_ctor("S7572C9", this);} // tgen

static void Test_S7572C9()
{
  extern Class_Descriptor cd_S7572C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S7572C9, buf);
    S7572C9 *dp, &lv = *(dp=new (buf) S7572C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S7572C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7572C9)");
    check_field_offset(lv, s7572c9f0, ABISELECT(8,4), "S7572C9.s7572c9f0");
    check_field_offset(lv, s7572c9f1, ABISELECT(16,12), "S7572C9.s7572c9f1");
    check_field_offset(lv, s7572c9f2, ABISELECT(32,20), "S7572C9.s7572c9f2");
    test_class_info(&lv, &cd_S7572C9);
    dp->~S7572C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C9(Test_S7572C9, "S7572C9", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S7572C9C1Ev();
extern void _ZN7S7572C9D1Ev();
Name_Map name_map_S7572C9[] = {
  NSPAIR(_ZN7S7572C9C1Ev),
  NSPAIR(_ZN7S7572C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7572C9[];
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY vtc_S7572C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C9[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
Class_Descriptor cd_S7572C9 = {  "S7572C9", // class name
  0,0,//no base classes
  &(vtc_S7572C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S7572C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7572C9),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  S7572C8  : S7572C6 , S7572C9 , S7572C3 {
  long s7572c8f0;
  __tsi64 s7572c8f1;
  void *s7572c8f2[8];
  ::S20292C9 s7572c8f3;
  void *s7572c8f4;
  int s7572c8f5;
  ::S20292C9 s7572c8f6;
  int s7572c8f7;
  virtual  ~S7572C8(); // _ZN7S7572C8D1Ev
  virtual void  v9(); // _ZN7S7572C82v9Ev
  S7572C8(); // tgen
};
//SIG(-1 S7572C8) C1{ BC2{ v2 FL FD Fp Fc FC3{ v6 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} BC4{ v3 v4 v5 Fi[2] Fl[2] FC3[3]} BC3 vd v1 Fl FL Fp[8] FC5{ BC6{ v7 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC7{ v8 v9 v10 Fi[2] Fl[2] FC6[3]} VBC8{ VBC6 Fp FC6 FL:3} VBC9{ v11 FL FD Fp Fc FC6 Fp[2] Fl[8] Fs Fp FL:64} FC9 Fs Fi[2]} Fp Fi FC5 Fi}


 S7572C8 ::~S7572C8(){ note_dtor("S7572C8", this);}
void  S7572C8 ::v9(){vfunc_called(this, "_ZN7S7572C82v9Ev");}
S7572C8 ::S7572C8(){ note_ctor("S7572C8", this);} // tgen

static void Test_S7572C8()
{
  extern Class_Descriptor cd_S7572C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(259,656)];
    init_test(&cd_S7572C8, buf);
    S7572C8 *dp, &lv = *(dp=new (buf) S7572C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4128,2620), "sizeof(S7572C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C8)");
    check_base_class_offset(lv, (S7572C6*), 0, "S7572C8");
    check_base_class_offset(lv, (S7572C9*), ABISELECT(296,184), "S7572C8");
    check_base_class_offset(lv, (S7572C3*), ABISELECT(760,492), "S7572C8");
    check_field_offset(lv, s7572c8f0, ABISELECT(904,588), "S7572C8.s7572c8f0");
    check_field_offset(lv, s7572c8f1, ABISELECT(912,592), "S7572C8.s7572c8f1");
    check_field_offset(lv, s7572c8f2, ABISELECT(920,600), "S7572C8.s7572c8f2");
    check_field_offset(lv, s7572c8f3, ABISELECT(992,632), "S7572C8.s7572c8f3");
    check_field_offset(lv, s7572c8f4, ABISELECT(2544,1620), "S7572C8.s7572c8f4");
    check_field_offset(lv, s7572c8f5, ABISELECT(2552,1624), "S7572C8.s7572c8f5");
    check_field_offset(lv, s7572c8f6, ABISELECT(2560,1628), "S7572C8.s7572c8f6");
    check_field_offset(lv, s7572c8f7, ABISELECT(4112,2616), "S7572C8.s7572c8f7");
    test_class_info(&lv, &cd_S7572C8);
    dp->~S7572C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C8(Test_S7572C8, "S7572C8", ABISELECT(4128,2620));

#else // __cplusplus

extern void _ZN7S7572C8C1Ev();
extern void _ZN7S7572C8D1Ev();
Name_Map name_map_S7572C8[] = {
  NSPAIR(_ZN7S7572C8C1Ev),
  NSPAIR(_ZN7S7572C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
static Base_Class bases_S7572C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7572C9,    ABISELECT(296,184), //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_S7572C3,    ABISELECT(760,492), //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 _ZTI7S7572C8[];
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C8D1Ev();
extern void _ZN7S7572C8D0Ev();
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C8[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7572C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-296,-184),
  (VTBL_ENTRY)&(_ZTI7S7572C8[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-760,-492),
  (VTBL_ENTRY)&(_ZTI7S7572C8[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
Class_Descriptor cd_S7572C8 = {  "S7572C8", // class name
  bases_S7572C8, 3,
  &(vtc_S7572C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(4128,2620), // object size
  NSPAIRA(_ZTI7S7572C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7572C8),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  S7572C7  : virtual S7572C6 , virtual S7572C8 , virtual S7572C3 , virtual S7572C2 {
  __tsi64 s7572c7f0:44;
  void *s7572c7f1;
  int s7572c7f2;
  ::S20292C9 s7572c7f3;
  long s7572c7f4[2];
  int s7572c7f5[3];
  ::S7572C8 s7572c7f6;
  char s7572c7f7:7;
  ::S7572C5 s7572c7f8;
  ~S7572C7(); // tgen
  S7572C7(); // tgen
};
//SIG(-1 S7572C7) C1{ VBC2{ v1 FL FD Fp Fc FC3{ v5 Fs:6 Fl Fs:4 FL[6] Fl[7] 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 FL Fp[8] FC6{ BC7{ v7 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC8{ v8 v9 v10 Fi[2] Fl[2] FC7[3]} VBC9{ VBC7 Fp FC7 FL:3} VBC10{ v11 FL FD Fp Fc FC7 Fp[2] Fl[8] Fs Fp FL:64} FC10 Fs Fi[2]} Fp Fi FC6 Fi} VBC3 VBC11{ VBC3 Fp FC3 FL:3} FL:44 Fp Fi FC6 Fl[2] Fi[3] FC4 Fc:7 FC12{ BC2 vd v12 FC11 Fi Fp Fi}}


S7572C7 ::~S7572C7(){ note_dtor("S7572C7", this);} // tgen
S7572C7 ::S7572C7(){ note_ctor("S7572C7", this);} // tgen

static void Test_S7572C7()
{
  extern Class_Descriptor cd_S7572C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(697,1766)];
    init_test(&cd_S7572C7, buf);
    S7572C7 *dp, &lv = *(dp=new (buf) S7572C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11136,7060), "sizeof(S7572C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C7)");
    /*is_ambiguous_... S7572C7::S7572C6 */ AMB_check_base_class_offset(lv, (S7572C6*), ABISELECT(6400,4052), "S7572C7");
    check_base_class_offset(lv, (S7572C6*)(S7572C8*), ABISELECT(6704,4236), "S7572C7");
    check_base_class_offset(lv, (S7572C9*)(S7572C8*), ABISELECT(7000,4420), "S7572C7");
    check_base_class_offset(lv, (S7572C3*)(S7572C8*), ABISELECT(7464,4728), "S7572C7");
    check_base_class_offset(lv, (S7572C8*), ABISELECT(6704,4236), "S7572C7");
    /*is_ambiguous_... S7572C7::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*), ABISELECT(10824,6856), "S7572C7");
    check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(10824,6856), "S7572C7");
    check_base_class_offset(lv, (S7572C2*), ABISELECT(10968,6952), "S7572C7");
    set_bf_and_test(lv, s7572c7f0, ABISELECT(8,4), 0, 44, 1, "S7572C7");
    set_bf_and_test(lv, s7572c7f0, ABISELECT(8,4), 0, 44, hide_sll(1LL<<43), "S7572C7");
    check_field_offset(lv, s7572c7f1, ABISELECT(16,12), "S7572C7.s7572c7f1");
    check_field_offset(lv, s7572c7f2, ABISELECT(24,16), "S7572C7.s7572c7f2");
    check_field_offset(lv, s7572c7f3, ABISELECT(32,20), "S7572C7.s7572c7f3");
    check_field_offset(lv, s7572c7f4, ABISELECT(1584,1008), "S7572C7.s7572c7f4");
    check_field_offset(lv, s7572c7f5, ABISELECT(1600,1016), "S7572C7.s7572c7f5");
    check_field_offset(lv, s7572c7f6, ABISELECT(1616,1028), "S7572C7.s7572c7f6");
    set_bf_and_test(lv, s7572c7f7, ABISELECT(5744,3648), 0, 7, 1, "S7572C7");
    set_bf_and_test(lv, s7572c7f7, ABISELECT(5744,3648), 0, 7, hide_sll(1LL<<6), "S7572C7");
    check_field_offset(lv, s7572c7f8, ABISELECT(5760,3652), "S7572C7.s7572c7f8");
    test_class_info(&lv, &cd_S7572C7);
    dp->~S7572C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C7(Test_S7572C7, "S7572C7", ABISELECT(11136,7060));

#else // __cplusplus

extern void _ZN7S7572C7C1Ev();
extern void _ZN7S7572C7D1Ev();
Name_Map name_map_S7572C7[] = {
  NSPAIR(_ZN7S7572C7C1Ev),
  NSPAIR(_ZN7S7572C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C8;
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
static Base_Class bases_S7572C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    ABISELECT(6400,4052), //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_S7572C6,    ABISELECT(6704,4236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7572C9,    ABISELECT(7000,4420), //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_S7572C3,    ABISELECT(7464,4728), //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_S7572C8,    ABISELECT(6704,4236), //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_S7572C3,    ABISELECT(10824,6856), //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_S7572C2,    ABISELECT(10968,6952), //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 _ZTI7S7572C7[];
extern void _ZN7S7572C7D1Ev();
extern void _ZN7S7572C7D0Ev();
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C7[] = {
  ABISELECT(10968,6952),
  ABISELECT(10824,6856),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C7D0Ev,
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  0,
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-144,-96),
  ABISELECT(-10968,-6952),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
};
extern VTBL_ENTRY _ZTV7S7572C7[];
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C7[] = {
  ABISELECT(-144,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__7S7572C7[] = {
  0,
  ABISELECT(144,96),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTT_ENTRY vtt_S7572C7[] = {
  {&(_ZTV7S7572C7[6]),  6,40},
  {&(_ZTV7S7572C7[11]),  11,40},
  {&(_ZTV7S7572C7[21]),  21,40},
  {&(_ZTV7S7572C7[27]),  27,40},
  {&(_ZTV7S7572C7[32]),  32,40},
  {&(_ZTV7S7572C7[36]),  36,40},
  {&(_ZTV7S7572C7[40]),  40,40},
  {&(_tg__ZTV7S7572C2__7S7572C7[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__7S7572C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7572C7[];
extern  VTBL_ENTRY _ZTV7S7572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C7[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7572C7 = {  "S7572C7", // class name
  bases_S7572C7, 7,
  &(vtc_S7572C7[0]), // expected_vtbl_contents
  &(vtt_S7572C7[0]), // expected_vtt_contents
  ABISELECT(11136,7060), // object size
  NSPAIRA(_ZTI7S7572C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7572C7),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C7),9, //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  S7572C4  : virtual S7572C5 , virtual S7572C3 , virtual S7572C7 {
  int s7572c4f0;
  long double s7572c4f1;
  int s7572c4f2;
  void *s7572c4f3;
  long s7572c4f4;
  ::S19763C23 s7572c4f5;
  int s7572c4f6;
  long s7572c4f7;
  virtual  ~S7572C4(); // _ZN7S7572C4D2Ev
  S7572C4(); // tgen
};
//SIG(-1 S7572C4) C1{ VBC2{ BC3{ v1 FL FD Fp Fc FC4{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp[2] Fl[8] Fs Fp FL:64} vd v2 FC5{ VBC4 Fp FC4 FL:3} Fi Fp Fi} VBC4 VBC6{ VBC3 VBC7{ BC3 BC8{ v4 v5 v6 Fi[2] Fl[2] FC4[3]} BC4 vd v7 Fl FL Fp[8] FC9{ BC10{ v8 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC11{ v9 v10 v11 Fi[2] Fl[2] FC10[3]} VBC12{ VBC10 Fp FC10 FL:3} VBC13{ v12 FL FD Fp Fc FC10 Fp[2] Fl[8] Fs Fp FL:64} FC13 Fs Fi[2]} Fp Fi FC9 Fi} VBC4 VBC5 FL:44 Fp Fi FC9 Fl[2] Fi[3] FC7 Fc:7 FC2} vd Fi FD Fi Fp Fl FU14{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl}


 S7572C4 ::~S7572C4(){ note_dtor("S7572C4", this);}
S7572C4 ::S7572C4(){ note_ctor("S7572C4", this);} // tgen

static void Test_S7572C4()
{
  extern Class_Descriptor cd_S7572C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(742,1878)];
    init_test(&cd_S7572C4, buf);
    S7572C4 *dp, &lv = *(dp=new (buf) S7572C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(11856,7508), "sizeof(S7572C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C4)");
    check_base_class_offset(lv, (S7572C6*)(S7572C5*), ABISELECT(80,48), "S7572C4");
    check_base_class_offset(lv, (S7572C5*), ABISELECT(80,48), "S7572C4");
    /*is_ambiguous_... S7572C4::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*), ABISELECT(712,448), "S7572C4");
    /*is_ambiguous_... S7572C7::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C7*), ABISELECT(712,448), "S7572C4");
    check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(712,448), "S7572C4");
    /*is_ambiguous_... S7572C7::S7572C6 */ AMB_check_base_class_offset(lv, (S7572C6*)(S7572C7*), ABISELECT(7264,4596), "S7572C4");
    check_base_class_offset(lv, (S7572C6*)(S7572C8*), ABISELECT(7568,4780), "S7572C4");
    check_base_class_offset(lv, (S7572C9*)(S7572C8*), ABISELECT(7864,4964), "S7572C4");
    check_base_class_offset(lv, (S7572C3*)(S7572C8*), ABISELECT(8328,5272), "S7572C4");
    check_base_class_offset(lv, (S7572C8*)(S7572C7*), ABISELECT(7568,4780), "S7572C4");
    check_base_class_offset(lv, (S7572C2*)(S7572C7*), ABISELECT(11688,7400), "S7572C4");
    check_base_class_offset(lv, (S7572C7*), ABISELECT(864,544), "S7572C4");
    check_field_offset(lv, s7572c4f0, ABISELECT(8,4), "S7572C4.s7572c4f0");
    check_field_offset(lv, s7572c4f1, ABISELECT(16,8), "S7572C4.s7572c4f1");
    check_field_offset(lv, s7572c4f2, ABISELECT(32,20), "S7572C4.s7572c4f2");
    check_field_offset(lv, s7572c4f3, ABISELECT(40,24), "S7572C4.s7572c4f3");
    check_field_offset(lv, s7572c4f4, ABISELECT(48,28), "S7572C4.s7572c4f4");
    check_field_offset(lv, s7572c4f5, ABISELECT(56,32), "S7572C4.s7572c4f5");
    check_field_offset(lv, s7572c4f6, ABISELECT(64,40), "S7572C4.s7572c4f6");
    check_field_offset(lv, s7572c4f7, ABISELECT(72,44), "S7572C4.s7572c4f7");
    test_class_info(&lv, &cd_S7572C4);
    dp->~S7572C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C4(Test_S7572C4, "S7572C4", ABISELECT(11856,7508));

#else // __cplusplus

extern void _ZN7S7572C4C1Ev();
extern void _ZN7S7572C4D2Ev();
Name_Map name_map_S7572C4[] = {
  NSPAIR(_ZN7S7572C4C1Ev),
  NSPAIR(_ZN7S7572C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C5;
extern VTBL_ENTRY _ZTI7S7572C5[];
extern  VTBL_ENTRY _ZTV7S7572C5[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C8;
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
extern Class_Descriptor cd_S7572C7;
extern VTBL_ENTRY _ZTI7S7572C7[];
extern  VTBL_ENTRY _ZTV7S7572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C7[];
static Base_Class bases_S7572C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C6,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7572C5,    ABISELECT(80,48), //bcp->offset
    10, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C3,    ABISELECT(712,448), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7572C6,    ABISELECT(7264,4596), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7572C6,    ABISELECT(7568,4780), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7572C9,    ABISELECT(7864,4964), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7572C3,    ABISELECT(8328,5272), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7572C8,    ABISELECT(7568,4780), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7572C2,    ABISELECT(11688,7400), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7572C7,    ABISELECT(864,544), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C4[];
extern void _ZN7S7572C4D1Ev();
extern void _ZN7S7572C4D0Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7572C4D1Ev,_ZThn48_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7572C4D0Ev,_ZThn48_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C52v5Ev();
extern void _ZN7S7572C32v3Ev();
extern void ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn864_N7S7572C4D1Ev,_ZThn544_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn864_N7S7572C4D0Ev,_ZThn544_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn7568_N7S7572C4D1Ev,_ZThn4780_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn7568_N7S7572C4D0Ev,_ZThn4780_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C4[] = {
  ABISELECT(11688,7400),
  ABISELECT(7568,4780),
  ABISELECT(7264,4596),
  ABISELECT(864,544),
  ABISELECT(712,448),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C4D0Ev,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
  0,
  ABISELECT(-712,-448),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-864,-544),
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-864,-544),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev),
  0,
  ABISELECT(-7264,-4596),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7568,-4780),
  0,
  ABISELECT(-7568,-4780),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-7864,-4964),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-8328,-5272),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-10976,-6952),
  ABISELECT(-11688,-7400),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
};
extern VTBL_ENTRY _ZTV7S7572C4[];
extern void _ZN7S7572C7D1Ev();
extern void _ZN7S7572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C7__7S7572C4[] = {
  ABISELECT(10824,6856),
  ABISELECT(-152,-96),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C7D0Ev,
};
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C6__7S7572C7__7S7572C4[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C8__7S7572C7__7S7572C4[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
};
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C4[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C4[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__A1__7S7572C7__7S7572C4[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C7__7S7572C4[] = {
  ABISELECT(-10976,-6952),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C4[] = {
  ABISELECT(-10976,-6952),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__7S7572C4[] = {
  0,
  ABISELECT(10976,6952),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTT_ENTRY vtt_S7572C4[] = {
  {&(_ZTV7S7572C4[8]),  8,60},
  {&(_ZTV7S7572C4[15]),  15,60},
  {&(_ZTV7S7572C4[22]),  22,60},
  {&(_ZTV7S7572C4[30]),  30,60},
  {&(_ZTV7S7572C4[35]),  35,60},
  {&(_ZTV7S7572C4[45]),  45,60},
  {&(_ZTV7S7572C4[51]),  51,60},
  {&(_ZTV7S7572C4[56]),  56,60},
  {&(_ZTV7S7572C4[60]),  60,60},
  {&(_tg__ZTV7S7572C7__7S7572C4[6]),  6,8},
  {&(_tg__ZTV7S7572C6__7S7572C7__7S7572C4[3]),  3,4},
  {&(_tg__ZTV7S7572C8__7S7572C7__7S7572C4[9]),  9,13},
  {&(_tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C4[2]),  2,5},
  {&(_tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C4[2]),  2,3},
  {&(_tg__ZTV7S7572C3__A1__7S7572C7__7S7572C4[3]),  3,4},
  {&(_tg__ZTV7S7572C2__7S7572C7__7S7572C4[3]),  3,3},
  {&(_tg__ZTV7S7572C2__7S7572C4[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__7S7572C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7572C4[];
extern  VTBL_ENTRY _ZTV7S7572C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C4[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N7S7572C4D0Ev,_ZThn544_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn864_N7S7572C4D1Ev,_ZThn544_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N7S7572C4D0Ev,_ZThn4780_N7S7572C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7572C4D0Ev,_ZThn48_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7568_N7S7572C4D1Ev,_ZThn4780_N7S7572C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7572C4D1Ev,_ZThn48_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7572C4 = {  "S7572C4", // class name
  bases_S7572C4, 10,
  &(vtc_S7572C4[0]), // expected_vtbl_contents
  &(vtt_S7572C4[0]), // expected_vtt_contents
  ABISELECT(11856,7508), // object size
  NSPAIRA(_ZTI7S7572C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7572C4),60, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C4),18, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7572C1  : S7572C2 , S7572C4 {
  int s7572c1f0[7];
  __tsi64 s7572c1f1;
  int s7572c1f2[9];
  int s7572c1f3;
  int s7572c1f4;
  long s7572c1f5;
  int s7572c1f6;
  long s7572c1f7[7];
  virtual void  v1(); // _ZN7S7572C12v1Ev
  virtual void  v2(); // _ZN7S7572C12v2Ev
  ~S7572C1(); // tgen
  S7572C1(); // tgen
};
//SIG(1 S7572C1) C1{ BC2{ VBC3{ v3 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} Fp FC3 FL:3} BC4{ VBC5{ BC6{ v4 FL FD Fp Fc FC3 Fp[2] Fl[8] Fs Fp FL:64} vd v5 FC2 Fi Fp Fi} VBC3 VBC7{ VBC6 VBC8{ BC6 BC9{ v6 v7 v8 Fi[2] Fl[2] FC3[3]} BC3 vd v9 Fl FL Fp[8] FC10{ BC11{ v10 Fs:6 Fl Fs:4 FL[6] Fl[7] Fp} VBC12{ v11 v12 v13 Fi[2] Fl[2] FC11[3]} VBC13{ VBC11 Fp FC11 FL:3} VBC14{ v14 FL FD Fp Fc FC11 Fp[2] Fl[8] Fs Fp FL:64} FC14 Fs Fi[2]} Fp Fi FC10 Fi} VBC3 VBC2 FL:44 Fp Fi FC10 Fl[2] Fi[3] FC8 Fc:7 FC5} vd Fi FD Fi Fp Fl FU15{ m Fi:8 Fi Fp FL Fp Fp Fi} Fi Fl} v1 v2 Fi[7] FL Fi[9] Fi Fi Fl Fi Fl[7]}


void  S7572C1 ::v1(){vfunc_called(this, "_ZN7S7572C12v1Ev");}
void  S7572C1 ::v2(){vfunc_called(this, "_ZN7S7572C12v2Ev");}
S7572C1 ::~S7572C1(){ note_dtor("S7572C1", this);} // tgen
S7572C1 ::S7572C1(){ note_ctor("S7572C1", this);} // tgen

static void Test_S7572C1()
{
  extern Class_Descriptor cd_S7572C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(763,1934)];
    init_test(&cd_S7572C1, buf);
    S7572C1 *dp, &lv = *(dp=new (buf) S7572C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(12192,7732), "sizeof(S7572C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7572C1)");
    /*is_ambiguous_... S7572C1::S7572C2 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C4::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C4*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C7::S7572C3 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C7*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C1::S7572C2 */ AMB_check_base_class_offset(lv, (S7572C3*)(S7572C2*), ABISELECT(416,272), "S7572C1");
    /*is_ambiguous_... S7572C1::S7572C2 */ AMB_check_base_class_offset(lv, (S7572C2*), 0, "S7572C1");
    check_base_class_offset(lv, (S7572C6*)(S7572C5*), ABISELECT(560,368), "S7572C1");
    check_base_class_offset(lv, (S7572C5*)(S7572C4*), ABISELECT(560,368), "S7572C1");
    /*is_ambiguous_... S7572C7::S7572C6 */ AMB_check_base_class_offset(lv, (S7572C6*)(S7572C7*), ABISELECT(7600,4820), "S7572C1");
    check_base_class_offset(lv, (S7572C6*)(S7572C8*), ABISELECT(7904,5004), "S7572C1");
    check_base_class_offset(lv, (S7572C9*)(S7572C8*), ABISELECT(8200,5188), "S7572C1");
    check_base_class_offset(lv, (S7572C3*)(S7572C8*), ABISELECT(8664,5496), "S7572C1");
    check_base_class_offset(lv, (S7572C8*)(S7572C7*), ABISELECT(7904,5004), "S7572C1");
    check_base_class_offset(lv, (S7572C2*)(S7572C7*), ABISELECT(12024,7624), "S7572C1");
    check_base_class_offset(lv, (S7572C7*)(S7572C4*), ABISELECT(1200,768), "S7572C1");
    check_base_class_offset(lv, (S7572C4*), ABISELECT(176,108), "S7572C1");
    check_field_offset(lv, s7572c1f0, ABISELECT(256,156), "S7572C1.s7572c1f0");
    check_field_offset(lv, s7572c1f1, ABISELECT(288,184), "S7572C1.s7572c1f1");
    check_field_offset(lv, s7572c1f2, ABISELECT(296,192), "S7572C1.s7572c1f2");
    check_field_offset(lv, s7572c1f3, ABISELECT(332,228), "S7572C1.s7572c1f3");
    check_field_offset(lv, s7572c1f4, ABISELECT(336,232), "S7572C1.s7572c1f4");
    check_field_offset(lv, s7572c1f5, ABISELECT(344,236), "S7572C1.s7572c1f5");
    check_field_offset(lv, s7572c1f6, ABISELECT(352,240), "S7572C1.s7572c1f6");
    check_field_offset(lv, s7572c1f7, ABISELECT(360,244), "S7572C1.s7572c1f7");
    test_class_info(&lv, &cd_S7572C1);
    dp->~S7572C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7572C1(Test_S7572C1, "S7572C1", ABISELECT(12192,7732));

#else // __cplusplus

extern void _ZN7S7572C1C1Ev();
extern void _ZN7S7572C1D1Ev();
Name_Map name_map_S7572C1[] = {
  NSPAIR(_ZN7S7572C1C1Ev),
  NSPAIR(_ZN7S7572C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C5;
extern VTBL_ENTRY _ZTI7S7572C5[];
extern  VTBL_ENTRY _ZTV7S7572C5[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C6;
extern VTBL_ENTRY _ZTI7S7572C6[];
extern  VTBL_ENTRY _ZTV7S7572C6[];
extern Class_Descriptor cd_S7572C9;
extern VTBL_ENTRY _ZTI7S7572C9[];
extern  VTBL_ENTRY _ZTV7S7572C9[];
extern Class_Descriptor cd_S7572C3;
extern VTBL_ENTRY _ZTI7S7572C3[];
extern  VTBL_ENTRY _ZTV7S7572C3[];
extern Class_Descriptor cd_S7572C8;
extern VTBL_ENTRY _ZTI7S7572C8[];
extern  VTBL_ENTRY _ZTV7S7572C8[];
extern Class_Descriptor cd_S7572C2;
extern VTBL_ENTRY _ZTI7S7572C2[];
extern  VTBL_ENTRY _ZTV7S7572C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C2[];
extern Class_Descriptor cd_S7572C7;
extern VTBL_ENTRY _ZTI7S7572C7[];
extern  VTBL_ENTRY _ZTV7S7572C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C7[];
extern Class_Descriptor cd_S7572C4;
extern VTBL_ENTRY _ZTI7S7572C4[];
extern  VTBL_ENTRY _ZTV7S7572C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C4[];
static Base_Class bases_S7572C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7572C3,    ABISELECT(416,272), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7572C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7572C6,    ABISELECT(560,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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7572C5,    ABISELECT(560,368), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7572C6,    ABISELECT(7600,4820), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7572C6,    ABISELECT(7904,5004), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7572C9,    ABISELECT(8200,5188), //bcp->offset
    61, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7572C3,    ABISELECT(8664,5496), //bcp->offset
    66, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7572C8,    ABISELECT(7904,5004), //bcp->offset
    48, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7572C2,    ABISELECT(12024,7624), //bcp->offset
    69, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7572C7,    ABISELECT(1200,768), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7572C4,    ABISELECT(176,108), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7572C1[];
extern void _ZN7S7572C12v1Ev();
extern void _ZN7S7572C12v2Ev();
extern void _ZN7S7572C1D1Ev();
extern void _ZN7S7572C1D0Ev();
extern void ABISELECT(_ZThn176_N7S7572C1D1Ev,_ZThn108_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7572C1D0Ev,_ZThn108_N7S7572C1D0Ev)();
extern void _ZN7S7572C32v3Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn560_N7S7572C1D1Ev,_ZThn368_N7S7572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev)();
extern void ABISELECT(_ZThn560_N7S7572C1D0Ev,_ZThn368_N7S7572C1D0Ev)() __attribute__((weak));
extern void _ZN7S7572C52v5Ev();
extern void ABISELECT(_ZTv0_n56_N7S7572C1D1Ev,_ZTv0_n28_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn1200_N7S7572C1D1Ev,_ZThn768_N7S7572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7572C1D0Ev,_ZTv0_n28_N7S7572C1D0Ev)();
extern void ABISELECT(_ZThn1200_N7S7572C1D0Ev,_ZThn768_N7S7572C1D0Ev)() __attribute__((weak));
extern void _ZN7S7572C62v4Ev();
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev)();
extern void ABISELECT(_ZThn7904_N7S7572C1D1Ev,_ZThn5004_N7S7572C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev)();
extern void ABISELECT(_ZThn7904_N7S7572C1D0Ev,_ZThn5004_N7S7572C1D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY vtc_S7572C1[] = {
  ABISELECT(12024,7624),
  ABISELECT(7904,5004),
  ABISELECT(7600,4820),
  ABISELECT(1200,768),
  ABISELECT(560,368),
  ABISELECT(416,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7572C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7572C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C1D0Ev,
  ABISELECT(11848,7516),
  ABISELECT(7728,4896),
  ABISELECT(7424,4712),
  ABISELECT(1024,660),
  ABISELECT(240,164),
  ABISELECT(384,260),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N7S7572C1D1Ev,_ZThn108_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N7S7572C1D0Ev,_ZThn108_N7S7572C1D0Ev),
  0,
  ABISELECT(-416,-272),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  0,
  ABISELECT(-560,-368),
  0,
  ABISELECT(-560,-368),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
  ABISELECT(-1200,-768),
  ABISELECT(10824,6856),
  ABISELECT(-784,-496),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-1200,-768),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C1D1Ev,_ZTv0_n28_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C1D0Ev,_ZTv0_n28_N7S7572C1D0Ev),
  0,
  ABISELECT(-7600,-4820),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7904,-5004),
  0,
  ABISELECT(-7904,-5004),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
  ABISELECT(-8200,-5188),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
  ABISELECT(-8664,-5496),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
  ABISELECT(-11608,-7352),
  ABISELECT(-12024,-7624),
  (VTBL_ENTRY)&(_ZTI7S7572C1[0]),
};
extern VTBL_ENTRY _ZTV7S7572C1[];
static  VTBL_ENTRY _tg__ZTV7S7572C2__A__7S7572C1[] = {
  ABISELECT(416,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__A__7S7572C1[] = {
  0,
  ABISELECT(-416,-272),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void _ZN7S7572C4D1Ev();
extern void _ZN7S7572C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C4__7S7572C1[] = {
  ABISELECT(11848,7516),
  ABISELECT(7728,4896),
  ABISELECT(7424,4712),
  ABISELECT(1024,660),
  ABISELECT(240,164),
  ABISELECT(384,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C4D0Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn384_N7S7572C4D1Ev,_ZThn260_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn384_N7S7572C4D0Ev,_ZThn260_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C5__7S7572C4__7S7572C1[] = {
  0,
  ABISELECT(-384,-260),
  0,
  ABISELECT(-384,-260),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C52v5Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C4__7S7572C1[] = {
  0,
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn1024_N7S7572C4D1Ev,_ZThn660_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn1024_N7S7572C4D0Ev,_ZThn660_N7S7572C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7572C7__7S7572C4__7S7572C1[] = {
  ABISELECT(-1024,-660),
  ABISELECT(10824,6856),
  ABISELECT(-784,-496),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  ABISELECT(-1024,-660),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev),
};
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C6__A1__7S7572C4__7S7572C1[] = {
  0,
  ABISELECT(-7424,-4712),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev)();
extern void ABISELECT(_ZThn7728_N7S7572C4D1Ev,_ZThn4896_N7S7572C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev)();
extern void ABISELECT(_ZThn7728_N7S7572C4D0Ev,_ZThn4896_N7S7572C4D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C8__7S7572C4__7S7572C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-7728,-4896),
  0,
  ABISELECT(-7728,-4896),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
};
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C97S7572C8__7S7572C4__7S7572C1[] = {
  ABISELECT(-8024,-5080),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C37S7572C8__A1__7S7572C4__7S7572C1[] = {
  ABISELECT(-8488,-5388),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C4__7S7572C1[] = {
  ABISELECT(-11608,-7352),
  ABISELECT(-11848,-7516),
  (VTBL_ENTRY)&(_ZTI7S7572C4[0]),
};
extern void _ZN7S7572C7D1Ev();
extern void _ZN7S7572C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C7__7S7572C1[] = {
  ABISELECT(10824,6856),
  ABISELECT(-784,-496),
  ABISELECT(6704,4236),
  ABISELECT(6400,4052),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7572C7D0Ev,
};
extern void _ZN7S7572C62v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C6__7S7572C7__7S7572C1[] = {
  0,
  ABISELECT(-6400,-4052),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
};
extern void _ZN7S7572C62v4Ev();
extern void ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev)();
extern void ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev)() __attribute__((weak));
extern void _ZN7S7572C82v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C8__7S7572C7__7S7572C1[] = {
  ABISELECT(760,492),
  ABISELECT(296,184),
  ABISELECT(296,184),
  ABISELECT(296,184),
  0,
  ABISELECT(-6704,-4236),
  0,
  ABISELECT(-6704,-4236),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C62v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7572C82v9Ev,
};
extern void _ZN7S7572C92v6Ev();
extern void _ZN7S7572C92v7Ev();
extern void _ZN7S7572C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C1[] = {
  ABISELECT(-7000,-4420),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C92v6Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v7Ev,
  (VTBL_ENTRY)&_ZN7S7572C92v8Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C1[] = {
  ABISELECT(-7464,-4728),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__A1__7S7572C7__7S7572C1[] = {
  0,
  ABISELECT(784,496),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__7S7572C7__7S7572C1[] = {
  ABISELECT(-11608,-7352),
  ABISELECT(-10824,-6856),
  (VTBL_ENTRY)&(_ZTI7S7572C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7572C2__A1__7S7572C1[] = {
  ABISELECT(-11608,-7352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
};
extern void _ZN7S7572C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7572C3__7S7572C2__A1__7S7572C1[] = {
  0,
  ABISELECT(11608,7352),
  (VTBL_ENTRY)&(_ZTI7S7572C2[0]),
  (VTBL_ENTRY)&_ZN7S7572C32v3Ev,
};
static  VTT_ENTRY vtt_S7572C1[] = {
  {&(_ZTV7S7572C1[8]),  8,72},
  {&(_tg__ZTV7S7572C2__A__7S7572C1[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__A__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C4__7S7572C1[8]),  8,10},
  {&(_tg__ZTV7S7572C5__7S7572C4__7S7572C1[5]),  5,9},
  {&(_tg__ZTV7S7572C3__7S7572C4__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C7__7S7572C4__7S7572C1[7]),  7,9},
  {&(_tg__ZTV7S7572C6__A1__7S7572C4__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C8__7S7572C4__7S7572C1[9]),  9,13},
  {&(_tg__ZTV7S7572C97S7572C8__7S7572C4__7S7572C1[2]),  2,5},
  {&(_tg__ZTV7S7572C37S7572C8__A1__7S7572C4__7S7572C1[2]),  2,3},
  {&(_tg__ZTV7S7572C2__7S7572C4__7S7572C1[3]),  3,3},
  {&(_ZTV7S7572C1[25]),  25,72},
  {&(_ZTV7S7572C1[20]),  20,72},
  {&(_ZTV7S7572C1[31]),  31,72},
  {&(_ZTV7S7572C1[42]),  42,72},
  {&(_ZTV7S7572C1[47]),  47,72},
  {&(_ZTV7S7572C1[57]),  57,72},
  {&(_ZTV7S7572C1[63]),  63,72},
  {&(_ZTV7S7572C1[68]),  68,72},
  {&(_ZTV7S7572C1[72]),  72,72},
  {&(_tg__ZTV7S7572C7__7S7572C1[6]),  6,8},
  {&(_tg__ZTV7S7572C6__7S7572C7__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C8__7S7572C7__7S7572C1[9]),  9,13},
  {&(_tg__ZTV7S7572C97S7572C8__7S7572C7__7S7572C1[2]),  2,5},
  {&(_tg__ZTV7S7572C37S7572C8__7S7572C7__7S7572C1[2]),  2,3},
  {&(_tg__ZTV7S7572C3__A1__7S7572C7__7S7572C1[3]),  3,4},
  {&(_tg__ZTV7S7572C2__7S7572C7__7S7572C1[3]),  3,3},
  {&(_tg__ZTV7S7572C2__A1__7S7572C1[3]),  3,3},
  {&(_tg__ZTV7S7572C3__7S7572C2__A1__7S7572C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7572C1[];
extern  VTBL_ENTRY _ZTV7S7572C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7572C1[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D0Ev,_ZTv0_n16_N7S7572C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D0Ev,_ZThn4236_N7S7572C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C7D1Ev,_ZTv0_n16_N7S7572C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn6704_N7S7572C7D1Ev,_ZThn4236_N7S7572C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D0Ev,_ZTv0_n28_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N7S7572C4D0Ev,_ZThn660_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C4D1Ev,_ZTv0_n28_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1024_N7S7572C4D1Ev,_ZThn660_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D0Ev,_ZTv0_n16_N7S7572C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7728_N7S7572C4D0Ev,_ZThn4896_N7S7572C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7572C4D0Ev,_ZThn260_N7S7572C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C4D1Ev,_ZTv0_n16_N7S7572C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7728_N7S7572C4D1Ev,_ZThn4896_N7S7572C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S7572C4D1Ev,_ZThn260_N7S7572C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C1D0Ev,_ZTv0_n28_N7S7572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7572C1D0Ev,_ZThn768_N7S7572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7572C1D1Ev,_ZTv0_n28_N7S7572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N7S7572C1D1Ev,_ZThn768_N7S7572C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C1D0Ev,_ZTv0_n16_N7S7572C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7904_N7S7572C1D0Ev,_ZThn5004_N7S7572C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7572C1D0Ev,_ZThn368_N7S7572C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7572C1D1Ev,_ZTv0_n16_N7S7572C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7904_N7S7572C1D1Ev,_ZThn5004_N7S7572C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7572C1D1Ev,_ZThn368_N7S7572C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7572C1 = {  "S7572C1", // class name
  bases_S7572C1, 12,
  &(vtc_S7572C1[0]), // expected_vtbl_contents
  &(vtt_S7572C1[0]), // expected_vtt_contents
  ABISELECT(12192,7732), // object size
  NSPAIRA(_ZTI7S7572C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7572C1),72, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7572C1),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C2  {
  __tsi64 s19951c2f0;
  virtual void  v1(); // _ZN8S19951C22v1Ev
  virtual void  v2(); // _ZN8S19951C22v2Ev
  virtual void  v3(); // _ZN8S19951C22v3Ev
  ~S19951C2(); // tgen
  S19951C2(); // tgen
};
//SIG(-1 S19951C2) C1{ v1 v2 v3 FL}


void  S19951C2 ::v1(){vfunc_called(this, "_ZN8S19951C22v1Ev");}
void  S19951C2 ::v2(){vfunc_called(this, "_ZN8S19951C22v2Ev");}
void  S19951C2 ::v3(){vfunc_called(this, "_ZN8S19951C22v3Ev");}
S19951C2 ::~S19951C2(){ note_dtor("S19951C2", this);} // tgen
S19951C2 ::S19951C2(){ note_ctor("S19951C2", this);} // tgen

static void Test_S19951C2()
{
  extern Class_Descriptor cd_S19951C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19951C2, buf);
    S19951C2 *dp, &lv = *(dp=new (buf) S19951C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19951C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C2)");
    check_field_offset(lv, s19951c2f0, ABISELECT(8,4), "S19951C2.s19951c2f0");
    test_class_info(&lv, &cd_S19951C2);
    dp->~S19951C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C2(Test_S19951C2, "S19951C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19951C2C1Ev();
extern void _ZN8S19951C2D1Ev();
Name_Map name_map_S19951C2[] = {
  NSPAIR(_ZN8S19951C2C1Ev),
  NSPAIR(_ZN8S19951C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19951C2[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
static  VTBL_ENTRY vtc_S19951C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C2[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
};
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
Class_Descriptor cd_S19951C2 = {  "S19951C2", // class name
  0,0,//no base classes
  &(vtc_S19951C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19951C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19951C2),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  S19951C5  : S19951C2 {
  __tsi64 s19951c5f0;
  virtual void  v4(); // _ZN8S19951C52v4Ev
  virtual void  v5(); // _ZN8S19951C52v5Ev
  virtual void  v6(); // _ZN8S19951C52v6Ev
  virtual void  v7(); // _ZN8S19951C52v7Ev
  virtual void  v8(); // _ZN8S19951C52v8Ev
  ~S19951C5(); // tgen
  S19951C5(); // tgen
};
//SIG(-1 S19951C5) C1{ BC2{ v6 v7 v8 FL} v1 v2 v3 v4 v5 FL}


void  S19951C5 ::v4(){vfunc_called(this, "_ZN8S19951C52v4Ev");}
void  S19951C5 ::v5(){vfunc_called(this, "_ZN8S19951C52v5Ev");}
void  S19951C5 ::v6(){vfunc_called(this, "_ZN8S19951C52v6Ev");}
void  S19951C5 ::v7(){vfunc_called(this, "_ZN8S19951C52v7Ev");}
void  S19951C5 ::v8(){vfunc_called(this, "_ZN8S19951C52v8Ev");}
S19951C5 ::~S19951C5(){ note_dtor("S19951C5", this);} // tgen
S19951C5 ::S19951C5(){ note_ctor("S19951C5", this);} // tgen

static void Test_S19951C5()
{
  extern Class_Descriptor cd_S19951C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19951C5, buf);
    S19951C5 *dp, &lv = *(dp=new (buf) S19951C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S19951C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C5)");
    check_base_class_offset(lv, (S19951C2*), 0, "S19951C5");
    check_field_offset(lv, s19951c5f0, ABISELECT(16,12), "S19951C5.s19951c5f0");
    test_class_info(&lv, &cd_S19951C5);
    dp->~S19951C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C5(Test_S19951C5, "S19951C5", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S19951C5C1Ev();
extern void _ZN8S19951C5D1Ev();
Name_Map name_map_S19951C5[] = {
  NSPAIR(_ZN8S19951C5C1Ev),
  NSPAIR(_ZN8S19951C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
static Base_Class bases_S19951C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C5[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY vtc_S19951C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C5[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
Class_Descriptor cd_S19951C5 = {  "S19951C5", // class name
  bases_S19951C5, 1,
  &(vtc_S19951C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S19951C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19951C5),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  S19951C6  {
  short s19951c6f0;
  int s19951c6f1;
  virtual void  v9(); // _ZN8S19951C62v9Ev
  virtual void  v10(); // _ZN8S19951C63v10Ev
  virtual void  v11(); // _ZN8S19951C63v11Ev
  ~S19951C6(); // tgen
  S19951C6(); // tgen
};
//SIG(-1 S19951C6) C1{ v1 v2 v3 Fs Fi}


void  S19951C6 ::v9(){vfunc_called(this, "_ZN8S19951C62v9Ev");}
void  S19951C6 ::v10(){vfunc_called(this, "_ZN8S19951C63v10Ev");}
void  S19951C6 ::v11(){vfunc_called(this, "_ZN8S19951C63v11Ev");}
S19951C6 ::~S19951C6(){ note_dtor("S19951C6", this);} // tgen
S19951C6 ::S19951C6(){ note_ctor("S19951C6", this);} // tgen

static void Test_S19951C6()
{
  extern Class_Descriptor cd_S19951C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19951C6, buf);
    S19951C6 *dp, &lv = *(dp=new (buf) S19951C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19951C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C6)");
    check_field_offset(lv, s19951c6f0, ABISELECT(8,4), "S19951C6.s19951c6f0");
    check_field_offset(lv, s19951c6f1, ABISELECT(12,8), "S19951C6.s19951c6f1");
    test_class_info(&lv, &cd_S19951C6);
    dp->~S19951C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C6(Test_S19951C6, "S19951C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19951C6C1Ev();
extern void _ZN8S19951C6D1Ev();
Name_Map name_map_S19951C6[] = {
  NSPAIR(_ZN8S19951C6C1Ev),
  NSPAIR(_ZN8S19951C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19951C6[];
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY vtc_S19951C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C6[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
Class_Descriptor cd_S19951C6 = {  "S19951C6", // class name
  0,0,//no base classes
  &(vtc_S19951C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19951C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19951C6),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  S19951C4  : S19951C2 , S19951C5 , virtual S19951C6 {
  virtual  ~S19951C4(); // _ZN8S19951C4D2Ev
  virtual void  v12(); // _ZN8S19951C43v12Ev
  virtual void  v13(); // _ZN8S19951C43v13Ev
  virtual void  v14(); // _ZN8S19951C43v14Ev
  virtual void  v15(); // _ZN8S19951C43v15Ev
  virtual void  v16(); // _ZN8S19951C43v16Ev
  S19951C4(); // tgen
};
//SIG(-1 S19951C4) C1{ BC2{ v6 v7 v8 FL} BC3{ BC2 v9 v10 v11 v12 v13 FL} VBC4{ v14 v15 v16 Fs Fi} vd v1 v2 v3 v4 v5}


 S19951C4 ::~S19951C4(){ note_dtor("S19951C4", this);}
void  S19951C4 ::v12(){vfunc_called(this, "_ZN8S19951C43v12Ev");}
void  S19951C4 ::v13(){vfunc_called(this, "_ZN8S19951C43v13Ev");}
void  S19951C4 ::v14(){vfunc_called(this, "_ZN8S19951C43v14Ev");}
void  S19951C4 ::v15(){vfunc_called(this, "_ZN8S19951C43v15Ev");}
void  S19951C4 ::v16(){vfunc_called(this, "_ZN8S19951C43v16Ev");}
S19951C4 ::S19951C4(){ note_ctor("S19951C4", this);} // tgen

static void Test_S19951C4()
{
  extern Class_Descriptor cd_S19951C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,12)];
    init_test(&cd_S19951C4, buf);
    S19951C4 *dp, &lv = *(dp=new (buf) S19951C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,44), "sizeof(S19951C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C4)");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*), 0, "S19951C4");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(16,12), "S19951C4");
    check_base_class_offset(lv, (S19951C5*), ABISELECT(16,12), "S19951C4");
    check_base_class_offset(lv, (S19951C6*), ABISELECT(40,32), "S19951C4");
    test_class_info(&lv, &cd_S19951C4);
    dp->~S19951C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C4(Test_S19951C4, "S19951C4", ABISELECT(56,44));

#else // __cplusplus

extern void _ZN8S19951C4C1Ev();
extern void _ZN8S19951C4D2Ev();
Name_Map name_map_S19951C4[] = {
  NSPAIR(_ZN8S19951C4C1Ev),
  NSPAIR(_ZN8S19951C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
static Base_Class bases_S19951C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19951C2,    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
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(16,12), //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},
  {&cd_S19951C6,    ABISELECT(40,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C4[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY vtc_S19951C4[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern VTBL_ENTRY _ZTV8S19951C4[];
static  VTT_ENTRY vtt_S19951C4[] = {
  {&(_ZTV8S19951C4[3]),  3,31},
  {&(_ZTV8S19951C4[28]),  28,31},
};
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
Class_Descriptor cd_S19951C4 = {  "S19951C4", // class name
  bases_S19951C4, 4,
  &(vtc_S19951C4[0]), // expected_vtbl_contents
  &(vtt_S19951C4[0]), // expected_vtt_contents
  ABISELECT(56,44), // object size
  NSPAIRA(_ZTI8S19951C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19951C4),31, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C4),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C7  {
  long double s19951c7f0[5];
  virtual void  v17(); // _ZN8S19951C73v17Ev
  virtual void  v18(); // _ZN8S19951C73v18Ev
  virtual void  v19(); // _ZN8S19951C73v19Ev
  virtual void  v20(); // _ZN8S19951C73v20Ev
  virtual void  v21(); // _ZN8S19951C73v21Ev
  ~S19951C7(); // tgen
  S19951C7(); // tgen
};
//SIG(-1 S19951C7) C1{ v1 v2 v3 v4 v5 FD[5]}


void  S19951C7 ::v17(){vfunc_called(this, "_ZN8S19951C73v17Ev");}
void  S19951C7 ::v18(){vfunc_called(this, "_ZN8S19951C73v18Ev");}
void  S19951C7 ::v19(){vfunc_called(this, "_ZN8S19951C73v19Ev");}
void  S19951C7 ::v20(){vfunc_called(this, "_ZN8S19951C73v20Ev");}
void  S19951C7 ::v21(){vfunc_called(this, "_ZN8S19951C73v21Ev");}
S19951C7 ::~S19951C7(){ note_dtor("S19951C7", this);} // tgen
S19951C7 ::S19951C7(){ note_ctor("S19951C7", this);} // tgen

static void Test_S19951C7()
{
  extern Class_Descriptor cd_S19951C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,17)];
    init_test(&cd_S19951C7, buf);
    S19951C7 *dp, &lv = *(dp=new (buf) S19951C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S19951C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C7)");
    check_field_offset(lv, s19951c7f0, ABISELECT(16,4), "S19951C7.s19951c7f0");
    test_class_info(&lv, &cd_S19951C7);
    dp->~S19951C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C7(Test_S19951C7, "S19951C7", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN8S19951C7C1Ev();
extern void _ZN8S19951C7D1Ev();
Name_Map name_map_S19951C7[] = {
  NSPAIR(_ZN8S19951C7C1Ev),
  NSPAIR(_ZN8S19951C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19951C7[];
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
static  VTBL_ENTRY vtc_S19951C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C7[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
};
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
Class_Descriptor cd_S19951C7 = {  "S19951C7", // class name
  0,0,//no base classes
  &(vtc_S19951C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI8S19951C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19951C7),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  S19951C9  : S19951C2 {
  virtual void  v22(); // _ZN8S19951C93v22Ev
  virtual void  v23(); // _ZN8S19951C93v23Ev
  virtual void  v24(); // _ZN8S19951C93v24Ev
  virtual void  v25(); // _ZN8S19951C93v25Ev
  virtual void  v26(); // _ZN8S19951C93v26Ev
  virtual void  v27(); // _ZN8S19951C93v27Ev
  ~S19951C9(); // tgen
  S19951C9(); // tgen
};
//SIG(-1 S19951C9) C1{ BC2{ v7 v8 v9 FL} v1 v2 v3 v4 v5 v6}


void  S19951C9 ::v22(){vfunc_called(this, "_ZN8S19951C93v22Ev");}
void  S19951C9 ::v23(){vfunc_called(this, "_ZN8S19951C93v23Ev");}
void  S19951C9 ::v24(){vfunc_called(this, "_ZN8S19951C93v24Ev");}
void  S19951C9 ::v25(){vfunc_called(this, "_ZN8S19951C93v25Ev");}
void  S19951C9 ::v26(){vfunc_called(this, "_ZN8S19951C93v26Ev");}
void  S19951C9 ::v27(){vfunc_called(this, "_ZN8S19951C93v27Ev");}
S19951C9 ::~S19951C9(){ note_dtor("S19951C9", this);} // tgen
S19951C9 ::S19951C9(){ note_ctor("S19951C9", this);} // tgen

static void Test_S19951C9()
{
  extern Class_Descriptor cd_S19951C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19951C9, buf);
    S19951C9 *dp, &lv = *(dp=new (buf) S19951C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19951C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C9)");
    check_base_class_offset(lv, (S19951C2*), 0, "S19951C9");
    test_class_info(&lv, &cd_S19951C9);
    dp->~S19951C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C9(Test_S19951C9, "S19951C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19951C9C1Ev();
extern void _ZN8S19951C9D1Ev();
Name_Map name_map_S19951C9[] = {
  NSPAIR(_ZN8S19951C9C1Ev),
  NSPAIR(_ZN8S19951C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
static Base_Class bases_S19951C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C9[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY vtc_S19951C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C9[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
Class_Descriptor cd_S19951C9 = {  "S19951C9", // class name
  bases_S19951C9, 1,
  &(vtc_S19951C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19951C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19951C9),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  S19951C8  : S19951C2 , S19951C7 , virtual S19951C9 , virtual S19951C5 {
  virtual void  v28(); // _ZN8S19951C83v28Ev
  virtual void  v29(); // _ZN8S19951C83v29Ev
  ~S19951C8(); // tgen
  S19951C8(); // tgen
};
//SIG(-1 S19951C8) C1{ BC2{ v3 v4 v5 FL} BC3{ v6 v7 v8 v9 v10 FD[5]} VBC4{ BC2 v11 v12 v13 v14 v15 v16} VBC5{ BC2 v17 v18 v19 v20 v21 FL} v1 v2}


void  S19951C8 ::v28(){vfunc_called(this, "_ZN8S19951C83v28Ev");}
void  S19951C8 ::v29(){vfunc_called(this, "_ZN8S19951C83v29Ev");}
S19951C8 ::~S19951C8(){ note_dtor("S19951C8", this);} // tgen
S19951C8 ::S19951C8(){ note_ctor("S19951C8", this);} // tgen

static void Test_S19951C8()
{
  extern Class_Descriptor cd_S19951C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,28)];
    init_test(&cd_S19951C8, buf);
    S19951C8 *dp, &lv = *(dp=new (buf) S19951C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S19951C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C8)");
    /*is_ambiguous_... S19951C8::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*), 0, "S19951C8");
    check_base_class_offset(lv, (S19951C7*), ABISELECT(16,12), "S19951C8");
    check_base_class_offset(lv, (S19951C2*)(S19951C9*), ABISELECT(112,76), "S19951C8");
    check_base_class_offset(lv, (S19951C9*), ABISELECT(112,76), "S19951C8");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(128,88), "S19951C8");
    check_base_class_offset(lv, (S19951C5*), ABISELECT(128,88), "S19951C8");
    test_class_info(&lv, &cd_S19951C8);
    dp->~S19951C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C8(Test_S19951C8, "S19951C8", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN8S19951C8C1Ev();
extern void _ZN8S19951C8D1Ev();
Name_Map name_map_S19951C8[] = {
  NSPAIR(_ZN8S19951C8C1Ev),
  NSPAIR(_ZN8S19951C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C9;
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
static Base_Class bases_S19951C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19951C7,    ABISELECT(16,12), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C2,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C9,    ABISELECT(112,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C2,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(128,88), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C8[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY vtc_S19951C8[] = {
  ABISELECT(128,88),
  ABISELECT(112,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern VTBL_ENTRY _ZTV8S19951C8[];
static  VTT_ENTRY vtt_S19951C8[] = {
  {&(_ZTV8S19951C8[4]),  4,54},
  {&(_ZTV8S19951C8[27]),  27,54},
  {&(_ZTV8S19951C8[46]),  46,54},
};
extern VTBL_ENTRY _ZTI8S19951C8[];
extern  VTBL_ENTRY _ZTV8S19951C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C8[];
Class_Descriptor cd_S19951C8 = {  "S19951C8", // class name
  bases_S19951C8, 6,
  &(vtc_S19951C8[0]), // expected_vtbl_contents
  &(vtt_S19951C8[0]), // expected_vtt_contents
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI8S19951C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19951C8),54, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C8),3, //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  S19951C3  : S19951C4 , S19951C7 , S19951C8 {
  void *s19951c3f0;
  virtual  ~S19951C3(); // _ZN8S19951C3D2Ev
  virtual void  v30(); // _ZN8S19951C33v30Ev
  virtual void  v31(); // _ZN8S19951C33v31Ev
  virtual void  v32(); // _ZN8S19951C33v32Ev
  virtual void  v33(); // _ZN8S19951C33v33Ev
  virtual void  v34(); // _ZN8S19951C33v34Ev
  virtual void  v35(); // _ZN8S19951C33v35Ev
  S19951C3(); // tgen
};
//SIG(-1 S19951C3) C1{ BC2{ BC3{ v7 v8 v9 FL} BC4{ BC3 v10 v11 v12 v13 v14 FL} VBC5{ v15 v16 v17 Fs Fi} vd v18 v19 v20 v21 v22} BC6{ v23 v24 v25 v26 v27 FD[5]} BC7{ BC3 BC6 VBC8{ BC3 v28 v29 v30 v31 v32 v33} VBC4 v34 v35} vd v1 v2 v3 v4 v5 v6 Fp}


 S19951C3 ::~S19951C3(){ note_dtor("S19951C3", this);}
void  S19951C3 ::v30(){vfunc_called(this, "_ZN8S19951C33v30Ev");}
void  S19951C3 ::v31(){vfunc_called(this, "_ZN8S19951C33v31Ev");}
void  S19951C3 ::v32(){vfunc_called(this, "_ZN8S19951C33v32Ev");}
void  S19951C3 ::v33(){vfunc_called(this, "_ZN8S19951C33v33Ev");}
void  S19951C3 ::v34(){vfunc_called(this, "_ZN8S19951C33v34Ev");}
void  S19951C3 ::v35(){vfunc_called(this, "_ZN8S19951C33v35Ev");}
S19951C3 ::S19951C3(){ note_ctor("S19951C3", this);} // tgen

static void Test_S19951C3()
{
  extern Class_Descriptor cd_S19951C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,56)];
    init_test(&cd_S19951C3, buf);
    S19951C3 *dp, &lv = *(dp=new (buf) S19951C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,220), "sizeof(S19951C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C3)");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*), 0, "S19951C3");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*), ABISELECT(16,12), "S19951C3");
    check_base_class_offset(lv, (S19951C5*)(S19951C4*), ABISELECT(16,12), "S19951C3");
    check_base_class_offset(lv, (S19951C6*)(S19951C4*), ABISELECT(264,176), "S19951C3");
    check_base_class_offset(lv, (S19951C4*), 0, "S19951C3");
    /*is_ambiguous_... S19951C3::S19951C7 */ AMB_check_base_class_offset(lv, (S19951C7*), ABISELECT(48,32), "S19951C3");
    /*is_ambiguous_... S19951C8::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C8*), ABISELECT(144,96), "S19951C3");
    check_base_class_offset(lv, (S19951C7*)(S19951C8*), ABISELECT(160,108), "S19951C3");
    check_base_class_offset(lv, (S19951C2*)(S19951C9*), ABISELECT(280,188), "S19951C3");
    check_base_class_offset(lv, (S19951C9*)(S19951C8*), ABISELECT(280,188), "S19951C3");
    /*is_ambiguous_... S19951C3::S19951C5 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(296,200), "S19951C3");
    check_base_class_offset(lv, (S19951C5*)(S19951C8*), ABISELECT(296,200), "S19951C3");
    check_base_class_offset(lv, (S19951C8*), ABISELECT(144,96), "S19951C3");
    check_field_offset(lv, s19951c3f0, ABISELECT(256,172), "S19951C3.s19951c3f0");
    test_class_info(&lv, &cd_S19951C3);
    dp->~S19951C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C3(Test_S19951C3, "S19951C3", ABISELECT(320,220));

#else // __cplusplus

extern void _ZN8S19951C3C1Ev();
extern void _ZN8S19951C3D2Ev();
Name_Map name_map_S19951C3[] = {
  NSPAIR(_ZN8S19951C3C1Ev),
  NSPAIR(_ZN8S19951C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C9;
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C8;
extern VTBL_ENTRY _ZTI8S19951C8[];
extern  VTBL_ENTRY _ZTV8S19951C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C8[];
static Base_Class bases_S19951C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S19951C2,    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
    7, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(16,12), //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
    8, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19951C6,    ABISELECT(264,176), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19951C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C7,    ABISELECT(48,32), //bcp->offset
    31, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C2,    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
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19951C7,    ABISELECT(160,108), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(280,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19951C9,    ABISELECT(280,188), //bcp->offset
    62, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19951C2,    ABISELECT(296,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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(296,200), //bcp->offset
    82, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19951C8,    ABISELECT(144,96), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C3[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C3D1Ev();
extern void _ZN8S19951C3D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C33v30Ev();
extern void _ZN8S19951C33v31Ev();
extern void _ZN8S19951C33v32Ev();
extern void _ZN8S19951C33v33Ev();
extern void _ZN8S19951C33v34Ev();
extern void _ZN8S19951C33v35Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY vtc_S19951C3[] = {
  ABISELECT(296,200),
  ABISELECT(280,188),
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v35Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(152,104),
  ABISELECT(136,92),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern VTBL_ENTRY _ZTV8S19951C3[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__8S19951C3[] = {
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C4__8S19951C3[] = {
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C8__8S19951C3[] = {
  ABISELECT(152,104),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C9__8S19951C8__8S19951C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C5__8S19951C8__8S19951C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
static  VTT_ENTRY vtt_S19951C3[] = {
  {&(_ZTV8S19951C3[5]),  5,100},
  {&(_tg__ZTV8S19951C4__8S19951C3[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C4__8S19951C3[5]),  5,8},
  {&(_tg__ZTV8S19951C8__8S19951C3[4]),  4,9},
  {&(_tg__ZTV8S19951C9__8S19951C8__8S19951C3[11]),  11,20},
  {&(_tg__ZTV8S19951C5__8S19951C8__8S19951C3[10]),  10,18},
  {&(_ZTV8S19951C3[59]),  59,100},
  {&(_ZTV8S19951C3[42]),  42,100},
  {&(_ZTV8S19951C3[73]),  73,100},
  {&(_ZTV8S19951C3[92]),  92,100},
};
extern VTBL_ENTRY _ZTI8S19951C3[];
extern  VTBL_ENTRY _ZTV8S19951C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C3[];
Class_Descriptor cd_S19951C3 = {  "S19951C3", // class name
  bases_S19951C3, 13,
  &(vtc_S19951C3[0]), // expected_vtbl_contents
  &(vtt_S19951C3[0]), // expected_vtt_contents
  ABISELECT(320,220), // object size
  NSPAIRA(_ZTI8S19951C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19951C3),100, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C3),10, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C10  : virtual S19951C7 , virtual S19951C4 {
  int s19951c10f0;
  virtual  ~S19951C10(); // _ZN9S19951C10D2Ev
  virtual void  v36(); // _ZN9S19951C103v36Ev
  virtual void  v37(); // _ZN9S19951C103v37Ev
  virtual void  v38(); // _ZN9S19951C103v38Ev
  S19951C10(); // tgen
};
//SIG(-1 S19951C10) C1{ VBC2{ v4 v5 v6 v7 v8 FD[5]} VBC3{ BC4{ v9 v10 v11 FL} BC5{ BC4 v12 v13 v14 v15 v16 FL} VBC6{ v17 v18 v19 Fs Fi} vd v20 v21 v22 v23 v24} vd v1 v2 v3 Fi}


 S19951C10 ::~S19951C10(){ note_dtor("S19951C10", this);}
void  S19951C10 ::v36(){vfunc_called(this, "_ZN9S19951C103v36Ev");}
void  S19951C10 ::v37(){vfunc_called(this, "_ZN9S19951C103v37Ev");}
void  S19951C10 ::v38(){vfunc_called(this, "_ZN9S19951C103v38Ev");}
S19951C10 ::S19951C10(){ note_ctor("S19951C10", this);} // tgen

static void Test_S19951C10()
{
  extern Class_Descriptor cd_S19951C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,30)];
    init_test(&cd_S19951C10, buf);
    S19951C10 *dp, &lv = *(dp=new (buf) S19951C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,116), "sizeof(S19951C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C10)");
    check_base_class_offset(lv, (S19951C7*), ABISELECT(16,8), "S19951C10");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*), ABISELECT(112,72), "S19951C10");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*), ABISELECT(128,84), "S19951C10");
    check_base_class_offset(lv, (S19951C5*)(S19951C4*), ABISELECT(128,84), "S19951C10");
    check_base_class_offset(lv, (S19951C6*)(S19951C4*), ABISELECT(152,104), "S19951C10");
    check_base_class_offset(lv, (S19951C4*), ABISELECT(112,72), "S19951C10");
    check_field_offset(lv, s19951c10f0, ABISELECT(8,4), "S19951C10.s19951c10f0");
    test_class_info(&lv, &cd_S19951C10);
    dp->~S19951C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C10(Test_S19951C10, "S19951C10", ABISELECT(176,116));

#else // __cplusplus

extern void _ZN9S19951C10C1Ev();
extern void _ZN9S19951C10D2Ev();
Name_Map name_map_S19951C10[] = {
  NSPAIR(_ZN9S19951C10C1Ev),
  NSPAIR(_ZN9S19951C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
static Base_Class bases_S19951C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C7,    ABISELECT(16,8), //bcp->offset
    10, //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_S19951C2,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(128,84), //bcp->offset
    49, //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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C6,    ABISELECT(152,104), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19951C4,    ABISELECT(112,72), //bcp->offset
    22, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19951C10[];
extern void _ZN9S19951C10D1Ev();
extern void _ZN9S19951C10D0Ev();
extern void _ZN9S19951C103v36Ev();
extern void _ZN9S19951C103v37Ev();
extern void _ZN9S19951C103v38Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev)();
extern void ABISELECT(_ZThn112_N9S19951C10D1Ev,_ZThn72_N9S19951C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev)();
extern void ABISELECT(_ZThn112_N9S19951C10D0Ev,_ZThn72_N9S19951C10D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY vtc_S19951C10[] = {
  ABISELECT(152,104),
  ABISELECT(112,72),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN9S19951C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v38Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-72),
  0,
  0,
  0,
  ABISELECT(40,32),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  0,
  0,
  0,
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern VTBL_ENTRY _ZTV9S19951C10[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__9S19951C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C4__9S19951C10[] = {
  0,
  0,
  0,
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
static  VTT_ENTRY vtt_S19951C10[] = {
  {&(_ZTV9S19951C10[5]),  5,67},
  {&(_ZTV9S19951C10[17]),  17,67},
  {&(_ZTV9S19951C10[39]),  39,67},
  {&(_ZTV9S19951C10[51]),  51,67},
  {&(_ZTV9S19951C10[64]),  64,67},
  {&(_tg__ZTV8S19951C4__9S19951C10[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C4__9S19951C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19951C10[];
extern  VTBL_ENTRY _ZTV9S19951C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C10[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19951C10D0Ev,_ZThn72_N9S19951C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19951C10D1Ev,_ZThn72_N9S19951C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19951C10 = {  "S19951C10", // class name
  bases_S19951C10, 6,
  &(vtc_S19951C10[0]), // expected_vtbl_contents
  &(vtt_S19951C10[0]), // expected_vtt_contents
  ABISELECT(176,116), // object size
  NSPAIRA(_ZTI9S19951C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19951C10),67, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19951C10),7, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C12  {
  long double s19951c12f0[6];
  virtual  ~S19951C12(); // _ZN9S19951C12D1Ev
  virtual void  v39(); // _ZN9S19951C123v39Ev
  virtual void  v40(); // _ZN9S19951C123v40Ev
  virtual void  v41(); // _ZN9S19951C123v41Ev
  virtual void  v42(); // _ZN9S19951C123v42Ev
  virtual void  v43(); // _ZN9S19951C123v43Ev
  virtual void  v44(); // _ZN9S19951C123v44Ev
  S19951C12(); // tgen
};
//SIG(-1 S19951C12) C1{ vd v1 v2 v3 v4 v5 v6 FD[6]}


 S19951C12 ::~S19951C12(){ note_dtor("S19951C12", this);}
void  S19951C12 ::v39(){vfunc_called(this, "_ZN9S19951C123v39Ev");}
void  S19951C12 ::v40(){vfunc_called(this, "_ZN9S19951C123v40Ev");}
void  S19951C12 ::v41(){vfunc_called(this, "_ZN9S19951C123v41Ev");}
void  S19951C12 ::v42(){vfunc_called(this, "_ZN9S19951C123v42Ev");}
void  S19951C12 ::v43(){vfunc_called(this, "_ZN9S19951C123v43Ev");}
void  S19951C12 ::v44(){vfunc_called(this, "_ZN9S19951C123v44Ev");}
S19951C12 ::S19951C12(){ note_ctor("S19951C12", this);} // tgen

static void Test_S19951C12()
{
  extern Class_Descriptor cd_S19951C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(8,20)];
    init_test(&cd_S19951C12, buf);
    S19951C12 *dp, &lv = *(dp=new (buf) S19951C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,76), "sizeof(S19951C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C12)");
    check_field_offset(lv, s19951c12f0, ABISELECT(16,4), "S19951C12.s19951c12f0");
    test_class_info(&lv, &cd_S19951C12);
    dp->~S19951C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C12(Test_S19951C12, "S19951C12", ABISELECT(112,76));

#else // __cplusplus

extern void _ZN9S19951C12C1Ev();
extern void _ZN9S19951C12D1Ev();
Name_Map name_map_S19951C12[] = {
  NSPAIR(_ZN9S19951C12C1Ev),
  NSPAIR(_ZN9S19951C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19951C12[];
extern void _ZN9S19951C12D1Ev();
extern void _ZN9S19951C12D0Ev();
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY vtc_S19951C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C12[0]),
  (VTBL_ENTRY)&_ZN9S19951C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C12D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
extern VTBL_ENTRY _ZTI9S19951C12[];
extern  VTBL_ENTRY _ZTV9S19951C12[];
Class_Descriptor cd_S19951C12 = {  "S19951C12", // class name
  0,0,//no base classes
  &(vtc_S19951C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,76), // object size
  NSPAIRA(_ZTI9S19951C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19951C12),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  S19951C13  : S19951C5 {
  int s19951c13f0[2];
  __tsi64 s19951c13f1[8];
  virtual void  v45(); // _ZN9S19951C133v45Ev
  virtual void  v46(); // _ZN9S19951C133v46Ev
  virtual void  v47(); // _ZN9S19951C133v47Ev
  virtual void  v48(); // _ZN9S19951C133v48Ev
  virtual void  v49(); // _ZN9S19951C133v49Ev
  ~S19951C13(); // tgen
  S19951C13(); // tgen
};
//SIG(-1 S19951C13) C1{ BC2{ BC3{ v6 v7 v8 FL} v9 v10 v11 v12 v13 FL} v1 v2 v3 v4 v5 Fi[2] FL[8]}


void  S19951C13 ::v45(){vfunc_called(this, "_ZN9S19951C133v45Ev");}
void  S19951C13 ::v46(){vfunc_called(this, "_ZN9S19951C133v46Ev");}
void  S19951C13 ::v47(){vfunc_called(this, "_ZN9S19951C133v47Ev");}
void  S19951C13 ::v48(){vfunc_called(this, "_ZN9S19951C133v48Ev");}
void  S19951C13 ::v49(){vfunc_called(this, "_ZN9S19951C133v49Ev");}
S19951C13 ::~S19951C13(){ note_dtor("S19951C13", this);} // tgen
S19951C13 ::S19951C13(){ note_ctor("S19951C13", this);} // tgen

static void Test_S19951C13()
{
  extern Class_Descriptor cd_S19951C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,24)];
    init_test(&cd_S19951C13, buf);
    S19951C13 *dp, &lv = *(dp=new (buf) S19951C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,92), "sizeof(S19951C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19951C13)");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*), 0, "S19951C13");
    check_base_class_offset(lv, (S19951C5*), 0, "S19951C13");
    check_field_offset(lv, s19951c13f0, ABISELECT(24,20), "S19951C13.s19951c13f0");
    check_field_offset(lv, s19951c13f1, ABISELECT(32,28), "S19951C13.s19951c13f1");
    test_class_info(&lv, &cd_S19951C13);
    dp->~S19951C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C13(Test_S19951C13, "S19951C13", ABISELECT(96,92));

#else // __cplusplus

extern void _ZN9S19951C13C1Ev();
extern void _ZN9S19951C13D1Ev();
Name_Map name_map_S19951C13[] = {
  NSPAIR(_ZN9S19951C13C1Ev),
  NSPAIR(_ZN9S19951C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
static Base_Class bases_S19951C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19951C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S19951C13[];
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN9S19951C133v45Ev();
extern void _ZN9S19951C133v46Ev();
extern void _ZN9S19951C133v47Ev();
extern void _ZN9S19951C133v48Ev();
extern void _ZN9S19951C133v49Ev();
static  VTBL_ENTRY vtc_S19951C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C13[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v45Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v46Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v47Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v48Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v49Ev,
};
extern VTBL_ENTRY _ZTI9S19951C13[];
extern  VTBL_ENTRY _ZTV9S19951C13[];
Class_Descriptor cd_S19951C13 = {  "S19951C13", // class name
  bases_S19951C13, 2,
  &(vtc_S19951C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,92), // object size
  NSPAIRA(_ZTI9S19951C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19951C13),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C11  : virtual S19951C12 , S19951C7 , S19951C13 {
  short s19951c11f0[6];
  int s19951c11f1;
  virtual  ~S19951C11(); // _ZN9S19951C11D2Ev
  virtual void  v50(); // _ZN9S19951C113v50Ev
  virtual void  v51(); // _ZN9S19951C113v51Ev
  virtual void  v52(); // _ZN9S19951C113v52Ev
  virtual void  v53(); // _ZN9S19951C113v53Ev
  virtual void  v54(); // _ZN9S19951C113v54Ev
  virtual void  v55(); // _ZN9S19951C113v55Ev
  virtual void  v56(); // _ZN9S19951C113v56Ev
  virtual void  v57(); // _ZN9S19951C113v57Ev
  S19951C11(); // tgen
};
//SIG(-1 S19951C11) C1{ VBC2{ vd v9 v10 v11 v12 v13 v14 FD[6]} BC3{ v15 v16 v17 v18 v19 FD[5]} BC4{ BC5{ BC6{ v20 v21 v22 FL} v23 v24 v25 v26 v27 FL} v28 v29 v30 v31 v32 Fi[2] FL[8]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fs[6] Fi}


 S19951C11 ::~S19951C11(){ note_dtor("S19951C11", this);}
void  S19951C11 ::v50(){vfunc_called(this, "_ZN9S19951C113v50Ev");}
void  S19951C11 ::v51(){vfunc_called(this, "_ZN9S19951C113v51Ev");}
void  S19951C11 ::v52(){vfunc_called(this, "_ZN9S19951C113v52Ev");}
void  S19951C11 ::v53(){vfunc_called(this, "_ZN9S19951C113v53Ev");}
void  S19951C11 ::v54(){vfunc_called(this, "_ZN9S19951C113v54Ev");}
void  S19951C11 ::v55(){vfunc_called(this, "_ZN9S19951C113v55Ev");}
void  S19951C11 ::v56(){vfunc_called(this, "_ZN9S19951C113v56Ev");}
void  S19951C11 ::v57(){vfunc_called(this, "_ZN9S19951C113v57Ev");}
S19951C11 ::S19951C11(){ note_ctor("S19951C11", this);} // tgen

static void Test_S19951C11()
{
  extern Class_Descriptor cd_S19951C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,63)];
    init_test(&cd_S19951C11, buf);
    S19951C11 *dp, &lv = *(dp=new (buf) S19951C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,248), "sizeof(S19951C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C11)");
    check_base_class_offset(lv, (S19951C12*), ABISELECT(208,172), "S19951C11");
    check_base_class_offset(lv, (S19951C7*), 0, "S19951C11");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C13*), ABISELECT(96,64), "S19951C11");
    check_base_class_offset(lv, (S19951C5*)(S19951C13*), ABISELECT(96,64), "S19951C11");
    check_base_class_offset(lv, (S19951C13*), ABISELECT(96,64), "S19951C11");
    check_field_offset(lv, s19951c11f0, ABISELECT(192,156), "S19951C11.s19951c11f0");
    check_field_offset(lv, s19951c11f1, ABISELECT(204,168), "S19951C11.s19951c11f1");
    test_class_info(&lv, &cd_S19951C11);
    dp->~S19951C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C11(Test_S19951C11, "S19951C11", ABISELECT(320,248));

#else // __cplusplus

extern void _ZN9S19951C11C1Ev();
extern void _ZN9S19951C11D2Ev();
Name_Map name_map_S19951C11[] = {
  NSPAIR(_ZN9S19951C11C1Ev),
  NSPAIR(_ZN9S19951C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C12;
extern VTBL_ENTRY _ZTI9S19951C12[];
extern  VTBL_ENTRY _ZTV9S19951C12[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C13;
extern VTBL_ENTRY _ZTI9S19951C13[];
extern  VTBL_ENTRY _ZTV9S19951C13[];
static Base_Class bases_S19951C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C12,    ABISELECT(208,172), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19951C2,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19951C13,    ABISELECT(96,64), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19951C11[];
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN9S19951C11D1Ev();
extern void _ZN9S19951C11D0Ev();
extern void _ZN9S19951C113v50Ev();
extern void _ZN9S19951C113v51Ev();
extern void _ZN9S19951C113v52Ev();
extern void _ZN9S19951C113v53Ev();
extern void _ZN9S19951C113v54Ev();
extern void _ZN9S19951C113v55Ev();
extern void _ZN9S19951C113v56Ev();
extern void _ZN9S19951C113v57Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN9S19951C133v45Ev();
extern void _ZN9S19951C133v46Ev();
extern void _ZN9S19951C133v47Ev();
extern void _ZN9S19951C133v48Ev();
extern void _ZN9S19951C133v49Ev();
extern void ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev)() __attribute__((weak));
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY vtc_S19951C11[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v53Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v57Ev,
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v45Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v46Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v47Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v48Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v49Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
extern VTBL_ENTRY _ZTV9S19951C11[];
static  VTT_ENTRY vtt_S19951C11[] = {
  {&(_ZTV9S19951C11[3]),  3,50},
  {&(_ZTV9S19951C11[42]),  42,50},
};
extern VTBL_ENTRY _ZTI9S19951C11[];
extern  VTBL_ENTRY _ZTV9S19951C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C11[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19951C11 = {  "S19951C11", // class name
  bases_S19951C11, 5,
  &(vtc_S19951C11[0]), // expected_vtbl_contents
  &(vtt_S19951C11[0]), // expected_vtt_contents
  ABISELECT(320,248), // object size
  NSPAIRA(_ZTI9S19951C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19951C11),50, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19951C11),2, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19951C1  : virtual S19951C2 , virtual S19951C3 , S19951C10 , virtual S19951C11 {
  int s19951c1f0;
  ~S19951C1(); // tgen
  S19951C1(); // tgen
};
//SIG(1 S19951C1) C1{ VBC2{ v1 v2 v3 FL} VBC3{ BC4{ BC2 BC5{ BC2 v4 v5 v6 v7 v8 FL} VBC6{ v9 v10 v11 Fs Fi} vd v12 v13 v14 v15 v16} BC7{ v17 v18 v19 v20 v21 FD[5]} BC8{ BC2 BC7 VBC9{ BC2 v22 v23 v24 v25 v26 v27} VBC5 v28 v29} vd v30 v31 v32 v33 v34 v35 Fp} BC10{ VBC7 VBC4 vd v36 v37 v38 Fi} VBC11{ VBC12{ vd v39 v40 v41 v42 v43 v44 FD[6]} BC7 BC13{ BC5 v45 v46 v47 v48 v49 Fi[2] FL[8]} vd v50 v51 v52 v53 v54 v55 v56 v57 Fs[6] Fi} Fi}


S19951C1 ::~S19951C1(){ note_dtor("S19951C1", this);} // tgen
S19951C1 ::S19951C1(){ note_ctor("S19951C1", this);} // tgen

static void Test_S19951C1()
{
  extern Class_Descriptor cd_S19951C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,148)];
    init_test(&cd_S19951C1, buf);
    S19951C1 *dp, &lv = *(dp=new (buf) S19951C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,588), "sizeof(S19951C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19951C1)");
    /*is_ambiguous_... S19951C1::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*), ABISELECT(16,12), "S19951C1");
    /*is_ambiguous_... S19951C4::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*)(S19951C3*), ABISELECT(32,24), "S19951C1");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*)(S19951C3*), ABISELECT(48,36), "S19951C1");
    check_base_class_offset(lv, (S19951C5*)(S19951C4*)(S19951C3*), ABISELECT(48,36), "S19951C1");
    check_base_class_offset(lv, (S19951C6*)(S19951C4*)(S19951C3*), ABISELECT(296,200), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C6*)(S19951C4*), ABISELECT(296,200), "S19951C1");
    check_base_class_offset(lv, (S19951C4*)(S19951C3*), ABISELECT(32,24), "S19951C1");
    /*is_ambiguous_... S19951C3::S19951C7 */ AMB_check_base_class_offset(lv, (S19951C7*)(S19951C3*), ABISELECT(80,56), "S19951C1");
    /*is_ambiguous_... S19951C8::S19951C2 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C8*)(S19951C3*), ABISELECT(176,120), "S19951C1");
    check_base_class_offset(lv, (S19951C7*)(S19951C8*)(S19951C3*), ABISELECT(192,132), "S19951C1");
    check_base_class_offset(lv, (S19951C2*)(S19951C9*), ABISELECT(312,212), "S19951C1");
    check_base_class_offset(lv, (S19951C9*)(S19951C8*)(S19951C3*), ABISELECT(312,212), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C5 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C5*), ABISELECT(328,224), "S19951C1");
    check_base_class_offset(lv, (S19951C5*)(S19951C8*)(S19951C3*), ABISELECT(328,224), "S19951C1");
    check_base_class_offset(lv, (S19951C8*)(S19951C3*), ABISELECT(176,120), "S19951C1");
    check_base_class_offset(lv, (S19951C3*), ABISELECT(32,24), "S19951C1");
    check_base_class_offset(lv, (S19951C7*)(S19951C10*), ABISELECT(352,244), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C4*), ABISELECT(448,308), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C4*), ABISELECT(464,320), "S19951C1");
    /*is_ambiguous_... S19951C1::S19951C4 */ AMB_check_base_class_offset(lv, (S19951C5*)(S19951C4*), ABISELECT(464,320), "S19951C1");
    check_base_class_offset(lv, (S19951C4*)(S19951C10*), ABISELECT(448,308), "S19951C1");
    check_base_class_offset(lv, (S19951C10*), 0, "S19951C1");
    check_base_class_offset(lv, (S19951C12*)(S19951C11*), ABISELECT(704,512), "S19951C1");
    check_base_class_offset(lv, (S19951C7*)(S19951C11*), ABISELECT(496,340), "S19951C1");
    check_base_class_offset(lv, (S19951C2*)(S19951C5*)(S19951C13*)(S19951C11*), ABISELECT(592,404), "S19951C1");
    check_base_class_offset(lv, (S19951C5*)(S19951C13*)(S19951C11*), ABISELECT(592,404), "S19951C1");
    check_base_class_offset(lv, (S19951C13*)(S19951C11*), ABISELECT(592,404), "S19951C1");
    check_base_class_offset(lv, (S19951C11*), ABISELECT(496,340), "S19951C1");
    check_field_offset(lv, s19951c1f0, ABISELECT(12,8), "S19951C1.s19951c1f0");
    test_class_info(&lv, &cd_S19951C1);
    dp->~S19951C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19951C1(Test_S19951C1, "S19951C1", ABISELECT(816,588));

#else // __cplusplus

extern void _ZN8S19951C1C1Ev();
extern void _ZN8S19951C1D1Ev();
Name_Map name_map_S19951C1[] = {
  NSPAIR(_ZN8S19951C1C1Ev),
  NSPAIR(_ZN8S19951C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C6;
extern VTBL_ENTRY _ZTI8S19951C6[];
extern  VTBL_ENTRY _ZTV8S19951C6[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C9;
extern VTBL_ENTRY _ZTI8S19951C9[];
extern  VTBL_ENTRY _ZTV8S19951C9[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C8;
extern VTBL_ENTRY _ZTI8S19951C8[];
extern  VTBL_ENTRY _ZTV8S19951C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C8[];
extern Class_Descriptor cd_S19951C3;
extern VTBL_ENTRY _ZTI8S19951C3[];
extern  VTBL_ENTRY _ZTV8S19951C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C3[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C4;
extern VTBL_ENTRY _ZTI8S19951C4[];
extern  VTBL_ENTRY _ZTV8S19951C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C4[];
extern Class_Descriptor cd_S19951C10;
extern VTBL_ENTRY _ZTI9S19951C10[];
extern  VTBL_ENTRY _ZTV9S19951C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C10[];
extern Class_Descriptor cd_S19951C12;
extern VTBL_ENTRY _ZTI9S19951C12[];
extern  VTBL_ENTRY _ZTV9S19951C12[];
extern Class_Descriptor cd_S19951C7;
extern VTBL_ENTRY _ZTI8S19951C7[];
extern  VTBL_ENTRY _ZTV8S19951C7[];
extern Class_Descriptor cd_S19951C2;
extern VTBL_ENTRY _ZTI8S19951C2[];
extern  VTBL_ENTRY _ZTV8S19951C2[];
extern Class_Descriptor cd_S19951C5;
extern VTBL_ENTRY _ZTI8S19951C5[];
extern  VTBL_ENTRY _ZTV8S19951C5[];
extern Class_Descriptor cd_S19951C13;
extern VTBL_ENTRY _ZTI9S19951C13[];
extern  VTBL_ENTRY _ZTV9S19951C13[];
extern Class_Descriptor cd_S19951C11;
extern VTBL_ENTRY _ZTI9S19951C11[];
extern  VTBL_ENTRY _ZTV9S19951C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19951C11[];
static Base_Class bases_S19951C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19951C2,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C2,    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
    7, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(48,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
    8, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(48,36), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19951C6,    ABISELECT(296,200), //bcp->offset
    105, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19951C4,    ABISELECT(32,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19951C7,    ABISELECT(80,56), //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
    11, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(176,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
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19951C7,    ABISELECT(192,132), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(312,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
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19951C9,    ABISELECT(312,212), //bcp->offset
    113, //bcp->virtual_function_table_offset
    11, //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
    13, //immediately_derived
  0, 1},
  {&cd_S19951C2,    ABISELECT(328,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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(328,224), //bcp->offset
    133, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19951C8,    ABISELECT(176,120), //bcp->offset
    89, //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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19951C3,    ABISELECT(32,24), //bcp->offset
    24, //bcp->virtual_function_table_offset
    32, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19951C7,    ABISELECT(352,244), //bcp->offset
    151, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19951C2,    ABISELECT(448,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
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(464,320), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(464,320), //bcp->offset
    190, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19951C4,    ABISELECT(448,308), //bcp->offset
    163, //bcp->virtual_function_table_offset
    17, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19951C10,    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
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19951C12,    ABISELECT(704,512), //bcp->offset
    260, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S19951C7,    ABISELECT(496,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
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19951C2,    ABISELECT(592,404), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19951C5,    ABISELECT(592,404), //bcp->offset
    -1, //bcp->virtual_function_table_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
    25, //immediately_derived
  0, 0},
  {&cd_S19951C13,    ABISELECT(592,404), //bcp->offset
    245, //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
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19951C11,    ABISELECT(496,340), //bcp->offset
    200, //bcp->virtual_function_table_offset
    30, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19951C1[];
extern void _ZN8S19951C1D1Ev();
extern void _ZN8S19951C1D0Ev();
extern void _ZN9S19951C103v36Ev();
extern void _ZN9S19951C103v37Ev();
extern void _ZN9S19951C103v38Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19951C1D1Ev,_ZThn24_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19951C1D0Ev,_ZThn24_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C33v30Ev();
extern void _ZN8S19951C33v31Ev();
extern void _ZN8S19951C33v32Ev();
extern void _ZN8S19951C33v33Ev();
extern void _ZN8S19951C33v34Ev();
extern void _ZN8S19951C33v35Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n56_N8S19951C1D1Ev,_ZTv0_n28_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn448_N8S19951C1D1Ev,_ZThn308_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19951C1D0Ev,_ZTv0_n28_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn448_N8S19951C1D0Ev,_ZThn308_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S19951C1D1Ev,_ZThn340_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S19951C1D0Ev,_ZThn340_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN9S19951C113v50Ev();
extern void _ZN9S19951C113v51Ev();
extern void _ZN9S19951C113v52Ev();
extern void _ZN9S19951C113v53Ev();
extern void _ZN9S19951C113v54Ev();
extern void _ZN9S19951C113v55Ev();
extern void _ZN9S19951C113v56Ev();
extern void _ZN9S19951C113v57Ev();
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
extern void _ZN9S19951C133v45Ev();
extern void _ZN9S19951C133v46Ev();
extern void _ZN9S19951C133v47Ev();
extern void _ZN9S19951C133v48Ev();
extern void _ZN9S19951C133v49Ev();
extern void ABISELECT(_ZTv0_n24_N8S19951C1D1Ev,_ZTv0_n12_N8S19951C1D1Ev)();
extern void ABISELECT(_ZThn704_N8S19951C1D1Ev,_ZThn512_N8S19951C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19951C1D0Ev,_ZTv0_n12_N8S19951C1D0Ev)();
extern void ABISELECT(_ZThn704_N8S19951C1D0Ev,_ZThn512_N8S19951C1D0Ev)() __attribute__((weak));
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY vtc_S19951C1[] = {
  ABISELECT(704,512),
  ABISELECT(496,340),
  ABISELECT(328,224),
  ABISELECT(312,212),
  ABISELECT(32,24),
  ABISELECT(16,12),
  ABISELECT(296,200),
  ABISELECT(448,308),
  ABISELECT(352,244),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v38Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  ABISELECT(144,96),
  ABISELECT(144,96),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(48,32),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-24),
  0,
  0,
  0,
  ABISELECT(296,200),
  ABISELECT(280,188),
  ABISELECT(264,176),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v35Ev,
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(152,104),
  ABISELECT(136,92),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-328,-224),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-244),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-308),
  0,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(-448,-308),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19951C1D1Ev,_ZTv0_n28_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19951C1D0Ev,_ZTv0_n28_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  ABISELECT(-464,-320),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  ABISELECT(96,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-496,-340),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,172),
  ABISELECT(-496,-340),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v53Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v57Ev,
  ABISELECT(-592,-404),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v45Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v46Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v47Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v48Ev,
  (VTBL_ENTRY)&_ZN9S19951C133v49Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-704,-512),
  ABISELECT(-704,-512),
  (VTBL_ENTRY)&(_ZTI8S19951C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19951C1D1Ev,_ZTv0_n12_N8S19951C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19951C1D0Ev,_ZTv0_n12_N8S19951C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
extern VTBL_ENTRY _ZTV8S19951C1[];
extern void _ZN9S19951C10D1Ev();
extern void _ZN9S19951C10D0Ev();
extern void _ZN9S19951C103v36Ev();
extern void _ZN9S19951C103v37Ev();
extern void _ZN9S19951C103v38Ev();
static  VTBL_ENTRY _tg__ZTV9S19951C10__8S19951C1[] = {
  ABISELECT(296,200),
  ABISELECT(448,308),
  ABISELECT(352,244),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN9S19951C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C10D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v36Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v37Ev,
  (VTBL_ENTRY)&_ZN9S19951C103v38Ev,
};
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C7__9S19951C10__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-244),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev)();
extern void ABISELECT(_ZThn448_N9S19951C10D1Ev,_ZThn308_N9S19951C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev)();
extern void ABISELECT(_ZThn448_N9S19951C10D0Ev,_ZThn308_N9S19951C10D0Ev)() __attribute__((weak));
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__9S19951C10__8S19951C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  ABISELECT(16,12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-448,-308),
  0,
  0,
  0,
  ABISELECT(-152,-108),
  ABISELECT(-448,-308),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev),
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C58S19951C4__9S19951C10__8S19951C1[] = {
  ABISELECT(-464,-320),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__9S19951C10__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI9S19951C10[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C3D1Ev();
extern void _ZN8S19951C3D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
extern void _ZN8S19951C33v30Ev();
extern void _ZN8S19951C33v31Ev();
extern void _ZN8S19951C33v32Ev();
extern void _ZN8S19951C33v33Ev();
extern void _ZN8S19951C33v34Ev();
extern void _ZN8S19951C33v35Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C3__8S19951C1[] = {
  ABISELECT(296,200),
  ABISELECT(280,188),
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v30Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v31Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v32Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v33Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v34Ev,
  (VTBL_ENTRY)&_ZN8S19951C33v35Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C48S19951C3__8S19951C1[] = {
  ABISELECT(264,176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C48S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C88S19951C3__8S19951C1[] = {
  ABISELECT(152,104),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C9__8S19951C88S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C5__8S19951C88S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S19951C8[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C83v28Ev();
extern void _ZN8S19951C83v29Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C8__8S19951C3__8S19951C1[] = {
  ABISELECT(152,104),
  ABISELECT(136,92),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v28Ev,
  (VTBL_ENTRY)&_ZN8S19951C83v29Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C93v22Ev();
extern void _ZN8S19951C93v23Ev();
extern void _ZN8S19951C93v24Ev();
extern void _ZN8S19951C93v25Ev();
extern void _ZN8S19951C93v26Ev();
extern void _ZN8S19951C93v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C9__8S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v22Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v23Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v24Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v25Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v26Ev,
  (VTBL_ENTRY)&_ZN8S19951C93v27Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C52v4Ev();
extern void _ZN8S19951C52v5Ev();
extern void _ZN8S19951C52v6Ev();
extern void _ZN8S19951C52v7Ev();
extern void _ZN8S19951C52v8Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C5__A1__8S19951C3__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19951C3[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19951C52v8Ev,
};
extern void _ZN8S19951C22v1Ev();
extern void _ZN8S19951C22v2Ev();
extern void _ZN8S19951C22v3Ev();
extern void _ZN8S19951C4D1Ev();
extern void _ZN8S19951C4D0Ev();
extern void _ZN8S19951C43v12Ev();
extern void _ZN8S19951C43v13Ev();
extern void _ZN8S19951C43v14Ev();
extern void _ZN8S19951C43v15Ev();
extern void _ZN8S19951C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C4__A1__8S19951C1[] = {
  ABISELECT(-152,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v2Ev,
  (VTBL_ENTRY)&_ZN8S19951C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19951C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v12Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v13Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v14Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v15Ev,
  (VTBL_ENTRY)&_ZN8S19951C43v16Ev,
};
extern void _ZN8S19951C62v9Ev();
extern void _ZN8S19951C63v10Ev();
extern void _ZN8S19951C63v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19951C6__8S19951C4__A1__8S19951C1[] = {
  0,
  0,
  0,
  ABISELECT(152,108),
  (VTBL_ENTRY)&(_ZTI8S19951C4[0]),
  (VTBL_ENTRY)&_ZN8S19951C62v9Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v10Ev,
  (VTBL_ENTRY)&_ZN8S19951C63v11Ev,
};
extern void _ZN8S19951C73v17Ev();
extern void _ZN8S19951C73v18Ev();
extern void _ZN8S19951C73v19Ev();
extern void _ZN8S19951C73v20Ev();
extern void _ZN8S19951C73v21Ev();
extern void _ZN9S19951C11D1Ev();
extern void _ZN9S19951C11D0Ev();
extern void _ZN9S19951C113v50Ev();
extern void _ZN9S19951C113v51Ev();
extern void _ZN9S19951C113v52Ev();
extern void _ZN9S19951C113v53Ev();
extern void _ZN9S19951C113v54Ev();
extern void _ZN9S19951C113v55Ev();
extern void _ZN9S19951C113v56Ev();
extern void _ZN9S19951C113v57Ev();
static  VTBL_ENTRY _tg__ZTV9S19951C11__8S19951C1[] = {
  ABISELECT(208,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&_ZN8S19951C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19951C73v21Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19951C11D0Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v50Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v51Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v52Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v53Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v54Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v55Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v56Ev,
  (VTBL_ENTRY)&_ZN9S19951C113v57Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev)() __attribute__((weak));
extern void _ZN9S19951C123v39Ev();
extern void _ZN9S19951C123v40Ev();
extern void _ZN9S19951C123v41Ev();
extern void _ZN9S19951C123v42Ev();
extern void _ZN9S19951C123v43Ev();
extern void _ZN9S19951C123v44Ev();
static  VTBL_ENTRY _tg__ZTV9S19951C12__9S19951C11__8S19951C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-172),
  ABISELECT(-208,-172),
  (VTBL_ENTRY)&(_ZTI9S19951C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev),
  (VTBL_ENTRY)&_ZN9S19951C123v39Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v40Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v41Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v42Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v43Ev,
  (VTBL_ENTRY)&_ZN9S19951C123v44Ev,
};
static  VTT_ENTRY vtt_S19951C1[] = {
  {&(_ZTV8S19951C1[11]),  11,277},
  {&(_tg__ZTV9S19951C10__8S19951C1[5]),  5,10},
  {&(_tg__ZTV8S19951C7__9S19951C10__8S19951C1[7]),  7,12},
  {&(_tg__ZTV8S19951C4__9S19951C10__8S19951C1[17]),  17,27},
  {&(_tg__ZTV8S19951C58S19951C4__9S19951C10__8S19951C1[2]),  2,10},
  {&(_tg__ZTV8S19951C6__9S19951C10__8S19951C1[5]),  5,8},
  {&(_ZTV8S19951C1[21]),  21,277},
  {&(_ZTV8S19951C1[56]),  56,277},
  {&(_ZTV8S19951C1[74]),  74,277},
  {&(_ZTV8S19951C1[110]),  110,277},
  {&(_ZTV8S19951C1[84]),  84,277},
  {&(_ZTV8S19951C1[93]),  93,277},
  {&(_ZTV8S19951C1[100]),  100,277},
  {&(_ZTV8S19951C1[124]),  124,277},
  {&(_ZTV8S19951C1[143]),  143,277},
  {&(_ZTV8S19951C1[158]),  158,277},
  {&(_ZTV8S19951C1[180]),  180,277},
  {&(_ZTV8S19951C1[192]),  192,277},
  {&(_ZTV8S19951C1[230]),  230,277},
  {&(_ZTV8S19951C1[269]),  269,277},
  {&(_ZTV8S19951C1[247]),  247,277},
  {&(_tg__ZTV8S19951C3__8S19951C1[5]),  5,21},
  {&(_tg__ZTV8S19951C48S19951C3__8S19951C1[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C48S19951C3__8S19951C1[5]),  5,8},
  {&(_tg__ZTV8S19951C88S19951C3__8S19951C1[4]),  4,9},
  {&(_tg__ZTV8S19951C9__8S19951C88S19951C3__8S19951C1[11]),  11,20},
  {&(_tg__ZTV8S19951C5__8S19951C88S19951C3__8S19951C1[10]),  10,18},
  {&(_tg__ZTV8S19951C6__8S19951C3__8S19951C1[5]),  5,8},
  {&(_tg__ZTV8S19951C8__8S19951C3__8S19951C1[4]),  4,9},
  {&(_tg__ZTV8S19951C9__8S19951C3__8S19951C1[11]),  11,20},
  {&(_tg__ZTV8S19951C5__A1__8S19951C3__8S19951C1[10]),  10,18},
  {&(_tg__ZTV8S19951C4__A1__8S19951C1[3]),  3,13},
  {&(_tg__ZTV8S19951C6__8S19951C4__A1__8S19951C1[5]),  5,8},
  {&(_tg__ZTV9S19951C11__8S19951C1[3]),  3,18},
  {&(_tg__ZTV9S19951C12__9S19951C11__8S19951C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S19951C1[];
extern  VTBL_ENTRY _ZTV8S19951C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19951C1[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D0Ev,_ZTv0_n12_N9S19951C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D0Ev,_ZThn172_N9S19951C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19951C11D1Ev,_ZTv0_n12_N9S19951C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S19951C11D1Ev,_ZThn172_N9S19951C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D0Ev,_ZTv0_n28_N9S19951C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19951C10D0Ev,_ZThn308_N9S19951C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19951C10D1Ev,_ZTv0_n28_N9S19951C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S19951C10D1Ev,_ZThn308_N9S19951C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19951C1D0Ev,_ZTv0_n12_N8S19951C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19951C1D0Ev,_ZThn512_N8S19951C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19951C1D1Ev,_ZTv0_n12_N8S19951C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S19951C1D1Ev,_ZThn512_N8S19951C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19951C1D0Ev,_ZTv0_n28_N8S19951C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19951C1D0Ev,_ZThn308_N8S19951C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19951C1D1Ev,_ZTv0_n28_N8S19951C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19951C1D1Ev,_ZThn308_N8S19951C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19951C1D0Ev,_ZTv0_n36_N8S19951C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19951C1D0Ev,_ZThn340_N8S19951C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19951C1D0Ev,_ZThn24_N8S19951C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19951C1D1Ev,_ZTv0_n36_N8S19951C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19951C1D1Ev,_ZThn340_N8S19951C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19951C1D1Ev,_ZThn24_N8S19951C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19951C1 = {  "S19951C1", // class name
  bases_S19951C1, 27,
  &(vtc_S19951C1[0]), // expected_vtbl_contents
  &(vtt_S19951C1[0]), // expected_vtt_contents
  ABISELECT(816,588), // object size
  NSPAIRA(_ZTI8S19951C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19951C1),277, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19951C1),35, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4161C3_nt  {
  virtual  ~S4161C3_nt(); // _ZN10S4161C3_ntD1Ev
  virtual void  v1(); // _ZN10S4161C3_nt2v1Ev
  virtual void  v2(); // _ZN10S4161C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4161C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4161C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4161C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4161C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4161C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4161C3_nt2v8Ev
  virtual void  v9(); // _ZN10S4161C3_nt2v9Ev
  virtual void  v10(); // _ZN10S4161C3_nt3v10Ev
  virtual void  v11(); // _ZN10S4161C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4161C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4161C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4161C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4161C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4161C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4161C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4161C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4161C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4161C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4161C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4161C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4161C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4161C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4161C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4161C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4161C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4161C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4161C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4161C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4161C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4161C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4161C3_nt3v33Ev
  virtual void  v34(); // _ZN10S4161C3_nt3v34Ev
  virtual void  v35(); // _ZN10S4161C3_nt3v35Ev
  virtual void  v36(); // _ZN10S4161C3_nt3v36Ev
  virtual void  v37(); // _ZN10S4161C3_nt3v37Ev
  virtual void  v38(); // _ZN10S4161C3_nt3v38Ev
  virtual void  v39(); // _ZN10S4161C3_nt3v39Ev
  virtual void  v40(); // _ZN10S4161C3_nt3v40Ev
  virtual void  v41(); // _ZN10S4161C3_nt3v41Ev
  virtual void  v42(); // _ZN10S4161C3_nt3v42Ev
  S4161C3_nt(); // tgen
};
//SIG(-1 S4161C3_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}


 S4161C3_nt ::~S4161C3_nt(){ note_dtor("S4161C3_nt", this);}
void  S4161C3_nt ::v1(){vfunc_called(this, "_ZN10S4161C3_nt2v1Ev");}
void  S4161C3_nt ::v2(){vfunc_called(this, "_ZN10S4161C3_nt2v2Ev");}
void  S4161C3_nt ::v3(){vfunc_called(this, "_ZN10S4161C3_nt2v3Ev");}
void  S4161C3_nt ::v4(){vfunc_called(this, "_ZN10S4161C3_nt2v4Ev");}
void  S4161C3_nt ::v5(){vfunc_called(this, "_ZN10S4161C3_nt2v5Ev");}
void  S4161C3_nt ::v6(){vfunc_called(this, "_ZN10S4161C3_nt2v6Ev");}
void  S4161C3_nt ::v7(){vfunc_called(this, "_ZN10S4161C3_nt2v7Ev");}
void  S4161C3_nt ::v8(){vfunc_called(this, "_ZN10S4161C3_nt2v8Ev");}
void  S4161C3_nt ::v9(){vfunc_called(this, "_ZN10S4161C3_nt2v9Ev");}
void  S4161C3_nt ::v10(){vfunc_called(this, "_ZN10S4161C3_nt3v10Ev");}
void  S4161C3_nt ::v11(){vfunc_called(this, "_ZN10S4161C3_nt3v11Ev");}
void  S4161C3_nt ::v12(){vfunc_called(this, "_ZN10S4161C3_nt3v12Ev");}
void  S4161C3_nt ::v13(){vfunc_called(this, "_ZN10S4161C3_nt3v13Ev");}
void  S4161C3_nt ::v14(){vfunc_called(this, "_ZN10S4161C3_nt3v14Ev");}
void  S4161C3_nt ::v15(){vfunc_called(this, "_ZN10S4161C3_nt3v15Ev");}
void  S4161C3_nt ::v16(){vfunc_called(this, "_ZN10S4161C3_nt3v16Ev");}
void  S4161C3_nt ::v17(){vfunc_called(this, "_ZN10S4161C3_nt3v17Ev");}
void  S4161C3_nt ::v18(){vfunc_called(this, "_ZN10S4161C3_nt3v18Ev");}
void  S4161C3_nt ::v19(){vfunc_called(this, "_ZN10S4161C3_nt3v19Ev");}
void  S4161C3_nt ::v20(){vfunc_called(this, "_ZN10S4161C3_nt3v20Ev");}
void  S4161C3_nt ::v21(){vfunc_called(this, "_ZN10S4161C3_nt3v21Ev");}
void  S4161C3_nt ::v22(){vfunc_called(this, "_ZN10S4161C3_nt3v22Ev");}
void  S4161C3_nt ::v23(){vfunc_called(this, "_ZN10S4161C3_nt3v23Ev");}
void  S4161C3_nt ::v24(){vfunc_called(this, "_ZN10S4161C3_nt3v24Ev");}
void  S4161C3_nt ::v25(){vfunc_called(this, "_ZN10S4161C3_nt3v25Ev");}
void  S4161C3_nt ::v26(){vfunc_called(this, "_ZN10S4161C3_nt3v26Ev");}
void  S4161C3_nt ::v27(){vfunc_called(this, "_ZN10S4161C3_nt3v27Ev");}
void  S4161C3_nt ::v28(){vfunc_called(this, "_ZN10S4161C3_nt3v28Ev");}
void  S4161C3_nt ::v29(){vfunc_called(this, "_ZN10S4161C3_nt3v29Ev");}
void  S4161C3_nt ::v30(){vfunc_called(this, "_ZN10S4161C3_nt3v30Ev");}
void  S4161C3_nt ::v31(){vfunc_called(this, "_ZN10S4161C3_nt3v31Ev");}
void  S4161C3_nt ::v32(){vfunc_called(this, "_ZN10S4161C3_nt3v32Ev");}
void  S4161C3_nt ::v33(){vfunc_called(this, "_ZN10S4161C3_nt3v33Ev");}
void  S4161C3_nt ::v34(){vfunc_called(this, "_ZN10S4161C3_nt3v34Ev");}
void  S4161C3_nt ::v35(){vfunc_called(this, "_ZN10S4161C3_nt3v35Ev");}
void  S4161C3_nt ::v36(){vfunc_called(this, "_ZN10S4161C3_nt3v36Ev");}
void  S4161C3_nt ::v37(){vfunc_called(this, "_ZN10S4161C3_nt3v37Ev");}
void  S4161C3_nt ::v38(){vfunc_called(this, "_ZN10S4161C3_nt3v38Ev");}
void  S4161C3_nt ::v39(){vfunc_called(this, "_ZN10S4161C3_nt3v39Ev");}
void  S4161C3_nt ::v40(){vfunc_called(this, "_ZN10S4161C3_nt3v40Ev");}
void  S4161C3_nt ::v41(){vfunc_called(this, "_ZN10S4161C3_nt3v41Ev");}
void  S4161C3_nt ::v42(){vfunc_called(this, "_ZN10S4161C3_nt3v42Ev");}
S4161C3_nt ::S4161C3_nt(){ note_ctor("S4161C3_nt", this);} // tgen

//skip512 S4161C3_nt

#else // __cplusplus

extern void _ZN10S4161C3_ntC1Ev();
extern void _ZN10S4161C3_ntD1Ev();
Name_Map name_map_S4161C3_nt[] = {
  NSPAIR(_ZN10S4161C3_ntC1Ev),
  NSPAIR(_ZN10S4161C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
extern void _ZN10S4161C3_ntD1Ev();
extern void _ZN10S4161C3_ntD0Ev();
extern void _ZN10S4161C3_nt2v1Ev();
extern void _ZN10S4161C3_nt2v2Ev();
extern void _ZN10S4161C3_nt2v3Ev();
extern void _ZN10S4161C3_nt2v4Ev();
extern void _ZN10S4161C3_nt2v5Ev();
extern void _ZN10S4161C3_nt2v6Ev();
extern void _ZN10S4161C3_nt2v7Ev();
extern void _ZN10S4161C3_nt2v8Ev();
extern void _ZN10S4161C3_nt2v9Ev();
extern void _ZN10S4161C3_nt3v10Ev();
extern void _ZN10S4161C3_nt3v11Ev();
extern void _ZN10S4161C3_nt3v12Ev();
extern void _ZN10S4161C3_nt3v13Ev();
extern void _ZN10S4161C3_nt3v14Ev();
extern void _ZN10S4161C3_nt3v15Ev();
extern void _ZN10S4161C3_nt3v16Ev();
extern void _ZN10S4161C3_nt3v17Ev();
extern void _ZN10S4161C3_nt3v18Ev();
extern void _ZN10S4161C3_nt3v19Ev();
extern void _ZN10S4161C3_nt3v20Ev();
extern void _ZN10S4161C3_nt3v21Ev();
extern void _ZN10S4161C3_nt3v22Ev();
extern void _ZN10S4161C3_nt3v23Ev();
extern void _ZN10S4161C3_nt3v24Ev();
extern void _ZN10S4161C3_nt3v25Ev();
extern void _ZN10S4161C3_nt3v26Ev();
extern void _ZN10S4161C3_nt3v27Ev();
extern void _ZN10S4161C3_nt3v28Ev();
extern void _ZN10S4161C3_nt3v29Ev();
extern void _ZN10S4161C3_nt3v30Ev();
extern void _ZN10S4161C3_nt3v31Ev();
extern void _ZN10S4161C3_nt3v32Ev();
extern void _ZN10S4161C3_nt3v33Ev();
extern void _ZN10S4161C3_nt3v34Ev();
extern void _ZN10S4161C3_nt3v35Ev();
extern void _ZN10S4161C3_nt3v36Ev();
extern void _ZN10S4161C3_nt3v37Ev();
extern void _ZN10S4161C3_nt3v38Ev();
extern void _ZN10S4161C3_nt3v39Ev();
extern void _ZN10S4161C3_nt3v40Ev();
extern void _ZN10S4161C3_nt3v41Ev();
extern void _ZN10S4161C3_nt3v42Ev();
static  VTBL_ENTRY vtc_S4161C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4161C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4161C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v42Ev,
};
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
VTBL_ENTRY *P__ZTI10S4161C3_nt = _ZTI10S4161C3_nt; 
extern  VTBL_ENTRY _ZTV10S4161C3_nt[];
Class_Descriptor cd_S4161C3_nt = {  "S4161C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4161C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4161C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4161C3_nt),46, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4161C4_nt  {
  void *s4161c4f0;
  void  mf4161c4(); // _ZN10S4161C4_nt8mf4161c4Ev
};
//SIG(-1 S4161C4_nt) C1{ m Fp}


void  S4161C4_nt ::mf4161c4(){}

//skip512 S4161C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S4161C4_nt[];
VTBL_ENTRY *P__ZTI10S4161C4_nt = _ZTI10S4161C4_nt; 
Class_Descriptor cd_S4161C4_nt = {  "S4161C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4161C4_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  S4161C2  : S4161C3_nt {
  void *s4161c2f0;
  ::S4161C4_nt s4161c2f1;
  ::S4161C4_nt s4161c2f2;
  int s4161c2f3[3];
  virtual  ~S4161C2(); // _ZN7S4161C2D1Ev
  virtual void  v43(); // _ZN7S4161C23v43Ev
  virtual void  v44(); // _ZN7S4161C23v44Ev
  virtual void  v45(); // _ZN7S4161C23v45Ev
  virtual void  v46(); // _ZN7S4161C23v46Ev
  virtual void  v47(); // _ZN7S4161C23v47Ev
  virtual void  v48(); // _ZN7S4161C23v48Ev
  virtual void  v49(); // _ZN7S4161C23v49Ev
  virtual void  v50(); // _ZN7S4161C23v50Ev
  virtual void  v51(); // _ZN7S4161C23v51Ev
  virtual void  v52(); // _ZN7S4161C23v52Ev
  virtual void  v53(); // _ZN7S4161C23v53Ev
  virtual void  v54(); // _ZN7S4161C23v54Ev
  virtual void  v55(); // _ZN7S4161C23v55Ev
  virtual void  v56(); // _ZN7S4161C23v56Ev
  virtual void  v57(); // _ZN7S4161C23v57Ev
  virtual void  v58(); // _ZN7S4161C23v58Ev
  virtual void  v59(); // _ZN7S4161C23v59Ev
  virtual void  v60(); // _ZN7S4161C23v60Ev
  virtual void  v61(); // _ZN7S4161C23v61Ev
  virtual void  v62(); // _ZN7S4161C23v62Ev
  virtual void  v63(); // _ZN7S4161C23v63Ev
  virtual void  v64(); // _ZN7S4161C23v64Ev
  virtual void  v65(); // _ZN7S4161C23v65Ev
  virtual void  v66(); // _ZN7S4161C23v66Ev
  virtual void  v67(); // _ZN7S4161C23v67Ev
  virtual void  v68(); // _ZN7S4161C23v68Ev
  virtual void  v69(); // _ZN7S4161C23v69Ev
  virtual void  v70(); // _ZN7S4161C23v70Ev
  virtual void  v71(); // _ZN7S4161C23v71Ev
  virtual void  v72(); // _ZN7S4161C23v72Ev
  virtual void  v73(); // _ZN7S4161C23v73Ev
  virtual void  v74(); // _ZN7S4161C23v74Ev
  virtual void  v75(); // _ZN7S4161C23v75Ev
  virtual void  v76(); // _ZN7S4161C23v76Ev
  virtual void  v77(); // _ZN7S4161C23v77Ev
  virtual void  v78(); // _ZN7S4161C23v78Ev
  virtual void  v79(); // _ZN7S4161C23v79Ev
  virtual void  v80(); // _ZN7S4161C23v80Ev
  virtual void  v81(); // _ZN7S4161C23v81Ev
  virtual void  v82(); // _ZN7S4161C23v82Ev
  virtual void  v83(); // _ZN7S4161C23v83Ev
  virtual void  v84(); // _ZN7S4161C23v84Ev
  S4161C2(); // tgen
};
//SIG(-1 S4161C2) C1{ BC2{ vd 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} 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 Fp FC3{ m Fp} FC3 Fi[3]}


 S4161C2 ::~S4161C2(){ note_dtor("S4161C2", this);}
void  S4161C2 ::v43(){vfunc_called(this, "_ZN7S4161C23v43Ev");}
void  S4161C2 ::v44(){vfunc_called(this, "_ZN7S4161C23v44Ev");}
void  S4161C2 ::v45(){vfunc_called(this, "_ZN7S4161C23v45Ev");}
void  S4161C2 ::v46(){vfunc_called(this, "_ZN7S4161C23v46Ev");}
void  S4161C2 ::v47(){vfunc_called(this, "_ZN7S4161C23v47Ev");}
void  S4161C2 ::v48(){vfunc_called(this, "_ZN7S4161C23v48Ev");}
void  S4161C2 ::v49(){vfunc_called(this, "_ZN7S4161C23v49Ev");}
void  S4161C2 ::v50(){vfunc_called(this, "_ZN7S4161C23v50Ev");}
void  S4161C2 ::v51(){vfunc_called(this, "_ZN7S4161C23v51Ev");}
void  S4161C2 ::v52(){vfunc_called(this, "_ZN7S4161C23v52Ev");}
void  S4161C2 ::v53(){vfunc_called(this, "_ZN7S4161C23v53Ev");}
void  S4161C2 ::v54(){vfunc_called(this, "_ZN7S4161C23v54Ev");}
void  S4161C2 ::v55(){vfunc_called(this, "_ZN7S4161C23v55Ev");}
void  S4161C2 ::v56(){vfunc_called(this, "_ZN7S4161C23v56Ev");}
void  S4161C2 ::v57(){vfunc_called(this, "_ZN7S4161C23v57Ev");}
void  S4161C2 ::v58(){vfunc_called(this, "_ZN7S4161C23v58Ev");}
void  S4161C2 ::v59(){vfunc_called(this, "_ZN7S4161C23v59Ev");}
void  S4161C2 ::v60(){vfunc_called(this, "_ZN7S4161C23v60Ev");}
void  S4161C2 ::v61(){vfunc_called(this, "_ZN7S4161C23v61Ev");}
void  S4161C2 ::v62(){vfunc_called(this, "_ZN7S4161C23v62Ev");}
void  S4161C2 ::v63(){vfunc_called(this, "_ZN7S4161C23v63Ev");}
void  S4161C2 ::v64(){vfunc_called(this, "_ZN7S4161C23v64Ev");}
void  S4161C2 ::v65(){vfunc_called(this, "_ZN7S4161C23v65Ev");}
void  S4161C2 ::v66(){vfunc_called(this, "_ZN7S4161C23v66Ev");}
void  S4161C2 ::v67(){vfunc_called(this, "_ZN7S4161C23v67Ev");}
void  S4161C2 ::v68(){vfunc_called(this, "_ZN7S4161C23v68Ev");}
void  S4161C2 ::v69(){vfunc_called(this, "_ZN7S4161C23v69Ev");}
void  S4161C2 ::v70(){vfunc_called(this, "_ZN7S4161C23v70Ev");}
void  S4161C2 ::v71(){vfunc_called(this, "_ZN7S4161C23v71Ev");}
void  S4161C2 ::v72(){vfunc_called(this, "_ZN7S4161C23v72Ev");}
void  S4161C2 ::v73(){vfunc_called(this, "_ZN7S4161C23v73Ev");}
void  S4161C2 ::v74(){vfunc_called(this, "_ZN7S4161C23v74Ev");}
void  S4161C2 ::v75(){vfunc_called(this, "_ZN7S4161C23v75Ev");}
void  S4161C2 ::v76(){vfunc_called(this, "_ZN7S4161C23v76Ev");}
void  S4161C2 ::v77(){vfunc_called(this, "_ZN7S4161C23v77Ev");}
void  S4161C2 ::v78(){vfunc_called(this, "_ZN7S4161C23v78Ev");}
void  S4161C2 ::v79(){vfunc_called(this, "_ZN7S4161C23v79Ev");}
void  S4161C2 ::v80(){vfunc_called(this, "_ZN7S4161C23v80Ev");}
void  S4161C2 ::v81(){vfunc_called(this, "_ZN7S4161C23v81Ev");}
void  S4161C2 ::v82(){vfunc_called(this, "_ZN7S4161C23v82Ev");}
void  S4161C2 ::v83(){vfunc_called(this, "_ZN7S4161C23v83Ev");}
void  S4161C2 ::v84(){vfunc_called(this, "_ZN7S4161C23v84Ev");}
S4161C2 ::S4161C2(){ note_ctor("S4161C2", this);} // tgen

static void Test_S4161C2()
{
  extern Class_Descriptor cd_S4161C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S4161C2, buf);
    S4161C2 *dp, &lv = *(dp=new (buf) S4161C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S4161C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4161C2)");
    check_base_class_offset(lv, (S4161C3_nt*), 0, "S4161C2");
    check_field_offset(lv, s4161c2f0, ABISELECT(8,4), "S4161C2.s4161c2f0");
    check_field_offset(lv, s4161c2f1, ABISELECT(16,8), "S4161C2.s4161c2f1");
    check_field_offset(lv, s4161c2f2, ABISELECT(24,12), "S4161C2.s4161c2f2");
    check_field_offset(lv, s4161c2f3, ABISELECT(32,16), "S4161C2.s4161c2f3");
    test_class_info(&lv, &cd_S4161C2);
    dp->~S4161C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4161C2(Test_S4161C2, "S4161C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S4161C2C1Ev();
extern void _ZN7S4161C2D1Ev();
Name_Map name_map_S4161C2[] = {
  NSPAIR(_ZN7S4161C2C1Ev),
  NSPAIR(_ZN7S4161C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C3_nt;
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
extern  VTBL_ENTRY _ZTV10S4161C3_nt[];
static Base_Class bases_S4161C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4161C2[];
extern void _ZN7S4161C2D1Ev();
extern void _ZN7S4161C2D0Ev();
extern void _ZN10S4161C3_nt2v1Ev();
extern void _ZN10S4161C3_nt2v2Ev();
extern void _ZN10S4161C3_nt2v3Ev();
extern void _ZN10S4161C3_nt2v4Ev();
extern void _ZN10S4161C3_nt2v5Ev();
extern void _ZN10S4161C3_nt2v6Ev();
extern void _ZN10S4161C3_nt2v7Ev();
extern void _ZN10S4161C3_nt2v8Ev();
extern void _ZN10S4161C3_nt2v9Ev();
extern void _ZN10S4161C3_nt3v10Ev();
extern void _ZN10S4161C3_nt3v11Ev();
extern void _ZN10S4161C3_nt3v12Ev();
extern void _ZN10S4161C3_nt3v13Ev();
extern void _ZN10S4161C3_nt3v14Ev();
extern void _ZN10S4161C3_nt3v15Ev();
extern void _ZN10S4161C3_nt3v16Ev();
extern void _ZN10S4161C3_nt3v17Ev();
extern void _ZN10S4161C3_nt3v18Ev();
extern void _ZN10S4161C3_nt3v19Ev();
extern void _ZN10S4161C3_nt3v20Ev();
extern void _ZN10S4161C3_nt3v21Ev();
extern void _ZN10S4161C3_nt3v22Ev();
extern void _ZN10S4161C3_nt3v23Ev();
extern void _ZN10S4161C3_nt3v24Ev();
extern void _ZN10S4161C3_nt3v25Ev();
extern void _ZN10S4161C3_nt3v26Ev();
extern void _ZN10S4161C3_nt3v27Ev();
extern void _ZN10S4161C3_nt3v28Ev();
extern void _ZN10S4161C3_nt3v29Ev();
extern void _ZN10S4161C3_nt3v30Ev();
extern void _ZN10S4161C3_nt3v31Ev();
extern void _ZN10S4161C3_nt3v32Ev();
extern void _ZN10S4161C3_nt3v33Ev();
extern void _ZN10S4161C3_nt3v34Ev();
extern void _ZN10S4161C3_nt3v35Ev();
extern void _ZN10S4161C3_nt3v36Ev();
extern void _ZN10S4161C3_nt3v37Ev();
extern void _ZN10S4161C3_nt3v38Ev();
extern void _ZN10S4161C3_nt3v39Ev();
extern void _ZN10S4161C3_nt3v40Ev();
extern void _ZN10S4161C3_nt3v41Ev();
extern void _ZN10S4161C3_nt3v42Ev();
extern void _ZN7S4161C23v43Ev();
extern void _ZN7S4161C23v44Ev();
extern void _ZN7S4161C23v45Ev();
extern void _ZN7S4161C23v46Ev();
extern void _ZN7S4161C23v47Ev();
extern void _ZN7S4161C23v48Ev();
extern void _ZN7S4161C23v49Ev();
extern void _ZN7S4161C23v50Ev();
extern void _ZN7S4161C23v51Ev();
extern void _ZN7S4161C23v52Ev();
extern void _ZN7S4161C23v53Ev();
extern void _ZN7S4161C23v54Ev();
extern void _ZN7S4161C23v55Ev();
extern void _ZN7S4161C23v56Ev();
extern void _ZN7S4161C23v57Ev();
extern void _ZN7S4161C23v58Ev();
extern void _ZN7S4161C23v59Ev();
extern void _ZN7S4161C23v60Ev();
extern void _ZN7S4161C23v61Ev();
extern void _ZN7S4161C23v62Ev();
extern void _ZN7S4161C23v63Ev();
extern void _ZN7S4161C23v64Ev();
extern void _ZN7S4161C23v65Ev();
extern void _ZN7S4161C23v66Ev();
extern void _ZN7S4161C23v67Ev();
extern void _ZN7S4161C23v68Ev();
extern void _ZN7S4161C23v69Ev();
extern void _ZN7S4161C23v70Ev();
extern void _ZN7S4161C23v71Ev();
extern void _ZN7S4161C23v72Ev();
extern void _ZN7S4161C23v73Ev();
extern void _ZN7S4161C23v74Ev();
extern void _ZN7S4161C23v75Ev();
extern void _ZN7S4161C23v76Ev();
extern void _ZN7S4161C23v77Ev();
extern void _ZN7S4161C23v78Ev();
extern void _ZN7S4161C23v79Ev();
extern void _ZN7S4161C23v80Ev();
extern void _ZN7S4161C23v81Ev();
extern void _ZN7S4161C23v82Ev();
extern void _ZN7S4161C23v83Ev();
extern void _ZN7S4161C23v84Ev();
static  VTBL_ENTRY vtc_S4161C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4161C2[0]),
  (VTBL_ENTRY)&_ZN7S4161C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4161C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v43Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v44Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v53Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v54Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v55Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v56Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v57Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v58Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v59Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v60Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v61Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v62Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v63Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v64Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v65Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v66Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v67Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v68Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v69Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v70Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v71Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v72Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v73Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v74Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v75Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v76Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v77Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v78Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v79Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v80Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v81Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v82Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v83Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v84Ev,
};
extern VTBL_ENTRY _ZTI7S4161C2[];
extern  VTBL_ENTRY _ZTV7S4161C2[];
Class_Descriptor cd_S4161C2 = {  "S4161C2", // class name
  bases_S4161C2, 1,
  &(vtc_S4161C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S4161C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4161C2),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  S4161C1  : S4161C2 {
  void *s4161c1f0[19];
  ~S4161C1(); // tgen
  S4161C1(); // tgen
};
//SIG(1 S4161C1) C1{ BC2{ BC3{ 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} vd 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 Fp FC4{ m Fp} FC4 Fi[3]} Fp[19]}


S4161C1 ::~S4161C1(){ note_dtor("S4161C1", this);} // tgen
S4161C1 ::S4161C1(){ note_ctor("S4161C1", this);} // tgen

static void Test_S4161C1()
{
  extern Class_Descriptor cd_S4161C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S4161C1, buf);
    S4161C1 *dp, &lv = *(dp=new (buf) S4161C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S4161C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4161C1)");
    check_base_class_offset(lv, (S4161C3_nt*)(S4161C2*), 0, "S4161C1");
    check_base_class_offset(lv, (S4161C2*), 0, "S4161C1");
    check_field_offset(lv, s4161c1f0, ABISELECT(48,28), "S4161C1.s4161c1f0");
    test_class_info(&lv, &cd_S4161C1);
    dp->~S4161C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4161C1(Test_S4161C1, "S4161C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN7S4161C1C1Ev();
extern void _ZN7S4161C1D1Ev();
Name_Map name_map_S4161C1[] = {
  NSPAIR(_ZN7S4161C1C1Ev),
  NSPAIR(_ZN7S4161C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C3_nt;
extern VTBL_ENTRY _ZTI10S4161C3_nt[];
extern  VTBL_ENTRY _ZTV10S4161C3_nt[];
extern Class_Descriptor cd_S4161C2;
extern VTBL_ENTRY _ZTI7S4161C2[];
extern  VTBL_ENTRY _ZTV7S4161C2[];
static Base_Class bases_S4161C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4161C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4161C1[];
extern void _ZN7S4161C1D1Ev();
extern void _ZN7S4161C1D0Ev();
extern void _ZN10S4161C3_nt2v1Ev();
extern void _ZN10S4161C3_nt2v2Ev();
extern void _ZN10S4161C3_nt2v3Ev();
extern void _ZN10S4161C3_nt2v4Ev();
extern void _ZN10S4161C3_nt2v5Ev();
extern void _ZN10S4161C3_nt2v6Ev();
extern void _ZN10S4161C3_nt2v7Ev();
extern void _ZN10S4161C3_nt2v8Ev();
extern void _ZN10S4161C3_nt2v9Ev();
extern void _ZN10S4161C3_nt3v10Ev();
extern void _ZN10S4161C3_nt3v11Ev();
extern void _ZN10S4161C3_nt3v12Ev();
extern void _ZN10S4161C3_nt3v13Ev();
extern void _ZN10S4161C3_nt3v14Ev();
extern void _ZN10S4161C3_nt3v15Ev();
extern void _ZN10S4161C3_nt3v16Ev();
extern void _ZN10S4161C3_nt3v17Ev();
extern void _ZN10S4161C3_nt3v18Ev();
extern void _ZN10S4161C3_nt3v19Ev();
extern void _ZN10S4161C3_nt3v20Ev();
extern void _ZN10S4161C3_nt3v21Ev();
extern void _ZN10S4161C3_nt3v22Ev();
extern void _ZN10S4161C3_nt3v23Ev();
extern void _ZN10S4161C3_nt3v24Ev();
extern void _ZN10S4161C3_nt3v25Ev();
extern void _ZN10S4161C3_nt3v26Ev();
extern void _ZN10S4161C3_nt3v27Ev();
extern void _ZN10S4161C3_nt3v28Ev();
extern void _ZN10S4161C3_nt3v29Ev();
extern void _ZN10S4161C3_nt3v30Ev();
extern void _ZN10S4161C3_nt3v31Ev();
extern void _ZN10S4161C3_nt3v32Ev();
extern void _ZN10S4161C3_nt3v33Ev();
extern void _ZN10S4161C3_nt3v34Ev();
extern void _ZN10S4161C3_nt3v35Ev();
extern void _ZN10S4161C3_nt3v36Ev();
extern void _ZN10S4161C3_nt3v37Ev();
extern void _ZN10S4161C3_nt3v38Ev();
extern void _ZN10S4161C3_nt3v39Ev();
extern void _ZN10S4161C3_nt3v40Ev();
extern void _ZN10S4161C3_nt3v41Ev();
extern void _ZN10S4161C3_nt3v42Ev();
extern void _ZN7S4161C23v43Ev();
extern void _ZN7S4161C23v44Ev();
extern void _ZN7S4161C23v45Ev();
extern void _ZN7S4161C23v46Ev();
extern void _ZN7S4161C23v47Ev();
extern void _ZN7S4161C23v48Ev();
extern void _ZN7S4161C23v49Ev();
extern void _ZN7S4161C23v50Ev();
extern void _ZN7S4161C23v51Ev();
extern void _ZN7S4161C23v52Ev();
extern void _ZN7S4161C23v53Ev();
extern void _ZN7S4161C23v54Ev();
extern void _ZN7S4161C23v55Ev();
extern void _ZN7S4161C23v56Ev();
extern void _ZN7S4161C23v57Ev();
extern void _ZN7S4161C23v58Ev();
extern void _ZN7S4161C23v59Ev();
extern void _ZN7S4161C23v60Ev();
extern void _ZN7S4161C23v61Ev();
extern void _ZN7S4161C23v62Ev();
extern void _ZN7S4161C23v63Ev();
extern void _ZN7S4161C23v64Ev();
extern void _ZN7S4161C23v65Ev();
extern void _ZN7S4161C23v66Ev();
extern void _ZN7S4161C23v67Ev();
extern void _ZN7S4161C23v68Ev();
extern void _ZN7S4161C23v69Ev();
extern void _ZN7S4161C23v70Ev();
extern void _ZN7S4161C23v71Ev();
extern void _ZN7S4161C23v72Ev();
extern void _ZN7S4161C23v73Ev();
extern void _ZN7S4161C23v74Ev();
extern void _ZN7S4161C23v75Ev();
extern void _ZN7S4161C23v76Ev();
extern void _ZN7S4161C23v77Ev();
extern void _ZN7S4161C23v78Ev();
extern void _ZN7S4161C23v79Ev();
extern void _ZN7S4161C23v80Ev();
extern void _ZN7S4161C23v81Ev();
extern void _ZN7S4161C23v82Ev();
extern void _ZN7S4161C23v83Ev();
extern void _ZN7S4161C23v84Ev();
static  VTBL_ENTRY vtc_S4161C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4161C1[0]),
  (VTBL_ENTRY)&_ZN7S4161C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4161C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4161C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v43Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v44Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v53Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v54Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v55Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v56Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v57Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v58Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v59Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v60Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v61Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v62Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v63Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v64Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v65Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v66Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v67Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v68Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v69Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v70Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v71Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v72Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v73Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v74Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v75Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v76Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v77Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v78Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v79Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v80Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v81Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v82Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v83Ev,
  (VTBL_ENTRY)&_ZN7S4161C23v84Ev,
};
extern VTBL_ENTRY _ZTI7S4161C1[];
extern  VTBL_ENTRY _ZTV7S4161C1[];
Class_Descriptor cd_S4161C1 = {  "S4161C1", // class name
  bases_S4161C1, 2,
  &(vtc_S4161C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI7S4161C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4161C1),88, //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  S20971C5  {
  void *s20971c5f0;
  char s20971c5f1[5];
  __tsi64 s20971c5f2;
  void *s20971c5f3[2];
  virtual void  v3(); // _ZN8S20971C52v3Ev
  ~S20971C5(); // tgen
  S20971C5(); // tgen
};
//SIG(-1 S20971C5) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S20971C5 ::v3(){vfunc_called(this, "_ZN8S20971C52v3Ev");}
S20971C5 ::~S20971C5(){ note_dtor("S20971C5", this);} // tgen
S20971C5 ::S20971C5(){ note_ctor("S20971C5", this);} // tgen

static void Test_S20971C5()
{
  extern Class_Descriptor cd_S20971C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20971C5, buf);
    S20971C5 *dp, &lv = *(dp=new (buf) S20971C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20971C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C5)");
    check_field_offset(lv, s20971c5f0, ABISELECT(8,4), "S20971C5.s20971c5f0");
    check_field_offset(lv, s20971c5f1, ABISELECT(16,8), "S20971C5.s20971c5f1");
    check_field_offset(lv, s20971c5f2, ABISELECT(24,16), "S20971C5.s20971c5f2");
    check_field_offset(lv, s20971c5f3, ABISELECT(32,24), "S20971C5.s20971c5f3");
    test_class_info(&lv, &cd_S20971C5);
    dp->~S20971C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C5(Test_S20971C5, "S20971C5", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20971C5C1Ev();
extern void _ZN8S20971C5D1Ev();
Name_Map name_map_S20971C5[] = {
  NSPAIR(_ZN8S20971C5C1Ev),
  NSPAIR(_ZN8S20971C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20971C5[];
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C5[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
Class_Descriptor cd_S20971C5 = {  "S20971C5", // class name
  0,0,//no base classes
  &(vtc_S20971C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20971C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20971C5),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  S20971C4  : S20971C5 {
  ::S20971C5 s20971c4f0;
  char s20971c4f1[2];
  void *s20971c4f2;
  virtual void  v4(); // _ZN8S20971C42v4Ev
  virtual void  v5(); // _ZN8S20971C42v5Ev
  virtual void  v6(); // _ZN8S20971C42v6Ev
  ~S20971C4(); // tgen
  S20971C4(); // tgen
};
//SIG(-1 S20971C4) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S20971C4 ::v4(){vfunc_called(this, "_ZN8S20971C42v4Ev");}
void  S20971C4 ::v5(){vfunc_called(this, "_ZN8S20971C42v5Ev");}
void  S20971C4 ::v6(){vfunc_called(this, "_ZN8S20971C42v6Ev");}
S20971C4 ::~S20971C4(){ note_dtor("S20971C4", this);} // tgen
S20971C4 ::S20971C4(){ note_ctor("S20971C4", this);} // tgen

static void Test_S20971C4()
{
  extern Class_Descriptor cd_S20971C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S20971C4, buf);
    S20971C4 *dp, &lv = *(dp=new (buf) S20971C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S20971C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C4)");
    check_base_class_offset(lv, (S20971C5*), 0, "S20971C4");
    check_field_offset(lv, s20971c4f0, ABISELECT(48,32), "S20971C4.s20971c4f0");
    check_field_offset(lv, s20971c4f1, ABISELECT(96,64), "S20971C4.s20971c4f1");
    check_field_offset(lv, s20971c4f2, ABISELECT(104,68), "S20971C4.s20971c4f2");
    test_class_info(&lv, &cd_S20971C4);
    dp->~S20971C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C4(Test_S20971C4, "S20971C4", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S20971C4C1Ev();
extern void _ZN8S20971C4D1Ev();
Name_Map name_map_S20971C4[] = {
  NSPAIR(_ZN8S20971C4C1Ev),
  NSPAIR(_ZN8S20971C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
static Base_Class bases_S20971C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C4[];
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY vtc_S20971C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C4[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
Class_Descriptor cd_S20971C4 = {  "S20971C4", // class name
  bases_S20971C4, 1,
  &(vtc_S20971C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S20971C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20971C4),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  S20971C6  : virtual S20971C4 , virtual S20971C5 {
  int s20971c6f0;
  virtual void  v7(); // _ZN8S20971C62v7Ev
  ~S20971C6(); // tgen
  S20971C6(); // tgen
};
//SIG(-1 S20971C6) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S20971C6 ::v7(){vfunc_called(this, "_ZN8S20971C62v7Ev");}
S20971C6 ::~S20971C6(){ note_dtor("S20971C6", this);} // tgen
S20971C6 ::S20971C6(){ note_ctor("S20971C6", this);} // tgen

static void Test_S20971C6()
{
  extern Class_Descriptor cd_S20971C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S20971C6, buf);
    S20971C6 *dp, &lv = *(dp=new (buf) S20971C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S20971C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C6)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(16,8), "S20971C6");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(16,8), "S20971C6");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(128,80), "S20971C6");
    check_field_offset(lv, s20971c6f0, ABISELECT(8,4), "S20971C6.s20971c6f0");
    test_class_info(&lv, &cd_S20971C6);
    dp->~S20971C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C6(Test_S20971C6, "S20971C6", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S20971C6C1Ev();
extern void _ZN8S20971C6D1Ev();
Name_Map name_map_S20971C6[] = {
  NSPAIR(_ZN8S20971C6C1Ev),
  NSPAIR(_ZN8S20971C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
static Base_Class bases_S20971C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C6[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C6[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20971C6[];
static  VTT_ENTRY vtt_S20971C6[] = {
  {&(_ZTV8S20971C6[4]),  4,19},
  {&(_ZTV8S20971C6[11]),  11,19},
  {&(_ZTV8S20971C6[18]),  18,19},
};
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
Class_Descriptor cd_S20971C6 = {  "S20971C6", // class name
  bases_S20971C6, 3,
  &(vtc_S20971C6[0]), // expected_vtbl_contents
  &(vtt_S20971C6[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S20971C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20971C6),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C6),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C3  : virtual S20971C4 , virtual S20971C5 , virtual S20971C6 {
  ::S20971C4 s20971c3f0;
  ::S19763C18_nt s20971c3f1;
  long double s20971c3f2[5];
  void *s20971c3f3;
  ::S20971C5 s20971c3f4;
  int s20971c3f5;
  virtual  ~S20971C3(); // _ZN8S20971C3D2Ev
  S20971C3(); // tgen
};
//SIG(-1 S20971C3) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} VBC3 VBC4{ VBC2 VBC3 v5 Fi} vd FC2 FC5{} FD[5] Fp FC3 Fi}


 S20971C3 ::~S20971C3(){ note_dtor("S20971C3", this);}
S20971C3 ::S20971C3(){ note_ctor("S20971C3", this);} // tgen

static void Test_S20971C3()
{
  extern Class_Descriptor cd_S20971C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,74)];
    init_test(&cd_S20971C3, buf);
    S20971C3 *dp, &lv = *(dp=new (buf) S20971C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,292), "sizeof(S20971C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C3)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(272,180), "S20971C3");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(272,180), "S20971C3");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(272,180), "S20971C3");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(384,252), "S20971C3");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(384,252), "S20971C3");
    check_base_class_offset(lv, (S20971C6*), ABISELECT(432,284), "S20971C3");
    check_field_offset(lv, s20971c3f0, ABISELECT(8,4), "S20971C3.s20971c3f0");
    check_field_offset(lv, s20971c3f1, ABISELECT(120,76), "S20971C3.s20971c3f1");
    check_field_offset(lv, s20971c3f2, ABISELECT(128,80), "S20971C3.s20971c3f2");
    check_field_offset(lv, s20971c3f3, ABISELECT(208,140), "S20971C3.s20971c3f3");
    check_field_offset(lv, s20971c3f4, ABISELECT(216,144), "S20971C3.s20971c3f4");
    check_field_offset(lv, s20971c3f5, ABISELECT(264,176), "S20971C3.s20971c3f5");
    test_class_info(&lv, &cd_S20971C3);
    dp->~S20971C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C3(Test_S20971C3, "S20971C3", ABISELECT(448,292));

#else // __cplusplus

extern void _ZN8S20971C3C1Ev();
extern void _ZN8S20971C3D2Ev();
Name_Map name_map_S20971C3[] = {
  NSPAIR(_ZN8S20971C3C1Ev),
  NSPAIR(_ZN8S20971C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
static Base_Class bases_S20971C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(272,180), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(384,252), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(432,284), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C3[];
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY vtc_S20971C3[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern VTBL_ENTRY _ZTV8S20971C3[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C3[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C3[] = {
  {&(_ZTV8S20971C3[5]),  5,27},
  {&(_ZTV8S20971C3[13]),  13,27},
  {&(_ZTV8S20971C3[20]),  20,27},
  {&(_ZTV8S20971C3[26]),  26,27},
  {&(_tg__ZTV8S20971C6__8S20971C3[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C3[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
Class_Descriptor cd_S20971C3 = {  "S20971C3", // class name
  bases_S20971C3, 4,
  &(vtc_S20971C3[0]), // expected_vtbl_contents
  &(vtt_S20971C3[0]), // expected_vtt_contents
  ABISELECT(448,292), // object size
  NSPAIRA(_ZTI8S20971C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20971C3),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C3),7, //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  S20971C9  : S20971C6 , S20971C4 , S20971C5 {
  virtual  ~S20971C9(); // _ZN8S20971C9D2Ev
  virtual void  v8(); // _ZN8S20971C92v8Ev
  S20971C9(); // tgen
};
//SIG(-1 S20971C9) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S20971C9 ::~S20971C9(){ note_dtor("S20971C9", this);}
void  S20971C9 ::v8(){vfunc_called(this, "_ZN8S20971C92v8Ev");}
S20971C9 ::S20971C9(){ note_ctor("S20971C9", this);} // tgen

static void Test_S20971C9()
{
  extern Class_Descriptor cd_S20971C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S20971C9, buf);
    S20971C9 *dp, &lv = *(dp=new (buf) S20971C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S20971C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C9)");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(176,112), "S20971C9");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(176,112), "S20971C9");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(288,184), "S20971C9");
    check_base_class_offset(lv, (S20971C6*), 0, "S20971C9");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(16,8), "S20971C9");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*), ABISELECT(16,8), "S20971C9");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(128,80), "S20971C9");
    test_class_info(&lv, &cd_S20971C9);
    dp->~S20971C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C9(Test_S20971C9, "S20971C9", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S20971C9C1Ev();
extern void _ZN8S20971C9D2Ev();
Name_Map name_map_S20971C9[] = {
  NSPAIR(_ZN8S20971C9C1Ev),
  NSPAIR(_ZN8S20971C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
static Base_Class bases_S20971C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(128,80), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C9[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20971C9[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C9[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C9[] = {
  {&(_ZTV8S20971C9[4]),  4,31},
  {&(_tg__ZTV8S20971C6__8S20971C9[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C9[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C9[3]),  3,4},
  {&(_ZTV8S20971C9[23]),  23,31},
  {&(_ZTV8S20971C9[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
Class_Descriptor cd_S20971C9 = {  "S20971C9", // class name
  bases_S20971C9, 7,
  &(vtc_S20971C9[0]), // expected_vtbl_contents
  &(vtt_S20971C9[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S20971C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20971C9),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C9),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C10  {
  int s20971c10f0;
  char s20971c10f1[7];
  void *s20971c10f2;
  int s20971c10f3;
  short s20971c10f4;
  virtual void  v9(); // _ZN9S20971C102v9Ev
  virtual void  v10(); // _ZN9S20971C103v10Ev
  ~S20971C10(); // tgen
  S20971C10(); // tgen
};
//SIG(-1 S20971C10) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S20971C10 ::v9(){vfunc_called(this, "_ZN9S20971C102v9Ev");}
void  S20971C10 ::v10(){vfunc_called(this, "_ZN9S20971C103v10Ev");}
S20971C10 ::~S20971C10(){ note_dtor("S20971C10", this);} // tgen
S20971C10 ::S20971C10(){ note_ctor("S20971C10", this);} // tgen

static void Test_S20971C10()
{
  extern Class_Descriptor cd_S20971C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20971C10, buf);
    S20971C10 *dp, &lv = *(dp=new (buf) S20971C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20971C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C10)");
    check_field_offset(lv, s20971c10f0, ABISELECT(8,4), "S20971C10.s20971c10f0");
    check_field_offset(lv, s20971c10f1, ABISELECT(12,8), "S20971C10.s20971c10f1");
    check_field_offset(lv, s20971c10f2, ABISELECT(24,16), "S20971C10.s20971c10f2");
    check_field_offset(lv, s20971c10f3, ABISELECT(32,20), "S20971C10.s20971c10f3");
    check_field_offset(lv, s20971c10f4, ABISELECT(36,24), "S20971C10.s20971c10f4");
    test_class_info(&lv, &cd_S20971C10);
    dp->~S20971C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C10(Test_S20971C10, "S20971C10", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S20971C10C1Ev();
extern void _ZN9S20971C10D1Ev();
Name_Map name_map_S20971C10[] = {
  NSPAIR(_ZN9S20971C10C1Ev),
  NSPAIR(_ZN9S20971C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20971C10[];
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C10[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
Class_Descriptor cd_S20971C10 = {  "S20971C10", // class name
  0,0,//no base classes
  &(vtc_S20971C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S20971C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20971C10),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  S20971C8  : virtual S20971C4 , S20971C6 , S20971C9 , virtual S20971C3 , virtual S20971C10 {
  ::S20971C4 s20971c8f0;
  ::S20971C9 s20971c8f1[3];
  virtual void  v11(); // _ZN8S20971C83v11Ev
  ~S20971C8(); // tgen
  S20971C8(); // tgen
};
//SIG(-1 S20971C8) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} BC4{ VBC2 VBC3 v6 Fi} BC5{ BC4 BC2 BC3 vd v7} VBC6{ VBC2 VBC3 VBC4 vd FC2 FC7{} FD[5] Fp FC3 Fi} VBC8{ v8 v9 Fi Fc[7] Fp Fi Fs} v1 FC2 FC5[3]}


void  S20971C8 ::v11(){vfunc_called(this, "_ZN8S20971C83v11Ev");}
S20971C8 ::~S20971C8(){ note_dtor("S20971C8", this);} // tgen
S20971C8 ::S20971C8(){ note_ctor("S20971C8", this);} // tgen

static void Test_S20971C8()
{
  extern Class_Descriptor cd_S20971C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(114,291)];
    init_test(&cd_S20971C8, buf);
    S20971C8 *dp, &lv = *(dp=new (buf) S20971C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1808,1160), "sizeof(S20971C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C8)");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(1312,840), "S20971C8");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*), ABISELECT(1312,840), "S20971C8");
    check_base_class_offset(lv, (S20971C4*)(S20971C3*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(1312,840), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C3*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(1424,912), "S20971C8");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*), 0, "S20971C8");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*), ABISELECT(16,8), "S20971C8");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*), ABISELECT(32,16), "S20971C8");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*), ABISELECT(32,16), "S20971C8");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*), ABISELECT(144,88), "S20971C8");
    check_base_class_offset(lv, (S20971C9*), ABISELECT(16,8), "S20971C8");
    check_base_class_offset(lv, (S20971C6*)(S20971C3*), ABISELECT(1744,1124), "S20971C8");
    check_base_class_offset(lv, (S20971C3*), ABISELECT(1472,944), "S20971C8");
    check_base_class_offset(lv, (S20971C10*), ABISELECT(1760,1132), "S20971C8");
    check_field_offset(lv, s20971c8f0, ABISELECT(192,120), "S20971C8.s20971c8f0");
    check_field_offset(lv, s20971c8f1, ABISELECT(304,192), "S20971C8.s20971c8f1");
    test_class_info(&lv, &cd_S20971C8);
    dp->~S20971C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C8(Test_S20971C8, "S20971C8", ABISELECT(1808,1160));

#else // __cplusplus

extern void _ZN8S20971C8C1Ev();
extern void _ZN8S20971C8D1Ev();
Name_Map name_map_S20971C8[] = {
  NSPAIR(_ZN8S20971C8C1Ev),
  NSPAIR(_ZN8S20971C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C3;
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
static Base_Class bases_S20971C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(1312,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
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(1312,840), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(1424,912), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    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_S20971C6,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    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
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(32,16), //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
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(144,88), //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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(1744,1124), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20971C3,    ABISELECT(1472,944), //bcp->offset
    42, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C10,    ABISELECT(1760,1132), //bcp->offset
    56, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C8[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void _ZN8S20971C8D1Ev();
extern void _ZN8S20971C8D0Ev();
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn1472_N8S20971C8D1Ev,_ZThn944_N8S20971C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev)();
extern void ABISELECT(_ZThn1472_N8S20971C8D0Ev,_ZThn944_N8S20971C8D0Ev)() __attribute__((weak));
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C8[] = {
  ABISELECT(1760,1132),
  ABISELECT(1744,1124),
  ABISELECT(1472,944),
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D0Ev,
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  ABISELECT(-1472,-944),
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1472,-944),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev),
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-1744,-1124),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  ABISELECT(-1760,-1132),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20971C8[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A__8S20971C8[] = {
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A__8S20971C8[] = {
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__8S20971C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C9__A1__8S20971C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C9__A1__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C9__A1__8S20971C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C9__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C9__8S20971C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C8[] = {
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C3__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C3__8S20971C8[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3__8S20971C8[] = {
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__8S20971C8[] = {
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A2__8S20971C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(432,284),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A2__8S20971C8[] = {
  0,
  ABISELECT(320,212),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C8[] = {
  {&(_ZTV8S20971C8[7]),  7,62},
  {&(_tg__ZTV8S20971C6__A__8S20971C8[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A__8S20971C8[3]),  3,4},
  {&(_tg__ZTV8S20971C9__8S20971C8[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C9__A1__8S20971C8[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C9__A1__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C9__A1__8S20971C8[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C9__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C9__8S20971C8[3]),  3,4},
  {&(_ZTV8S20971C8[34]),  34,62},
  {&(_ZTV8S20971C8[41]),  41,62},
  {&(_ZTV8S20971C8[15]),  15,62},
  {&(_ZTV8S20971C8[48]),  48,62},
  {&(_ZTV8S20971C8[55]),  55,62},
  {&(_ZTV8S20971C8[60]),  60,62},
  {&(_tg__ZTV8S20971C3__8S20971C8[5]),  5,7},
  {&(_tg__ZTV8S20971C4__8S20971C3__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C3__8S20971C8[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C3__8S20971C8[5]),  5,6},
  {&(_tg__ZTV8S20971C6__A2__8S20971C8[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A2__8S20971C8[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A2__8S20971C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20971C8[];
extern  VTBL_ENTRY _ZTV8S20971C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C8[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20971C8D0Ev,_ZThn944_N8S20971C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20971C8D1Ev,_ZThn944_N8S20971C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C8 = {  "S20971C8", // class name
  bases_S20971C8, 12,
  &(vtc_S20971C8[0]), // expected_vtbl_contents
  &(vtt_S20971C8[0]), // expected_vtt_contents
  ABISELECT(1808,1160), // object size
  NSPAIRA(_ZTI8S20971C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20971C8),62, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C8),23, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C2  : virtual S20971C3 , virtual S20971C8 {
  char s20971c2f0[4];
  virtual  ~S20971C2(); // _ZN8S20971C2D2Ev
  virtual void  v12(); // _ZN8S20971C23v12Ev
  virtual void  v13(); // _ZN8S20971C23v13Ev
  virtual void  v14(); // _ZN8S20971C23v14Ev
  S20971C2(); // tgen
};
//SIG(-1 S20971C2) C1{ VBC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 VBC5{ VBC3 VBC4 v8 Fi} vd FC3 FC6{} FD[5] Fp FC4 Fi} VBC7{ VBC3 BC5 BC8{ BC5 BC3 BC4 vd v9} VBC2 VBC9{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 FC3 FC8[3]} vd v1 v2 v3 Fc[4]}


 S20971C2 ::~S20971C2(){ note_dtor("S20971C2", this);}
void  S20971C2 ::v12(){vfunc_called(this, "_ZN8S20971C23v12Ev");}
void  S20971C2 ::v13(){vfunc_called(this, "_ZN8S20971C23v13Ev");}
void  S20971C2 ::v14(){vfunc_called(this, "_ZN8S20971C23v14Ev");}
S20971C2 ::S20971C2(){ note_ctor("S20971C2", this);} // tgen

static void Test_S20971C2()
{
  extern Class_Descriptor cd_S20971C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(115,293)];
    init_test(&cd_S20971C2, buf);
    S20971C2 *dp, &lv = *(dp=new (buf) S20971C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1824,1168), "sizeof(S20971C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C2)");
    /*is_ambiguous_... S20971C2::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(288,188), "S20971C2");
    check_base_class_offset(lv, (S20971C4*)(S20971C3*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C2::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C8*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C8*), ABISELECT(288,188), "S20971C2");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(288,188), "S20971C2");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C3*), ABISELECT(400,260), "S20971C2");
    /*is_ambiguous_... S20971C2::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(400,260), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C8*), ABISELECT(400,260), "S20971C2");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(400,260), "S20971C2");
    check_base_class_offset(lv, (S20971C6*)(S20971C3*), ABISELECT(448,292), "S20971C2");
    check_base_class_offset(lv, (S20971C3*), ABISELECT(16,8), "S20971C2");
    check_base_class_offset(lv, (S20971C3*)(S20971C8*), ABISELECT(16,8), "S20971C2");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C8*), ABISELECT(464,300), "S20971C2");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(480,308), "S20971C2");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(496,316), "S20971C2");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(496,316), "S20971C2");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*)(S20971C8*), ABISELECT(608,388), "S20971C2");
    check_base_class_offset(lv, (S20971C9*)(S20971C8*), ABISELECT(480,308), "S20971C2");
    check_base_class_offset(lv, (S20971C10*)(S20971C8*), ABISELECT(1776,1140), "S20971C2");
    check_base_class_offset(lv, (S20971C8*), ABISELECT(464,300), "S20971C2");
    check_field_offset(lv, s20971c2f0, ABISELECT(8,4), "S20971C2.s20971c2f0");
    test_class_info(&lv, &cd_S20971C2);
    dp->~S20971C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C2(Test_S20971C2, "S20971C2", ABISELECT(1824,1168));

#else // __cplusplus

extern void _ZN8S20971C2C1Ev();
extern void _ZN8S20971C2D2Ev();
Name_Map name_map_S20971C2[] = {
  NSPAIR(_ZN8S20971C2C1Ev),
  NSPAIR(_ZN8S20971C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C3;
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
extern Class_Descriptor cd_S20971C8;
extern VTBL_ENTRY _ZTI8S20971C8[];
extern  VTBL_ENTRY _ZTV8S20971C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C8[];
static Base_Class bases_S20971C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(288,188), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(400,260), //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(448,292), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20971C3,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(464,300), //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C6,    ABISELECT(480,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(496,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(496,316), //bcp->offset
    68, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(608,388), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(480,308), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C10,    ABISELECT(1776,1140), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20971C8,    ABISELECT(464,300), //bcp->offset
    41, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C2[];
extern void _ZN8S20971C2D1Ev();
extern void _ZN8S20971C2D0Ev();
extern void _ZN8S20971C23v12Ev();
extern void _ZN8S20971C23v13Ev();
extern void _ZN8S20971C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev)() __attribute__((weak));
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev)() __attribute__((weak));
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C2[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v14Ev,
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20971C2[];
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C2[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C3__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C3__8S20971C2[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3__8S20971C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C2[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void _ZN8S20971C8D1Ev();
extern void _ZN8S20971C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C8__8S20971C2[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D0Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C8__A1__8S20971C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C98S20971C8__8S20971C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C8__8S20971C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C8__8S20971C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev)();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__8S20971C8__8S20971C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C8__8S20971C2[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev),
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__8S20971C8__8S20971C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__8S20971C8__8S20971C2[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
static  VTT_ENTRY vtt_S20971C2[] = {
  {&(_ZTV8S20971C2[8]),  8,83},
  {&(_ZTV8S20971C2[19]),  19,83},
  {&(_ZTV8S20971C2[27]),  27,83},
  {&(_ZTV8S20971C2[34]),  34,83},
  {&(_ZTV8S20971C2[40]),  40,83},
  {&(_ZTV8S20971C2[56]),  56,83},
  {&(_ZTV8S20971C2[64]),  64,83},
  {&(_ZTV8S20971C2[70]),  70,83},
  {&(_ZTV8S20971C2[76]),  76,83},
  {&(_ZTV8S20971C2[81]),  81,83},
  {&(_tg__ZTV8S20971C3__8S20971C2[5]),  5,7},
  {&(_tg__ZTV8S20971C4__8S20971C3__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C3__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C3__8S20971C2[5]),  5,6},
  {&(_tg__ZTV8S20971C6__8S20971C2[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C8__8S20971C2[7]),  7,11},
  {&(_tg__ZTV8S20971C68S20971C8__A1__8S20971C2[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C98S20971C8__8S20971C2[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C2[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C8__8S20971C2[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C8__8S20971C2[3]),  3,4},
  {&(_tg__ZTV8S20971C9__8S20971C8__8S20971C2[4]),  4,8},
  {&(_tg__ZTV8S20971C3__8S20971C8__8S20971C2[6]),  6,8},
  {&(_tg__ZTV8S20971C6__A2__8S20971C8__8S20971C2[5]),  5,6},
  {&(_tg__ZTV9S20971C10__8S20971C8__8S20971C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20971C2[];
extern  VTBL_ENTRY _ZTV8S20971C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C2[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C2 = {  "S20971C2", // class name
  bases_S20971C2, 13,
  &(vtc_S20971C2[0]), // expected_vtbl_contents
  &(vtt_S20971C2[0]), // expected_vtt_contents
  ABISELECT(1824,1168), // object size
  NSPAIRA(_ZTI8S20971C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20971C2),83, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C2),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C13  : virtual S20971C4 , virtual S20971C5 , S20971C6 {
  __tsi64 s20971c13f0;
  void *s20971c13f1;
  int s20971c13f2[2];
  virtual void  v15(); // _ZN9S20971C133v15Ev
  ~S20971C13(); // tgen
  S20971C13(); // tgen
};
//SIG(-1 S20971C13) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 BC4{ VBC2 VBC3 v6 Fi} v1 FL Fp Fi[2]}


void  S20971C13 ::v15(){vfunc_called(this, "_ZN9S20971C133v15Ev");}
S20971C13 ::~S20971C13(){ note_dtor("S20971C13", this);} // tgen
S20971C13 ::S20971C13(){ note_ctor("S20971C13", this);} // tgen

static void Test_S20971C13()
{
  extern Class_Descriptor cd_S20971C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,34)];
    init_test(&cd_S20971C13, buf);
    S20971C13 *dp, &lv = *(dp=new (buf) S20971C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,132), "sizeof(S20971C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C13)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(40,28), "S20971C13");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(40,28), "S20971C13");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(40,28), "S20971C13");
    /*is_ambiguous_... S20971C13::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*), ABISELECT(152,100), "S20971C13");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(152,100), "S20971C13");
    check_base_class_offset(lv, (S20971C6*), 0, "S20971C13");
    check_field_offset(lv, s20971c13f0, ABISELECT(16,8), "S20971C13.s20971c13f0");
    check_field_offset(lv, s20971c13f1, ABISELECT(24,16), "S20971C13.s20971c13f1");
    check_field_offset(lv, s20971c13f2, ABISELECT(32,20), "S20971C13.s20971c13f2");
    test_class_info(&lv, &cd_S20971C13);
    dp->~S20971C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C13(Test_S20971C13, "S20971C13", ABISELECT(200,132));

#else // __cplusplus

extern void _ZN9S20971C13C1Ev();
extern void _ZN9S20971C13D1Ev();
Name_Map name_map_S20971C13[] = {
  NSPAIR(_ZN9S20971C13C1Ev),
  NSPAIR(_ZN9S20971C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
static Base_Class bases_S20971C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(40,28), //bcp->offset
    6, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C5,    ABISELECT(152,100), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    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 _ZTI9S20971C13[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C133v15Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY vtc_S20971C13[] = {
  ABISELECT(152,100),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C133v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S20971C13[];
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__9S20971C13[] = {
  ABISELECT(152,100),
  ABISELECT(40,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__9S20971C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__9S20971C13[] = {
  0,
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C13[] = {
  {&(_ZTV9S20971C13[4]),  4,20},
  {&(_tg__ZTV8S20971C6__9S20971C13[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__9S20971C13[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__9S20971C13[3]),  3,4},
  {&(_ZTV9S20971C13[12]),  12,20},
  {&(_ZTV9S20971C13[19]),  19,20},
};
extern VTBL_ENTRY _ZTI9S20971C13[];
extern  VTBL_ENTRY _ZTV9S20971C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C13[];
Class_Descriptor cd_S20971C13 = {  "S20971C13", // class name
  bases_S20971C13, 4,
  &(vtc_S20971C13[0]), // expected_vtbl_contents
  &(vtt_S20971C13[0]), // expected_vtt_contents
  ABISELECT(200,132), // object size
  NSPAIRA(_ZTI9S20971C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20971C13),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C13),6, //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  S20971C12  : virtual S20971C4 {
  void *s20971c12f0[4];
  ::S20971C5 s20971c12f1;
  ::S20971C13 s20971c12f2;
  ~S20971C12(); // tgen
  S20971C12(); // tgen
};
//SIG(-1 S20971C12) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} Fp[4] FC3 FC4{ VBC2 VBC3 BC5{ VBC2 VBC3 v6 Fi} v5 FL Fp Fi[2]}}


S20971C12 ::~S20971C12(){ note_dtor("S20971C12", this);} // tgen
S20971C12 ::S20971C12(){ note_ctor("S20971C12", this);} // tgen

static void Test_S20971C12()
{
  extern Class_Descriptor cd_S20971C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,65)];
    init_test(&cd_S20971C12, buf);
    S20971C12 *dp, &lv = *(dp=new (buf) S20971C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,256), "sizeof(S20971C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C12)");
    check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(288,184), "S20971C12");
    check_base_class_offset(lv, (S20971C4*), ABISELECT(288,184), "S20971C12");
    check_field_offset(lv, s20971c12f0, ABISELECT(8,4), "S20971C12.s20971c12f0");
    check_field_offset(lv, s20971c12f1, ABISELECT(40,20), "S20971C12.s20971c12f1");
    check_field_offset(lv, s20971c12f2, ABISELECT(88,52), "S20971C12.s20971c12f2");
    test_class_info(&lv, &cd_S20971C12);
    dp->~S20971C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C12(Test_S20971C12, "S20971C12", ABISELECT(400,256));

#else // __cplusplus

extern void _ZN9S20971C12C1Ev();
extern void _ZN9S20971C12D1Ev();
Name_Map name_map_S20971C12[] = {
  NSPAIR(_ZN9S20971C12C1Ev),
  NSPAIR(_ZN9S20971C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
static Base_Class bases_S20971C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(288,184), //bcp->offset
    3, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C12[];
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY vtc_S20971C12[] = {
  ABISELECT(288,184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S20971C12[];
static  VTT_ENTRY vtt_S20971C12[] = {
  {&(_ZTV9S20971C12[3]),  3,13},
  {&(_ZTV9S20971C12[9]),  9,13},
};
extern VTBL_ENTRY _ZTI9S20971C12[];
extern  VTBL_ENTRY _ZTV9S20971C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C12[];
Class_Descriptor cd_S20971C12 = {  "S20971C12", // class name
  bases_S20971C12, 2,
  &(vtc_S20971C12[0]), // expected_vtbl_contents
  &(vtt_S20971C12[0]), // expected_vtt_contents
  ABISELECT(400,256), // object size
  NSPAIRA(_ZTI9S20971C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20971C12),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C12),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C14  : S20971C9 , S20971C4 , S20971C6 , virtual S20971C10 {
  int s20971c14f0;
  virtual void  v16(); // _ZN9S20971C143v16Ev
  virtual void  v17(); // _ZN9S20971C143v17Ev
  virtual void  v18(); // _ZN9S20971C143v18Ev
  ~S20971C14(); // tgen
  S20971C14(); // tgen
};
//SIG(-1 S20971C14) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S20971C14 ::v16(){vfunc_called(this, "_ZN9S20971C143v16Ev");}
void  S20971C14 ::v17(){vfunc_called(this, "_ZN9S20971C143v17Ev");}
void  S20971C14 ::v18(){vfunc_called(this, "_ZN9S20971C143v18Ev");}
S20971C14 ::~S20971C14(){ note_dtor("S20971C14", this);} // tgen
S20971C14 ::S20971C14(){ note_ctor("S20971C14", this);} // tgen

static void Test_S20971C14()
{
  extern Class_Descriptor cd_S20971C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S20971C14, buf);
    S20971C14 *dp, &lv = *(dp=new (buf) S20971C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S20971C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20971C14)");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(304,196), "S20971C14");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*), ABISELECT(304,196), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(304,196), "S20971C14");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*), ABISELECT(416,268), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(416,268), "S20971C14");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*), 0, "S20971C14");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*), ABISELECT(16,8), "S20971C14");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*), ABISELECT(16,8), "S20971C14");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*), ABISELECT(128,80), "S20971C14");
    check_base_class_offset(lv, (S20971C9*), 0, "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(176,112), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*), ABISELECT(176,112), "S20971C14");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*), ABISELECT(288,184), "S20971C14");
    check_base_class_offset(lv, (S20971C10*), ABISELECT(464,300), "S20971C14");
    check_field_offset(lv, s20971c14f0, ABISELECT(300,192), "S20971C14.s20971c14f0");
    test_class_info(&lv, &cd_S20971C14);
    dp->~S20971C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C14(Test_S20971C14, "S20971C14", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN9S20971C14C1Ev();
extern void _ZN9S20971C14D1Ev();
Name_Map name_map_S20971C14[] = {
  NSPAIR(_ZN9S20971C14C1Ev),
  NSPAIR(_ZN9S20971C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
static Base_Class bases_S20971C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(304,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
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    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
    7, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(16,8), //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20971C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(176,112), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C10,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //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},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C14[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C14D1Ev();
extern void _ZN9S20971C14D0Ev();
extern void _ZN8S20971C92v8Ev();
extern void _ZN9S20971C143v16Ev();
extern void _ZN9S20971C143v17Ev();
extern void _ZN9S20971C143v18Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C14[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v18Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20971C14[];
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__9S20971C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C9__9S20971C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C9__9S20971C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C9__9S20971C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A1__9S20971C14[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A1__9S20971C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A1__9S20971C14[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
static  VTT_ENTRY vtt_S20971C14[] = {
  {&(_ZTV9S20971C14[5]),  5,52},
  {&(_tg__ZTV8S20971C9__9S20971C14[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C9__9S20971C14[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C14[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C14[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C9__9S20971C14[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C9__9S20971C14[3]),  3,4},
  {&(_tg__ZTV8S20971C6__A1__9S20971C14[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A1__9S20971C14[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A1__9S20971C14[3]),  3,4},
  {&(_ZTV9S20971C14[38]),  38,52},
  {&(_ZTV9S20971C14[45]),  45,52},
  {&(_ZTV9S20971C14[31]),  31,52},
  {&(_ZTV9S20971C14[50]),  50,52},
};
extern VTBL_ENTRY _ZTI9S20971C14[];
extern  VTBL_ENTRY _ZTV9S20971C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C14[];
Class_Descriptor cd_S20971C14 = {  "S20971C14", // class name
  bases_S20971C14, 12,
  &(vtc_S20971C14[0]), // expected_vtbl_contents
  &(vtt_S20971C14[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI9S20971C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20971C14),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C14),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C11  : S20971C12 , S20971C9 , virtual S20971C13 , virtual S20971C6 , virtual S20971C14 {
  int s20971c11f0;
  long double s20971c11f1;
  int s20971c11f2;
  virtual  ~S20971C11(); // _ZN9S20971C11D2Ev
  S20971C11(); // tgen
};
//SIG(-1 S20971C11) C1{ BC2{ VBC3{ BC4{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC4 Fc[2] Fp} Fp[4] FC4 FC5{ VBC3 VBC4 BC6{ VBC3 VBC4 v5 Fi} v7 FL Fp Fi[2]}} BC7{ BC6 BC3 BC4 vd v6} VBC5 VBC6 VBC8{ BC7 BC3 BC6 VBC9{ v8 v9 Fi Fc[7] Fp Fi Fs} v10 v11 v12 Fi} vd Fi FD Fi}


 S20971C11 ::~S20971C11(){ note_dtor("S20971C11", this);}
S20971C11 ::S20971C11(){ note_ctor("S20971C11", this);} // tgen

static void Test_S20971C11()
{
  extern Class_Descriptor cd_S20971C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,171)];
    init_test(&cd_S20971C11, buf);
    S20971C11 *dp, &lv = *(dp=new (buf) S20971C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,680), "sizeof(S20971C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C11)");
    /*is_ambiguous_... S20971C11::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C12*), ABISELECT(504,316), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C13*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C13*), ABISELECT(504,316), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*)(S20971C14*), ABISELECT(504,316), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C14*), ABISELECT(504,316), "S20971C11");
    check_base_class_offset(lv, (S20971C12*), 0, "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C13::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C13*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C13*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*)(S20971C14*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C14*), ABISELECT(616,388), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C9*), ABISELECT(288,184), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*), ABISELECT(304,192), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*), ABISELECT(304,192), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*), ABISELECT(416,264), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C9 */ AMB_check_base_class_offset(lv, (S20971C9*), ABISELECT(288,184), "S20971C11");
    check_base_class_offset(lv, (S20971C6*)(S20971C13*), ABISELECT(664,420), "S20971C11");
    check_base_class_offset(lv, (S20971C13*), ABISELECT(664,420), "S20971C11");
    /*is_ambiguous_... S20971C11::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*), ABISELECT(704,448), "S20971C11");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*)(S20971C14*), ABISELECT(720,456), "S20971C11");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*)(S20971C14*), ABISELECT(736,464), "S20971C11");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*)(S20971C14*), ABISELECT(736,464), "S20971C11");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*)(S20971C14*), ABISELECT(848,536), "S20971C11");
    check_base_class_offset(lv, (S20971C9*)(S20971C14*), ABISELECT(720,456), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C14*), ABISELECT(896,568), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C14*), ABISELECT(896,568), "S20971C11");
    /*is_ambiguous_... S20971C14::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C14*), ABISELECT(1008,640), "S20971C11");
    check_base_class_offset(lv, (S20971C10*)(S20971C14*), ABISELECT(1024,652), "S20971C11");
    check_base_class_offset(lv, (S20971C14*), ABISELECT(720,456), "S20971C11");
    check_field_offset(lv, s20971c11f0, ABISELECT(464,296), "S20971C11.s20971c11f0");
    check_field_offset(lv, s20971c11f1, ABISELECT(480,300), "S20971C11.s20971c11f1");
    check_field_offset(lv, s20971c11f2, ABISELECT(496,312), "S20971C11.s20971c11f2");
    test_class_info(&lv, &cd_S20971C11);
    dp->~S20971C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C11(Test_S20971C11, "S20971C11", ABISELECT(1072,680));

#else // __cplusplus

extern void _ZN9S20971C11C1Ev();
extern void _ZN9S20971C11D2Ev();
Name_Map name_map_S20971C11[] = {
  NSPAIR(_ZN9S20971C11C1Ev),
  NSPAIR(_ZN9S20971C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C12;
extern VTBL_ENTRY _ZTI9S20971C12[];
extern  VTBL_ENTRY _ZTV9S20971C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C12[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C13;
extern VTBL_ENTRY _ZTI9S20971C13[];
extern  VTBL_ENTRY _ZTV9S20971C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C13[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
extern Class_Descriptor cd_S20971C14;
extern VTBL_ENTRY _ZTI9S20971C14[];
extern  VTBL_ENTRY _ZTV9S20971C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C14[];
static Base_Class bases_S20971C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(504,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
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(504,316), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20971C12,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C5,    ABISELECT(616,388), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(288,184), //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
    18, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(304,192), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(416,264), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(288,184), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20971C6,    ABISELECT(664,420), //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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C13,    ABISELECT(664,420), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(704,448), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20971C6,    ABISELECT(720,456), //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
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(736,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
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(736,464), //bcp->offset
    77, //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(848,536), //bcp->offset
    83, //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
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(720,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(896,568), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(896,568), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20971C6,    ABISELECT(1008,640), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20971C10,    ABISELECT(1024,652), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20971C14,    ABISELECT(720,456), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20971C11[];
extern void _ZN9S20971C11D1Ev();
extern void _ZN9S20971C11D0Ev();
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn288_N9S20971C11D1Ev,_ZThn184_N9S20971C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S20971C11D0Ev,_ZThn184_N9S20971C11D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C133v15Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S20971C11D1Ev,_ZTv0_n28_N9S20971C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S20971C11D1Ev,_ZThn456_N9S20971C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20971C11D0Ev,_ZTv0_n28_N9S20971C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S20971C11D0Ev,_ZThn456_N9S20971C11D0Ev)() __attribute__((weak));
extern void _ZN8S20971C92v8Ev();
extern void _ZN9S20971C143v16Ev();
extern void _ZN9S20971C143v17Ev();
extern void _ZN9S20971C143v18Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C11[] = {
  ABISELECT(1024,652),
  ABISELECT(720,456),
  ABISELECT(704,448),
  ABISELECT(664,420),
  ABISELECT(616,388),
  ABISELECT(504,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN9S20971C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20971C11D0Ev,
  ABISELECT(328,204),
  ABISELECT(216,132),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20971C11D1Ev,_ZThn184_N9S20971C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20971C11D0Ev,_ZThn184_N9S20971C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-316),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-616,-388),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-664,-420),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C133v15Ev,
  0,
  ABISELECT(-88,-60),
  ABISELECT(-200,-132),
  ABISELECT(-704,-448),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  ABISELECT(-720,-456),
  0,
  ABISELECT(304,196),
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  ABISELECT(-720,-456),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20971C11D1Ev,_ZTv0_n28_N9S20971C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20971C11D0Ev,_ZTv0_n28_N9S20971C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v18Ev,
  ABISELECT(-736,-464),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-848,-536),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  ABISELECT(-896,-568),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-392,-252),
  ABISELECT(-504,-324),
  ABISELECT(-1008,-640),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  0,
  0,
  ABISELECT(-1024,-652),
  (VTBL_ENTRY)&(_ZTI9S20971C11[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20971C11[];
static  VTBL_ENTRY _tg__ZTV9S20971C12__9S20971C11[] = {
  ABISELECT(504,316),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__9S20971C12__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-504,-316),
  (VTBL_ENTRY)&(_ZTI9S20971C12[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__9S20971C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C9__9S20971C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C9__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C9__9S20971C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C133v15Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C13__9S20971C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C133v15Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C69S20971C13__A1__9S20971C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C69S20971C13__A1__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C69S20971C13__A1__9S20971C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__9S20971C13__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__9S20971C13__9S20971C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20971C13[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__9S20971C11[] = {
  ABISELECT(-88,-60),
  ABISELECT(-200,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__A2__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(200,132),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__A2__9S20971C11[] = {
  0,
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN9S20971C14D1Ev();
extern void _ZN9S20971C14D0Ev();
extern void _ZN8S20971C92v8Ev();
extern void _ZN9S20971C143v16Ev();
extern void _ZN9S20971C143v17Ev();
extern void _ZN9S20971C143v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C14__9S20971C11[] = {
  ABISELECT(304,196),
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20971C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20971C143v18Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C99S20971C14__A1__9S20971C11[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C99S20971C14__A3__9S20971C11[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C99S20971C14__A3__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C99S20971C14__A3__9S20971C11[] = {
  0,
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C99S20971C14__A1__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C99S20971C14__A1__9S20971C11[] = {
  0,
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C69S20971C14__A4__9S20971C11[] = {
  ABISELECT(-392,-252),
  ABISELECT(-504,-324),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C69S20971C14__A4__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(504,324),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C69S20971C14__A4__9S20971C11[] = {
  0,
  ABISELECT(392,252),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__9S20971C14__9S20971C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__9S20971C14__9S20971C11[] = {
  0,
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A1__9S20971C14__9S20971C11[] = {
  ABISELECT(-392,-252),
  ABISELECT(-504,-324),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__9S20971C14__9S20971C11[] = {
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20971C14[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
static  VTT_ENTRY vtt_S20971C11[] = {
  {&(_ZTV9S20971C11[8]),  8,103},
  {&(_tg__ZTV9S20971C12__9S20971C11[3]),  3,3},
  {&(_tg__ZTV8S20971C4__9S20971C12__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C9__9S20971C11[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C9__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C9__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C9__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C9__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C9__9S20971C11[3]),  3,4},
  {&(_ZTV9S20971C11[33]),  33,103},
  {&(_ZTV9S20971C11[14]),  14,103},
  {&(_ZTV9S20971C11[40]),  40,103},
  {&(_ZTV9S20971C11[47]),  47,103},
  {&(_ZTV9S20971C11[54]),  54,103},
  {&(_ZTV9S20971C11[70]),  70,103},
  {&(_ZTV9S20971C11[79]),  79,103},
  {&(_ZTV9S20971C11[85]),  85,103},
  {&(_ZTV9S20971C11[88]),  88,103},
  {&(_ZTV9S20971C11[96]),  96,103},
  {&(_ZTV9S20971C11[101]),  101,103},
  {&(_tg__ZTV9S20971C13__9S20971C11[4]),  4,6},
  {&(_tg__ZTV8S20971C69S20971C13__A1__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C69S20971C13__A1__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C69S20971C13__A1__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__9S20971C13__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__9S20971C13__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C6__A2__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__A2__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__A2__9S20971C11[3]),  3,4},
  {&(_tg__ZTV9S20971C14__9S20971C11[5]),  5,12},
  {&(_tg__ZTV8S20971C99S20971C14__A1__9S20971C11[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C99S20971C14__A3__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C99S20971C14__A3__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C99S20971C14__A3__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C99S20971C14__A1__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C99S20971C14__A1__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C69S20971C14__A4__9S20971C11[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C69S20971C14__A4__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C69S20971C14__A4__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C4__9S20971C14__9S20971C11[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__9S20971C14__9S20971C11[3]),  3,4},
  {&(_tg__ZTV8S20971C6__A1__9S20971C14__9S20971C11[4]),  4,5},
  {&(_tg__ZTV9S20971C10__9S20971C14__9S20971C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20971C11[];
extern  VTBL_ENTRY _ZTV9S20971C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20971C11[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20971C11D0Ev,_ZTv0_n28_N9S20971C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20971C11D0Ev,_ZThn456_N9S20971C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20971C11D1Ev,_ZTv0_n28_N9S20971C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20971C11D1Ev,_ZThn456_N9S20971C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C11 = {  "S20971C11", // class name
  bases_S20971C11, 22,
  &(vtc_S20971C11[0]), // expected_vtbl_contents
  &(vtt_S20971C11[0]), // expected_vtt_contents
  ABISELECT(1072,680), // object size
  NSPAIRA(_ZTI9S20971C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20971C11),103, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20971C11),43, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20971C1  : virtual S20971C2 {
  ::S20971C11 s20971c1f0;
  void *s20971c1f1[2];
  virtual  ~S20971C1(); // _ZN8S20971C1D2Ev
  virtual void  v1(); // _ZN8S20971C12v1Ev
  virtual void  v2(); // _ZN8S20971C12v2Ev
  S20971C1(); // tgen
};
//SIG(1 S20971C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v3 Fp Fc[5] FL Fp[2]} v4 v5 v6 FC5 Fc[2] Fp} VBC5 VBC6{ VBC4 VBC5 v7 Fi} vd FC4 FC7{} FD[5] Fp FC5 Fi} VBC8{ VBC4 BC6 BC9{ BC6 BC4 BC5 vd v8} VBC3 VBC10{ v9 v10 Fi Fc[7] Fp Fi Fs} v11 FC4 FC9[3]} vd v12 v13 v14 Fc[4]} vd v1 v2 FC11{ BC12{ VBC4 Fp[4] FC5 FC13{ VBC4 VBC5 BC6 v15 FL Fp Fi[2]}} BC9 VBC13 VBC6 VBC14{ BC9 BC4 BC6 VBC10 v16 v17 v18 Fi} vd Fi FD Fi} Fp[2]}


 S20971C1 ::~S20971C1(){ note_dtor("S20971C1", this);}
void  S20971C1 ::v1(){vfunc_called(this, "_ZN8S20971C12v1Ev");}
void  S20971C1 ::v2(){vfunc_called(this, "_ZN8S20971C12v2Ev");}
S20971C1 ::S20971C1(){ note_ctor("S20971C1", this);} // tgen

static void Test_S20971C1()
{
  extern Class_Descriptor cd_S20971C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,466)];
    init_test(&cd_S20971C1, buf);
    S20971C1 *dp, &lv = *(dp=new (buf) S20971C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1860), "sizeof(S20971C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20971C1)");
    /*is_ambiguous_... S20971C1::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*), ABISELECT(1392,880), "S20971C1");
    check_base_class_offset(lv, (S20971C4*)(S20971C3*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C1::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C8*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C8*), ABISELECT(1392,880), "S20971C1");
    check_base_class_offset(lv, (S20971C4*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(1392,880), "S20971C1");
    /*is_ambiguous_... S20971C3::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C3*), ABISELECT(1504,952), "S20971C1");
    /*is_ambiguous_... S20971C1::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*), ABISELECT(1504,952), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C8*), ABISELECT(1504,952), "S20971C1");
    /*is_ambiguous_... S20971C6::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(1504,952), "S20971C1");
    check_base_class_offset(lv, (S20971C6*)(S20971C3*), ABISELECT(1552,984), "S20971C1");
    check_base_class_offset(lv, (S20971C3*)(S20971C2*), ABISELECT(1120,700), "S20971C1");
    check_base_class_offset(lv, (S20971C3*)(S20971C8*), ABISELECT(1120,700), "S20971C1");
    /*is_ambiguous_... S20971C8::S20971C6 */ AMB_check_base_class_offset(lv, (S20971C6*)(S20971C8*), ABISELECT(1568,992), "S20971C1");
    check_base_class_offset(lv, (S20971C6*)(S20971C9*)(S20971C8*), ABISELECT(1584,1000), "S20971C1");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(1600,1008), "S20971C1");
    /*is_ambiguous_... S20971C9::S20971C4 */ AMB_check_base_class_offset(lv, (S20971C4*)(S20971C9*)(S20971C8*), ABISELECT(1600,1008), "S20971C1");
    /*is_ambiguous_... S20971C9::S20971C5 */ AMB_check_base_class_offset(lv, (S20971C5*)(S20971C9*)(S20971C8*), ABISELECT(1712,1080), "S20971C1");
    check_base_class_offset(lv, (S20971C9*)(S20971C8*), ABISELECT(1584,1000), "S20971C1");
    check_base_class_offset(lv, (S20971C10*)(S20971C8*), ABISELECT(2880,1832), "S20971C1");
    check_base_class_offset(lv, (S20971C8*)(S20971C2*), ABISELECT(1568,992), "S20971C1");
    check_base_class_offset(lv, (S20971C2*), ABISELECT(1104,692), "S20971C1");
    check_field_offset(lv, s20971c1f0, ABISELECT(16,4), "S20971C1.s20971c1f0");
    check_field_offset(lv, s20971c1f1, ABISELECT(1088,684), "S20971C1.s20971c1f1");
    test_class_info(&lv, &cd_S20971C1);
    dp->~S20971C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20971C1(Test_S20971C1, "S20971C1", ABISELECT(2928,1860));

#else // __cplusplus

extern void _ZN8S20971C1C1Ev();
extern void _ZN8S20971C1D2Ev();
Name_Map name_map_S20971C1[] = {
  NSPAIR(_ZN8S20971C1C1Ev),
  NSPAIR(_ZN8S20971C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C3;
extern VTBL_ENTRY _ZTI8S20971C3[];
extern  VTBL_ENTRY _ZTV8S20971C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C3[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C6;
extern VTBL_ENTRY _ZTI8S20971C6[];
extern  VTBL_ENTRY _ZTV8S20971C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C6[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C4;
extern VTBL_ENTRY _ZTI8S20971C4[];
extern  VTBL_ENTRY _ZTV8S20971C4[];
extern Class_Descriptor cd_S20971C5;
extern VTBL_ENTRY _ZTI8S20971C5[];
extern  VTBL_ENTRY _ZTV8S20971C5[];
extern Class_Descriptor cd_S20971C9;
extern VTBL_ENTRY _ZTI8S20971C9[];
extern  VTBL_ENTRY _ZTV8S20971C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C9[];
extern Class_Descriptor cd_S20971C10;
extern VTBL_ENTRY _ZTI9S20971C10[];
extern  VTBL_ENTRY _ZTV9S20971C10[];
extern Class_Descriptor cd_S20971C8;
extern VTBL_ENTRY _ZTI8S20971C8[];
extern  VTBL_ENTRY _ZTV8S20971C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C8[];
extern Class_Descriptor cd_S20971C2;
extern VTBL_ENTRY _ZTI8S20971C2[];
extern  VTBL_ENTRY _ZTV8S20971C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C2[];
static Base_Class bases_S20971C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20971C5,    ABISELECT(1392,880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(1392,880), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C5,    ABISELECT(1504,952), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(1552,984), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20971C3,    ABISELECT(1120,700), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20971C6,    ABISELECT(1568,992), //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C6,    ABISELECT(1584,1000), //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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(1600,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20971C4,    ABISELECT(1600,1008), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C5,    ABISELECT(1712,1080), //bcp->offset
    91, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20971C9,    ABISELECT(1584,1000), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20971C10,    ABISELECT(2880,1832), //bcp->offset
    94, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20971C8,    ABISELECT(1568,992), //bcp->offset
    58, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20971C2,    ABISELECT(1104,692), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20971C1[];
extern void _ZN8S20971C1D1Ev();
extern void _ZN8S20971C1D0Ev();
extern void _ZN8S20971C12v1Ev();
extern void _ZN8S20971C12v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20971C1D1Ev,_ZTv0_n36_N8S20971C1D1Ev)();
extern void ABISELECT(_ZThn1104_N8S20971C1D1Ev,_ZThn692_N8S20971C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20971C1D0Ev,_ZTv0_n36_N8S20971C1D0Ev)();
extern void ABISELECT(_ZThn1104_N8S20971C1D0Ev,_ZThn692_N8S20971C1D0Ev)() __attribute__((weak));
extern void _ZN8S20971C23v12Ev();
extern void _ZN8S20971C23v13Ev();
extern void _ZN8S20971C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20971C1D1Ev,_ZTv0_n24_N8S20971C1D1Ev)();
extern void ABISELECT(_ZThn1120_N8S20971C1D1Ev,_ZThn700_N8S20971C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C1D0Ev,_ZTv0_n24_N8S20971C1D0Ev)();
extern void ABISELECT(_ZThn1120_N8S20971C1D0Ev,_ZThn700_N8S20971C1D0Ev)() __attribute__((weak));
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20971C1D1Ev,_ZTv0_n40_N8S20971C1D1Ev)();
extern void ABISELECT(_ZThn1568_N8S20971C1D1Ev,_ZThn992_N8S20971C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20971C1D0Ev,_ZTv0_n40_N8S20971C1D0Ev)();
extern void ABISELECT(_ZThn1568_N8S20971C1D0Ev,_ZThn992_N8S20971C1D0Ev)() __attribute__((weak));
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20971C1D1Ev,_ZTvn8_n40_N8S20971C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20971C1D0Ev,_ZTvn8_n40_N8S20971C1D0Ev)();
extern void _ZN8S20971C92v8Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
extern void _ZN8S20971C52v3Ev();
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY vtc_S20971C1[] = {
  ABISELECT(2880,1832),
  ABISELECT(1568,992),
  ABISELECT(1552,984),
  ABISELECT(1504,952),
  ABISELECT(1392,880),
  ABISELECT(1120,700),
  ABISELECT(1104,692),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20971C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-1104,-692),
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  ABISELECT(-1104,-692),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20971C1D1Ev,_ZTv0_n36_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20971C1D0Ev,_ZTv0_n36_N8S20971C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v14Ev,
  ABISELECT(-1120,-700),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-1120,-700),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C1D1Ev,_ZTv0_n24_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C1D0Ev,_ZTv0_n24_N8S20971C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-1392,-880),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  0,
  ABISELECT(-1504,-952),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1552,-984),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-1568,-992),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-1568,-992),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C1D1Ev,_ZTv0_n40_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C1D0Ev,_ZTv0_n40_N8S20971C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-1584,-1000),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C1D1Ev,_ZTvn8_n40_N8S20971C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C1D0Ev,_ZTvn8_n40_N8S20971C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
  ABISELECT(-1600,-1008),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
  ABISELECT(-1712,-1080),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  0,
  0,
  ABISELECT(-2880,-1832),
  (VTBL_ENTRY)&(_ZTI8S20971C1[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20971C1[];
extern void _ZN8S20971C2D1Ev();
extern void _ZN8S20971C2D0Ev();
extern void _ZN8S20971C23v12Ev();
extern void _ZN8S20971C23v13Ev();
extern void _ZN8S20971C23v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C2__8S20971C1[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20971C23v14Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C2__8S20971C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev),
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C2__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C2__8S20971C1[] = {
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C2__8S20971C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20971C8__8S20971C2__8S20971C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev),
};
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev)();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C98S20971C8__8S20971C2__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D1Ev,_ZTvn8_n40_N8S20971C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20971C2D0Ev,_ZTvn8_n40_N8S20971C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C48S20971C98S20971C8__A1__8S20971C2__8S20971C1[] = {
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C58S20971C98S20971C8__A3__8S20971C2__8S20971C1[] = {
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__8S20971C2__8S20971C1[] = {
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20971C2[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
extern void _ZN8S20971C3D1Ev();
extern void _ZN8S20971C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C1[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C3D0Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C3__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C3__8S20971C1[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C3__8S20971C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20971C3[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__8S20971C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C6__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C6__8S20971C1[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C83v11Ev();
extern void _ZN8S20971C8D1Ev();
extern void _ZN8S20971C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C8__8S20971C1[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C8D0Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C8__A1__8S20971C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void _ZN8S20971C9D1Ev();
extern void _ZN8S20971C9D0Ev();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C98S20971C8__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20971C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C6[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20971C9[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C52v3Ev();
extern void _ZN8S20971C42v4Ev();
extern void _ZN8S20971C42v5Ev();
extern void _ZN8S20971C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C4__8S20971C8__8S20971C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20971C42v6Ev,
};
extern void _ZN8S20971C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C5__A1__8S20971C8__8S20971C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C52v3Ev,
};
extern void _ZN8S20971C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev)();
extern void _ZN8S20971C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C9__8S20971C8__8S20971C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D1Ev,_ZThn8_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20971C8D0Ev,_ZThn8_N8S20971C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20971C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20971C3__8S20971C8__8S20971C1[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D1Ev,_ZTv0_n24_N8S20971C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20971C8D0Ev,_ZTv0_n24_N8S20971C8D0Ev),
};
extern void _ZN8S20971C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20971C6__A2__8S20971C8__8S20971C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN8S20971C62v7Ev,
};
extern void _ZN9S20971C102v9Ev();
extern void _ZN9S20971C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20971C10__8S20971C8__8S20971C1[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20971C8[0]),
  (VTBL_ENTRY)&_ZN9S20971C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20971C103v10Ev,
};
static  VTT_ENTRY vtt_S20971C1[] = {
  {&(_ZTV8S20971C1[9]),  9,100},
  {&(_ZTV8S20971C1[25]),  25,100},
  {&(_ZTV8S20971C1[36]),  36,100},
  {&(_ZTV8S20971C1[44]),  44,100},
  {&(_ZTV8S20971C1[51]),  51,100},
  {&(_ZTV8S20971C1[57]),  57,100},
  {&(_ZTV8S20971C1[73]),  73,100},
  {&(_ZTV8S20971C1[81]),  81,100},
  {&(_ZTV8S20971C1[87]),  87,100},
  {&(_ZTV8S20971C1[93]),  93,100},
  {&(_ZTV8S20971C1[98]),  98,100},
  {&(_tg__ZTV8S20971C2__8S20971C1[8]),  8,13},
  {&(_tg__ZTV8S20971C3__8S20971C2__8S20971C1[6]),  6,8},
  {&(_tg__ZTV8S20971C4__8S20971C2__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C2__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C2__8S20971C1[5]),  5,6},
  {&(_tg__ZTV8S20971C8__8S20971C2__8S20971C1[15]),  15,19},
  {&(_tg__ZTV8S20971C98S20971C8__8S20971C2__8S20971C1[4]),  4,8},
  {&(_tg__ZTV8S20971C48S20971C98S20971C8__A1__8S20971C2__8S20971C1[2]),  2,6},
  {&(_tg__ZTV8S20971C58S20971C98S20971C8__A3__8S20971C2__8S20971C1[2]),  2,3},
  {&(_tg__ZTV9S20971C10__8S20971C2__8S20971C1[4]),  4,6},
  {&(_tg__ZTV8S20971C3__8S20971C1[5]),  5,7},
  {&(_tg__ZTV8S20971C4__8S20971C3__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C3__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C6__8S20971C3__8S20971C1[5]),  5,6},
  {&(_tg__ZTV8S20971C6__8S20971C1[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C6__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C6__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C8__8S20971C1[7]),  7,11},
  {&(_tg__ZTV8S20971C68S20971C8__A1__8S20971C1[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C8__A1__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C8__A1__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C98S20971C8__8S20971C1[4]),  4,8},
  {&(_tg__ZTV8S20971C68S20971C98S20971C8__A2__8S20971C1[4]),  4,5},
  {&(_tg__ZTV8S20971C4__8S20971C68S20971C98S20971C8__A2__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C68S20971C98S20971C8__A2__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C98S20971C8__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C98S20971C8__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C4__8S20971C8__8S20971C1[6]),  6,10},
  {&(_tg__ZTV8S20971C5__A1__8S20971C8__8S20971C1[3]),  3,4},
  {&(_tg__ZTV8S20971C9__8S20971C8__8S20971C1[4]),  4,8},
  {&(_tg__ZTV8S20971C3__8S20971C8__8S20971C1[6]),  6,8},
  {&(_tg__ZTV8S20971C6__A2__8S20971C8__8S20971C1[5]),  5,6},
  {&(_tg__ZTV9S20971C10__8S20971C8__8S20971C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20971C1[];
extern  VTBL_ENTRY _ZTV8S20971C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20971C1[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D0Ev,_ZTv0_n40_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D0Ev,_ZThn300_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C2D1Ev,_ZTv0_n40_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20971C2D1Ev,_ZThn300_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D0Ev,_ZTv0_n24_N8S20971C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D0Ev,_ZThn8_N8S20971C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C2D1Ev,_ZTv0_n24_N8S20971C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20971C2D1Ev,_ZThn8_N8S20971C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C1D0Ev,_ZTv0_n40_N8S20971C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20971C1D0Ev,_ZThn992_N8S20971C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20971C1D1Ev,_ZTv0_n40_N8S20971C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20971C1D1Ev,_ZThn992_N8S20971C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C1D0Ev,_ZTv0_n24_N8S20971C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20971C1D0Ev,_ZThn700_N8S20971C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20971C1D1Ev,_ZTv0_n24_N8S20971C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20971C1D1Ev,_ZThn700_N8S20971C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20971C1D0Ev,_ZTv0_n36_N8S20971C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20971C1D0Ev,_ZThn692_N8S20971C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20971C1D1Ev,_ZTv0_n36_N8S20971C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20971C1D1Ev,_ZThn692_N8S20971C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20971C1 = {  "S20971C1", // class name
  bases_S20971C1, 14,
  &(vtc_S20971C1[0]), // expected_vtbl_contents
  &(vtt_S20971C1[0]), // expected_vtt_contents
  ABISELECT(2928,1860), // object size
  NSPAIRA(_ZTI8S20971C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20971C1),100, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20971C1),44, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C5  {
  void *s20970c5f0;
  char s20970c5f1[5];
  __tsi64 s20970c5f2;
  void *s20970c5f3[2];
  virtual void  v3(); // _ZN8S20970C52v3Ev
  ~S20970C5(); // tgen
  S20970C5(); // tgen
};
//SIG(-1 S20970C5) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S20970C5 ::v3(){vfunc_called(this, "_ZN8S20970C52v3Ev");}
S20970C5 ::~S20970C5(){ note_dtor("S20970C5", this);} // tgen
S20970C5 ::S20970C5(){ note_ctor("S20970C5", this);} // tgen

static void Test_S20970C5()
{
  extern Class_Descriptor cd_S20970C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S20970C5, buf);
    S20970C5 *dp, &lv = *(dp=new (buf) S20970C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S20970C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C5)");
    check_field_offset(lv, s20970c5f0, ABISELECT(8,4), "S20970C5.s20970c5f0");
    check_field_offset(lv, s20970c5f1, ABISELECT(16,8), "S20970C5.s20970c5f1");
    check_field_offset(lv, s20970c5f2, ABISELECT(24,16), "S20970C5.s20970c5f2");
    check_field_offset(lv, s20970c5f3, ABISELECT(32,24), "S20970C5.s20970c5f3");
    test_class_info(&lv, &cd_S20970C5);
    dp->~S20970C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C5(Test_S20970C5, "S20970C5", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S20970C5C1Ev();
extern void _ZN8S20970C5D1Ev();
Name_Map name_map_S20970C5[] = {
  NSPAIR(_ZN8S20970C5C1Ev),
  NSPAIR(_ZN8S20970C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20970C5[];
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C5[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
Class_Descriptor cd_S20970C5 = {  "S20970C5", // class name
  0,0,//no base classes
  &(vtc_S20970C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S20970C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20970C5),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  S20970C4  : S20970C5 {
  ::S20970C5 s20970c4f0;
  char s20970c4f1[2];
  void *s20970c4f2;
  virtual void  v4(); // _ZN8S20970C42v4Ev
  virtual void  v5(); // _ZN8S20970C42v5Ev
  virtual void  v6(); // _ZN8S20970C42v6Ev
  ~S20970C4(); // tgen
  S20970C4(); // tgen
};
//SIG(-1 S20970C4) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S20970C4 ::v4(){vfunc_called(this, "_ZN8S20970C42v4Ev");}
void  S20970C4 ::v5(){vfunc_called(this, "_ZN8S20970C42v5Ev");}
void  S20970C4 ::v6(){vfunc_called(this, "_ZN8S20970C42v6Ev");}
S20970C4 ::~S20970C4(){ note_dtor("S20970C4", this);} // tgen
S20970C4 ::S20970C4(){ note_ctor("S20970C4", this);} // tgen

static void Test_S20970C4()
{
  extern Class_Descriptor cd_S20970C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S20970C4, buf);
    S20970C4 *dp, &lv = *(dp=new (buf) S20970C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S20970C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C4)");
    check_base_class_offset(lv, (S20970C5*), 0, "S20970C4");
    check_field_offset(lv, s20970c4f0, ABISELECT(48,32), "S20970C4.s20970c4f0");
    check_field_offset(lv, s20970c4f1, ABISELECT(96,64), "S20970C4.s20970c4f1");
    check_field_offset(lv, s20970c4f2, ABISELECT(104,68), "S20970C4.s20970c4f2");
    test_class_info(&lv, &cd_S20970C4);
    dp->~S20970C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C4(Test_S20970C4, "S20970C4", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S20970C4C1Ev();
extern void _ZN8S20970C4D1Ev();
Name_Map name_map_S20970C4[] = {
  NSPAIR(_ZN8S20970C4C1Ev),
  NSPAIR(_ZN8S20970C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
static Base_Class bases_S20970C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C4[];
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY vtc_S20970C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C4[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
Class_Descriptor cd_S20970C4 = {  "S20970C4", // class name
  bases_S20970C4, 1,
  &(vtc_S20970C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S20970C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20970C4),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  S20970C6  : virtual S20970C4 , virtual S20970C5 {
  int s20970c6f0;
  virtual void  v7(); // _ZN8S20970C62v7Ev
  ~S20970C6(); // tgen
  S20970C6(); // tgen
};
//SIG(-1 S20970C6) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S20970C6 ::v7(){vfunc_called(this, "_ZN8S20970C62v7Ev");}
S20970C6 ::~S20970C6(){ note_dtor("S20970C6", this);} // tgen
S20970C6 ::S20970C6(){ note_ctor("S20970C6", this);} // tgen

static void Test_S20970C6()
{
  extern Class_Descriptor cd_S20970C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S20970C6, buf);
    S20970C6 *dp, &lv = *(dp=new (buf) S20970C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S20970C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C6)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(16,8), "S20970C6");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(16,8), "S20970C6");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(128,80), "S20970C6");
    check_field_offset(lv, s20970c6f0, ABISELECT(8,4), "S20970C6.s20970c6f0");
    test_class_info(&lv, &cd_S20970C6);
    dp->~S20970C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C6(Test_S20970C6, "S20970C6", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S20970C6C1Ev();
extern void _ZN8S20970C6D1Ev();
Name_Map name_map_S20970C6[] = {
  NSPAIR(_ZN8S20970C6C1Ev),
  NSPAIR(_ZN8S20970C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
static Base_Class bases_S20970C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C6[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C6[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20970C6[];
static  VTT_ENTRY vtt_S20970C6[] = {
  {&(_ZTV8S20970C6[4]),  4,19},
  {&(_ZTV8S20970C6[11]),  11,19},
  {&(_ZTV8S20970C6[18]),  18,19},
};
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
Class_Descriptor cd_S20970C6 = {  "S20970C6", // class name
  bases_S20970C6, 3,
  &(vtc_S20970C6[0]), // expected_vtbl_contents
  &(vtt_S20970C6[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S20970C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20970C6),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C6),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C3  : virtual S20970C4 , virtual S20970C5 , virtual S20970C6 {
  ::S20970C4 s20970c3f0;
  ::S19763C18_nt s20970c3f1;
  long double s20970c3f2[5];
  void *s20970c3f3;
  ::S20970C5 s20970c3f4;
  int s20970c3f5;
  virtual  ~S20970C3(); // _ZN8S20970C3D2Ev
  S20970C3(); // tgen
};
//SIG(-1 S20970C3) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} VBC3 VBC4{ VBC2 VBC3 v5 Fi} vd FC2 FC5{} FD[5] Fp FC3 Fi}


 S20970C3 ::~S20970C3(){ note_dtor("S20970C3", this);}
S20970C3 ::S20970C3(){ note_ctor("S20970C3", this);} // tgen

static void Test_S20970C3()
{
  extern Class_Descriptor cd_S20970C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,74)];
    init_test(&cd_S20970C3, buf);
    S20970C3 *dp, &lv = *(dp=new (buf) S20970C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,292), "sizeof(S20970C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C3)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(272,180), "S20970C3");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(272,180), "S20970C3");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(272,180), "S20970C3");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(384,252), "S20970C3");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(384,252), "S20970C3");
    check_base_class_offset(lv, (S20970C6*), ABISELECT(432,284), "S20970C3");
    check_field_offset(lv, s20970c3f0, ABISELECT(8,4), "S20970C3.s20970c3f0");
    check_field_offset(lv, s20970c3f1, ABISELECT(120,76), "S20970C3.s20970c3f1");
    check_field_offset(lv, s20970c3f2, ABISELECT(128,80), "S20970C3.s20970c3f2");
    check_field_offset(lv, s20970c3f3, ABISELECT(208,140), "S20970C3.s20970c3f3");
    check_field_offset(lv, s20970c3f4, ABISELECT(216,144), "S20970C3.s20970c3f4");
    check_field_offset(lv, s20970c3f5, ABISELECT(264,176), "S20970C3.s20970c3f5");
    test_class_info(&lv, &cd_S20970C3);
    dp->~S20970C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C3(Test_S20970C3, "S20970C3", ABISELECT(448,292));

#else // __cplusplus

extern void _ZN8S20970C3C1Ev();
extern void _ZN8S20970C3D2Ev();
Name_Map name_map_S20970C3[] = {
  NSPAIR(_ZN8S20970C3C1Ev),
  NSPAIR(_ZN8S20970C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
static Base_Class bases_S20970C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(272,180), //bcp->offset
    7, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(384,252), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(432,284), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C3[];
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY vtc_S20970C3[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern VTBL_ENTRY _ZTV8S20970C3[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C3[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C3[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C3[] = {
  {&(_ZTV8S20970C3[5]),  5,27},
  {&(_ZTV8S20970C3[13]),  13,27},
  {&(_ZTV8S20970C3[20]),  20,27},
  {&(_ZTV8S20970C3[26]),  26,27},
  {&(_tg__ZTV8S20970C6__8S20970C3[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C3[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
Class_Descriptor cd_S20970C3 = {  "S20970C3", // class name
  bases_S20970C3, 4,
  &(vtc_S20970C3[0]), // expected_vtbl_contents
  &(vtt_S20970C3[0]), // expected_vtt_contents
  ABISELECT(448,292), // object size
  NSPAIRA(_ZTI8S20970C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20970C3),27, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C3),7, //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  S20970C9  : S20970C6 , S20970C4 , S20970C5 {
  virtual  ~S20970C9(); // _ZN8S20970C9D2Ev
  virtual void  v8(); // _ZN8S20970C92v8Ev
  S20970C9(); // tgen
};
//SIG(-1 S20970C9) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S20970C9 ::~S20970C9(){ note_dtor("S20970C9", this);}
void  S20970C9 ::v8(){vfunc_called(this, "_ZN8S20970C92v8Ev");}
S20970C9 ::S20970C9(){ note_ctor("S20970C9", this);} // tgen

static void Test_S20970C9()
{
  extern Class_Descriptor cd_S20970C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S20970C9, buf);
    S20970C9 *dp, &lv = *(dp=new (buf) S20970C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S20970C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C9)");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(176,112), "S20970C9");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(176,112), "S20970C9");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(288,184), "S20970C9");
    check_base_class_offset(lv, (S20970C6*), 0, "S20970C9");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(16,8), "S20970C9");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*), ABISELECT(16,8), "S20970C9");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(128,80), "S20970C9");
    test_class_info(&lv, &cd_S20970C9);
    dp->~S20970C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C9(Test_S20970C9, "S20970C9", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S20970C9C1Ev();
extern void _ZN8S20970C9D2Ev();
Name_Map name_map_S20970C9[] = {
  NSPAIR(_ZN8S20970C9C1Ev),
  NSPAIR(_ZN8S20970C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
static Base_Class bases_S20970C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(128,80), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C9[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTV8S20970C9[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C9[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C9[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C9[] = {
  {&(_ZTV8S20970C9[4]),  4,31},
  {&(_tg__ZTV8S20970C6__8S20970C9[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C9[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C9[3]),  3,4},
  {&(_ZTV8S20970C9[23]),  23,31},
  {&(_ZTV8S20970C9[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
Class_Descriptor cd_S20970C9 = {  "S20970C9", // class name
  bases_S20970C9, 7,
  &(vtc_S20970C9[0]), // expected_vtbl_contents
  &(vtt_S20970C9[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S20970C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20970C9),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C9),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C10  {
  int s20970c10f0;
  char s20970c10f1[7];
  void *s20970c10f2;
  int s20970c10f3;
  short s20970c10f4;
  virtual void  v9(); // _ZN9S20970C102v9Ev
  virtual void  v10(); // _ZN9S20970C103v10Ev
  ~S20970C10(); // tgen
  S20970C10(); // tgen
};
//SIG(-1 S20970C10) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S20970C10 ::v9(){vfunc_called(this, "_ZN9S20970C102v9Ev");}
void  S20970C10 ::v10(){vfunc_called(this, "_ZN9S20970C103v10Ev");}
S20970C10 ::~S20970C10(){ note_dtor("S20970C10", this);} // tgen
S20970C10 ::S20970C10(){ note_ctor("S20970C10", this);} // tgen

static void Test_S20970C10()
{
  extern Class_Descriptor cd_S20970C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S20970C10, buf);
    S20970C10 *dp, &lv = *(dp=new (buf) S20970C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S20970C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C10)");
    check_field_offset(lv, s20970c10f0, ABISELECT(8,4), "S20970C10.s20970c10f0");
    check_field_offset(lv, s20970c10f1, ABISELECT(12,8), "S20970C10.s20970c10f1");
    check_field_offset(lv, s20970c10f2, ABISELECT(24,16), "S20970C10.s20970c10f2");
    check_field_offset(lv, s20970c10f3, ABISELECT(32,20), "S20970C10.s20970c10f3");
    check_field_offset(lv, s20970c10f4, ABISELECT(36,24), "S20970C10.s20970c10f4");
    test_class_info(&lv, &cd_S20970C10);
    dp->~S20970C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C10(Test_S20970C10, "S20970C10", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN9S20970C10C1Ev();
extern void _ZN9S20970C10D1Ev();
Name_Map name_map_S20970C10[] = {
  NSPAIR(_ZN9S20970C10C1Ev),
  NSPAIR(_ZN9S20970C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20970C10[];
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C10[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
Class_Descriptor cd_S20970C10 = {  "S20970C10", // class name
  0,0,//no base classes
  &(vtc_S20970C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI9S20970C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20970C10),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  S20970C8  : virtual S20970C4 , S20970C6 , S20970C9 , virtual S20970C3 , virtual S20970C10 {
  ::S20970C4 s20970c8f0;
  ::S20970C9 s20970c8f1[3];
  virtual void  v11(); // _ZN8S20970C83v11Ev
  ~S20970C8(); // tgen
  S20970C8(); // tgen
};
//SIG(-1 S20970C8) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} BC4{ VBC2 VBC3 v6 Fi} BC5{ BC4 BC2 BC3 vd v7} VBC6{ VBC2 VBC3 VBC4 vd FC2 FC7{} FD[5] Fp FC3 Fi} VBC8{ v8 v9 Fi Fc[7] Fp Fi Fs} v1 FC2 FC5[3]}


void  S20970C8 ::v11(){vfunc_called(this, "_ZN8S20970C83v11Ev");}
S20970C8 ::~S20970C8(){ note_dtor("S20970C8", this);} // tgen
S20970C8 ::S20970C8(){ note_ctor("S20970C8", this);} // tgen

static void Test_S20970C8()
{
  extern Class_Descriptor cd_S20970C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(114,291)];
    init_test(&cd_S20970C8, buf);
    S20970C8 *dp, &lv = *(dp=new (buf) S20970C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1808,1160), "sizeof(S20970C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C8)");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(1312,840), "S20970C8");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*), ABISELECT(1312,840), "S20970C8");
    check_base_class_offset(lv, (S20970C4*)(S20970C3*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(1312,840), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C3*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(1424,912), "S20970C8");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*), 0, "S20970C8");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*), ABISELECT(16,8), "S20970C8");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*), ABISELECT(32,16), "S20970C8");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*), ABISELECT(32,16), "S20970C8");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*), ABISELECT(144,88), "S20970C8");
    check_base_class_offset(lv, (S20970C9*), ABISELECT(16,8), "S20970C8");
    check_base_class_offset(lv, (S20970C6*)(S20970C3*), ABISELECT(1744,1124), "S20970C8");
    check_base_class_offset(lv, (S20970C3*), ABISELECT(1472,944), "S20970C8");
    check_base_class_offset(lv, (S20970C10*), ABISELECT(1760,1132), "S20970C8");
    check_field_offset(lv, s20970c8f0, ABISELECT(192,120), "S20970C8.s20970c8f0");
    check_field_offset(lv, s20970c8f1, ABISELECT(304,192), "S20970C8.s20970c8f1");
    test_class_info(&lv, &cd_S20970C8);
    dp->~S20970C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C8(Test_S20970C8, "S20970C8", ABISELECT(1808,1160));

#else // __cplusplus

extern void _ZN8S20970C8C1Ev();
extern void _ZN8S20970C8D1Ev();
Name_Map name_map_S20970C8[] = {
  NSPAIR(_ZN8S20970C8C1Ev),
  NSPAIR(_ZN8S20970C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C3;
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
static Base_Class bases_S20970C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(1312,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
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(1312,840), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(1424,912), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    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_S20970C6,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    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
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(32,16), //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
    10, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(144,88), //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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(1744,1124), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20970C3,    ABISELECT(1472,944), //bcp->offset
    42, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C10,    ABISELECT(1760,1132), //bcp->offset
    56, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C8[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void _ZN8S20970C8D1Ev();
extern void _ZN8S20970C8D0Ev();
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn1472_N8S20970C8D1Ev,_ZThn944_N8S20970C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev)();
extern void ABISELECT(_ZThn1472_N8S20970C8D0Ev,_ZThn944_N8S20970C8D0Ev)() __attribute__((weak));
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C8[] = {
  ABISELECT(1760,1132),
  ABISELECT(1744,1124),
  ABISELECT(1472,944),
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D0Ev,
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  ABISELECT(-1472,-944),
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1472,-944),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev),
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-1744,-1124),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  ABISELECT(-1760,-1132),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20970C8[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A__8S20970C8[] = {
  ABISELECT(1424,912),
  ABISELECT(1312,840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A__8S20970C8[] = {
  0,
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__8S20970C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C9__A1__8S20970C8[] = {
  ABISELECT(1408,904),
  ABISELECT(1296,832),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C9__A1__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C9__A1__8S20970C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C9__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-1296,-832),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C9__8S20970C8[] = {
  0,
  ABISELECT(-1408,-904),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C8[] = {
  ABISELECT(272,180),
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C3__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C3__8S20970C8[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3__8S20970C8[] = {
  0,
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__8S20970C8[] = {
  ABISELECT(-320,-212),
  ABISELECT(-432,-284),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A2__8S20970C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(432,284),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A2__8S20970C8[] = {
  0,
  ABISELECT(320,212),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C8[] = {
  {&(_ZTV8S20970C8[7]),  7,62},
  {&(_tg__ZTV8S20970C6__A__8S20970C8[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A__8S20970C8[3]),  3,4},
  {&(_tg__ZTV8S20970C9__8S20970C8[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C9__A1__8S20970C8[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C9__A1__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C9__A1__8S20970C8[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C9__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C9__8S20970C8[3]),  3,4},
  {&(_ZTV8S20970C8[34]),  34,62},
  {&(_ZTV8S20970C8[41]),  41,62},
  {&(_ZTV8S20970C8[15]),  15,62},
  {&(_ZTV8S20970C8[48]),  48,62},
  {&(_ZTV8S20970C8[55]),  55,62},
  {&(_ZTV8S20970C8[60]),  60,62},
  {&(_tg__ZTV8S20970C3__8S20970C8[5]),  5,7},
  {&(_tg__ZTV8S20970C4__8S20970C3__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C3__8S20970C8[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C3__8S20970C8[5]),  5,6},
  {&(_tg__ZTV8S20970C6__A2__8S20970C8[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A2__8S20970C8[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A2__8S20970C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20970C8[];
extern  VTBL_ENTRY _ZTV8S20970C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C8[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20970C8D0Ev,_ZThn944_N8S20970C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S20970C8D1Ev,_ZThn944_N8S20970C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C8 = {  "S20970C8", // class name
  bases_S20970C8, 12,
  &(vtc_S20970C8[0]), // expected_vtbl_contents
  &(vtt_S20970C8[0]), // expected_vtt_contents
  ABISELECT(1808,1160), // object size
  NSPAIRA(_ZTI8S20970C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20970C8),62, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C8),23, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C2  : virtual S20970C3 , virtual S20970C8 {
  char s20970c2f0[4];
  virtual  ~S20970C2(); // _ZN8S20970C2D2Ev
  virtual void  v12(); // _ZN8S20970C23v12Ev
  virtual void  v13(); // _ZN8S20970C23v13Ev
  virtual void  v14(); // _ZN8S20970C23v14Ev
  S20970C2(); // tgen
};
//SIG(-1 S20970C2) C1{ VBC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 VBC5{ VBC3 VBC4 v8 Fi} vd FC3 FC6{} FD[5] Fp FC4 Fi} VBC7{ VBC3 BC5 BC8{ BC5 BC3 BC4 vd v9} VBC2 VBC9{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 FC3 FC8[3]} vd v1 v2 v3 Fc[4]}


 S20970C2 ::~S20970C2(){ note_dtor("S20970C2", this);}
void  S20970C2 ::v12(){vfunc_called(this, "_ZN8S20970C23v12Ev");}
void  S20970C2 ::v13(){vfunc_called(this, "_ZN8S20970C23v13Ev");}
void  S20970C2 ::v14(){vfunc_called(this, "_ZN8S20970C23v14Ev");}
S20970C2 ::S20970C2(){ note_ctor("S20970C2", this);} // tgen

static void Test_S20970C2()
{
  extern Class_Descriptor cd_S20970C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(115,293)];
    init_test(&cd_S20970C2, buf);
    S20970C2 *dp, &lv = *(dp=new (buf) S20970C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1824,1168), "sizeof(S20970C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C2)");
    /*is_ambiguous_... S20970C2::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(288,188), "S20970C2");
    check_base_class_offset(lv, (S20970C4*)(S20970C3*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C2::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C8*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C8*), ABISELECT(288,188), "S20970C2");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(288,188), "S20970C2");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C3*), ABISELECT(400,260), "S20970C2");
    /*is_ambiguous_... S20970C2::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(400,260), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C8*), ABISELECT(400,260), "S20970C2");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(400,260), "S20970C2");
    check_base_class_offset(lv, (S20970C6*)(S20970C3*), ABISELECT(448,292), "S20970C2");
    check_base_class_offset(lv, (S20970C3*), ABISELECT(16,8), "S20970C2");
    check_base_class_offset(lv, (S20970C3*)(S20970C8*), ABISELECT(16,8), "S20970C2");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C8*), ABISELECT(464,300), "S20970C2");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(480,308), "S20970C2");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(496,316), "S20970C2");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(496,316), "S20970C2");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*)(S20970C8*), ABISELECT(608,388), "S20970C2");
    check_base_class_offset(lv, (S20970C9*)(S20970C8*), ABISELECT(480,308), "S20970C2");
    check_base_class_offset(lv, (S20970C10*)(S20970C8*), ABISELECT(1776,1140), "S20970C2");
    check_base_class_offset(lv, (S20970C8*), ABISELECT(464,300), "S20970C2");
    check_field_offset(lv, s20970c2f0, ABISELECT(8,4), "S20970C2.s20970c2f0");
    test_class_info(&lv, &cd_S20970C2);
    dp->~S20970C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C2(Test_S20970C2, "S20970C2", ABISELECT(1824,1168));

#else // __cplusplus

extern void _ZN8S20970C2C1Ev();
extern void _ZN8S20970C2D2Ev();
Name_Map name_map_S20970C2[] = {
  NSPAIR(_ZN8S20970C2C1Ev),
  NSPAIR(_ZN8S20970C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C3;
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
extern Class_Descriptor cd_S20970C8;
extern VTBL_ENTRY _ZTI8S20970C8[];
extern  VTBL_ENTRY _ZTV8S20970C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C8[];
static Base_Class bases_S20970C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(288,188), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(400,260), //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(448,292), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20970C3,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(464,300), //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C6,    ABISELECT(480,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(496,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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(496,316), //bcp->offset
    68, //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
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(608,388), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(480,308), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C10,    ABISELECT(1776,1140), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20970C8,    ABISELECT(464,300), //bcp->offset
    41, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C2[];
extern void _ZN8S20970C2D1Ev();
extern void _ZN8S20970C2D0Ev();
extern void _ZN8S20970C23v12Ev();
extern void _ZN8S20970C23v13Ev();
extern void _ZN8S20970C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev)() __attribute__((weak));
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev)() __attribute__((weak));
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C2[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v14Ev,
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20970C2[];
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C2[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C3__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C3__8S20970C2[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3__8S20970C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C2[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void _ZN8S20970C8D1Ev();
extern void _ZN8S20970C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C8__8S20970C2[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D0Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C8__A1__8S20970C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C98S20970C8__8S20970C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C2[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C8__8S20970C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C8__8S20970C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev)();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__8S20970C8__8S20970C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C8__8S20970C2[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev),
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__8S20970C8__8S20970C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__8S20970C8__8S20970C2[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
static  VTT_ENTRY vtt_S20970C2[] = {
  {&(_ZTV8S20970C2[8]),  8,83},
  {&(_ZTV8S20970C2[19]),  19,83},
  {&(_ZTV8S20970C2[27]),  27,83},
  {&(_ZTV8S20970C2[34]),  34,83},
  {&(_ZTV8S20970C2[40]),  40,83},
  {&(_ZTV8S20970C2[56]),  56,83},
  {&(_ZTV8S20970C2[64]),  64,83},
  {&(_ZTV8S20970C2[70]),  70,83},
  {&(_ZTV8S20970C2[76]),  76,83},
  {&(_ZTV8S20970C2[81]),  81,83},
  {&(_tg__ZTV8S20970C3__8S20970C2[5]),  5,7},
  {&(_tg__ZTV8S20970C4__8S20970C3__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C3__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C3__8S20970C2[5]),  5,6},
  {&(_tg__ZTV8S20970C6__8S20970C2[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C8__8S20970C2[7]),  7,11},
  {&(_tg__ZTV8S20970C68S20970C8__A1__8S20970C2[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C98S20970C8__8S20970C2[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C2[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C8__8S20970C2[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C8__8S20970C2[3]),  3,4},
  {&(_tg__ZTV8S20970C9__8S20970C8__8S20970C2[4]),  4,8},
  {&(_tg__ZTV8S20970C3__8S20970C8__8S20970C2[6]),  6,8},
  {&(_tg__ZTV8S20970C6__A2__8S20970C8__8S20970C2[5]),  5,6},
  {&(_tg__ZTV9S20970C10__8S20970C8__8S20970C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20970C2[];
extern  VTBL_ENTRY _ZTV8S20970C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C2[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C2 = {  "S20970C2", // class name
  bases_S20970C2, 13,
  &(vtc_S20970C2[0]), // expected_vtbl_contents
  &(vtt_S20970C2[0]), // expected_vtt_contents
  ABISELECT(1824,1168), // object size
  NSPAIRA(_ZTI8S20970C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20970C2),83, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C2),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C13  : virtual S20970C4 , virtual S20970C5 , S20970C6 {
  long s20970c13f0;
  void *s20970c13f1;
  int s20970c13f2[2];
  virtual void  v15(); // _ZN9S20970C133v15Ev
  ~S20970C13(); // tgen
  S20970C13(); // tgen
};
//SIG(-1 S20970C13) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 BC4{ VBC2 VBC3 v6 Fi} v1 Fl Fp Fi[2]}


void  S20970C13 ::v15(){vfunc_called(this, "_ZN9S20970C133v15Ev");}
S20970C13 ::~S20970C13(){ note_dtor("S20970C13", this);} // tgen
S20970C13 ::S20970C13(){ note_ctor("S20970C13", this);} // tgen

static void Test_S20970C13()
{
  extern Class_Descriptor cd_S20970C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,33)];
    init_test(&cd_S20970C13, buf);
    S20970C13 *dp, &lv = *(dp=new (buf) S20970C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,128), "sizeof(S20970C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C13)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(40,24), "S20970C13");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(40,24), "S20970C13");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(40,24), "S20970C13");
    /*is_ambiguous_... S20970C13::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*), ABISELECT(152,96), "S20970C13");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(152,96), "S20970C13");
    check_base_class_offset(lv, (S20970C6*), 0, "S20970C13");
    check_field_offset(lv, s20970c13f0, ABISELECT(16,8), "S20970C13.s20970c13f0");
    check_field_offset(lv, s20970c13f1, ABISELECT(24,12), "S20970C13.s20970c13f1");
    check_field_offset(lv, s20970c13f2, ABISELECT(32,16), "S20970C13.s20970c13f2");
    test_class_info(&lv, &cd_S20970C13);
    dp->~S20970C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C13(Test_S20970C13, "S20970C13", ABISELECT(200,128));

#else // __cplusplus

extern void _ZN9S20970C13C1Ev();
extern void _ZN9S20970C13D1Ev();
Name_Map name_map_S20970C13[] = {
  NSPAIR(_ZN9S20970C13C1Ev),
  NSPAIR(_ZN9S20970C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
static Base_Class bases_S20970C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    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
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(40,24), //bcp->offset
    6, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C5,    ABISELECT(152,96), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    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 _ZTI9S20970C13[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C133v15Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY vtc_S20970C13[] = {
  ABISELECT(152,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C133v15Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern VTBL_ENTRY _ZTV9S20970C13[];
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__9S20970C13[] = {
  ABISELECT(152,96),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__9S20970C13[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__9S20970C13[] = {
  0,
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C13[] = {
  {&(_ZTV9S20970C13[4]),  4,20},
  {&(_tg__ZTV8S20970C6__9S20970C13[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__9S20970C13[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__9S20970C13[3]),  3,4},
  {&(_ZTV9S20970C13[12]),  12,20},
  {&(_ZTV9S20970C13[19]),  19,20},
};
extern VTBL_ENTRY _ZTI9S20970C13[];
extern  VTBL_ENTRY _ZTV9S20970C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C13[];
Class_Descriptor cd_S20970C13 = {  "S20970C13", // class name
  bases_S20970C13, 4,
  &(vtc_S20970C13[0]), // expected_vtbl_contents
  &(vtt_S20970C13[0]), // expected_vtt_contents
  ABISELECT(200,128), // object size
  NSPAIRA(_ZTI9S20970C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20970C13),20, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C13),6, //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  S20970C12  : virtual S20970C4 {
  void *s20970c12f0[4];
  ::S20970C5 s20970c12f1;
  ::S20970C13 s20970c12f2;
  ~S20970C12(); // tgen
  S20970C12(); // tgen
};
//SIG(-1 S20970C12) C1{ VBC2{ BC3{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC3 Fc[2] Fp} Fp[4] FC3 FC4{ VBC2 VBC3 BC5{ VBC2 VBC3 v6 Fi} v5 Fl Fp Fi[2]}}


S20970C12 ::~S20970C12(){ note_dtor("S20970C12", this);} // tgen
S20970C12 ::S20970C12(){ note_ctor("S20970C12", this);} // tgen

static void Test_S20970C12()
{
  extern Class_Descriptor cd_S20970C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,64)];
    init_test(&cd_S20970C12, buf);
    S20970C12 *dp, &lv = *(dp=new (buf) S20970C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,252), "sizeof(S20970C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C12)");
    check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(288,180), "S20970C12");
    check_base_class_offset(lv, (S20970C4*), ABISELECT(288,180), "S20970C12");
    check_field_offset(lv, s20970c12f0, ABISELECT(8,4), "S20970C12.s20970c12f0");
    check_field_offset(lv, s20970c12f1, ABISELECT(40,20), "S20970C12.s20970c12f1");
    check_field_offset(lv, s20970c12f2, ABISELECT(88,52), "S20970C12.s20970c12f2");
    test_class_info(&lv, &cd_S20970C12);
    dp->~S20970C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C12(Test_S20970C12, "S20970C12", ABISELECT(400,252));

#else // __cplusplus

extern void _ZN9S20970C12C1Ev();
extern void _ZN9S20970C12D1Ev();
Name_Map name_map_S20970C12[] = {
  NSPAIR(_ZN9S20970C12C1Ev),
  NSPAIR(_ZN9S20970C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
static Base_Class bases_S20970C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(288,180), //bcp->offset
    3, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C12[];
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY vtc_S20970C12[] = {
  ABISELECT(288,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
  0,
  0,
  0,
  0,
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern VTBL_ENTRY _ZTV9S20970C12[];
static  VTT_ENTRY vtt_S20970C12[] = {
  {&(_ZTV9S20970C12[3]),  3,13},
  {&(_ZTV9S20970C12[9]),  9,13},
};
extern VTBL_ENTRY _ZTI9S20970C12[];
extern  VTBL_ENTRY _ZTV9S20970C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C12[];
Class_Descriptor cd_S20970C12 = {  "S20970C12", // class name
  bases_S20970C12, 2,
  &(vtc_S20970C12[0]), // expected_vtbl_contents
  &(vtt_S20970C12[0]), // expected_vtt_contents
  ABISELECT(400,252), // object size
  NSPAIRA(_ZTI9S20970C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20970C12),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C12),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C14  : S20970C9 , S20970C4 , S20970C6 , virtual S20970C10 {
  int s20970c14f0;
  virtual void  v16(); // _ZN9S20970C143v16Ev
  virtual void  v17(); // _ZN9S20970C143v17Ev
  virtual void  v18(); // _ZN9S20970C143v18Ev
  ~S20970C14(); // tgen
  S20970C14(); // tgen
};
//SIG(-1 S20970C14) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S20970C14 ::v16(){vfunc_called(this, "_ZN9S20970C143v16Ev");}
void  S20970C14 ::v17(){vfunc_called(this, "_ZN9S20970C143v17Ev");}
void  S20970C14 ::v18(){vfunc_called(this, "_ZN9S20970C143v18Ev");}
S20970C14 ::~S20970C14(){ note_dtor("S20970C14", this);} // tgen
S20970C14 ::S20970C14(){ note_ctor("S20970C14", this);} // tgen

static void Test_S20970C14()
{
  extern Class_Descriptor cd_S20970C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S20970C14, buf);
    S20970C14 *dp, &lv = *(dp=new (buf) S20970C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S20970C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20970C14)");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(304,196), "S20970C14");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*), ABISELECT(304,196), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(304,196), "S20970C14");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*), ABISELECT(416,268), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(416,268), "S20970C14");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*), 0, "S20970C14");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*), ABISELECT(16,8), "S20970C14");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*), ABISELECT(16,8), "S20970C14");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*), ABISELECT(128,80), "S20970C14");
    check_base_class_offset(lv, (S20970C9*), 0, "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(176,112), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*), ABISELECT(176,112), "S20970C14");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*), ABISELECT(288,184), "S20970C14");
    check_base_class_offset(lv, (S20970C10*), ABISELECT(464,300), "S20970C14");
    check_field_offset(lv, s20970c14f0, ABISELECT(300,192), "S20970C14.s20970c14f0");
    test_class_info(&lv, &cd_S20970C14);
    dp->~S20970C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C14(Test_S20970C14, "S20970C14", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN9S20970C14C1Ev();
extern void _ZN9S20970C14D1Ev();
Name_Map name_map_S20970C14[] = {
  NSPAIR(_ZN9S20970C14C1Ev),
  NSPAIR(_ZN9S20970C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
static Base_Class bases_S20970C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(304,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
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    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
    7, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(16,8), //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20970C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(176,112), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C10,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //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},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C14[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C14D1Ev();
extern void _ZN9S20970C14D0Ev();
extern void _ZN8S20970C92v8Ev();
extern void _ZN9S20970C143v16Ev();
extern void _ZN9S20970C143v17Ev();
extern void _ZN9S20970C143v18Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C14[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v18Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20970C14[];
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__9S20970C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C9__9S20970C14[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C9__9S20970C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C9__9S20970C14[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A1__9S20970C14[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A1__9S20970C14[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A1__9S20970C14[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
static  VTT_ENTRY vtt_S20970C14[] = {
  {&(_ZTV9S20970C14[5]),  5,52},
  {&(_tg__ZTV8S20970C9__9S20970C14[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C9__9S20970C14[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C14[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C14[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C9__9S20970C14[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C9__9S20970C14[3]),  3,4},
  {&(_tg__ZTV8S20970C6__A1__9S20970C14[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A1__9S20970C14[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A1__9S20970C14[3]),  3,4},
  {&(_ZTV9S20970C14[38]),  38,52},
  {&(_ZTV9S20970C14[45]),  45,52},
  {&(_ZTV9S20970C14[31]),  31,52},
  {&(_ZTV9S20970C14[50]),  50,52},
};
extern VTBL_ENTRY _ZTI9S20970C14[];
extern  VTBL_ENTRY _ZTV9S20970C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C14[];
Class_Descriptor cd_S20970C14 = {  "S20970C14", // class name
  bases_S20970C14, 12,
  &(vtc_S20970C14[0]), // expected_vtbl_contents
  &(vtt_S20970C14[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI9S20970C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20970C14),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C14),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C11  : S20970C12 , S20970C9 , virtual S20970C13 , virtual S20970C6 , virtual S20970C14 {
  int s20970c11f0;
  long double s20970c11f1;
  int s20970c11f2;
  virtual  ~S20970C11(); // _ZN9S20970C11D2Ev
  S20970C11(); // tgen
};
//SIG(-1 S20970C11) C1{ BC2{ VBC3{ BC4{ v1 Fp Fc[5] FL Fp[2]} v2 v3 v4 FC4 Fc[2] Fp} Fp[4] FC4 FC5{ VBC3 VBC4 BC6{ VBC3 VBC4 v5 Fi} v7 Fl Fp Fi[2]}} BC7{ BC6 BC3 BC4 vd v6} VBC5 VBC6 VBC8{ BC7 BC3 BC6 VBC9{ v8 v9 Fi Fc[7] Fp Fi Fs} v10 v11 v12 Fi} vd Fi FD Fi}


 S20970C11 ::~S20970C11(){ note_dtor("S20970C11", this);}
S20970C11 ::S20970C11(){ note_ctor("S20970C11", this);} // tgen

static void Test_S20970C11()
{
  extern Class_Descriptor cd_S20970C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,169)];
    init_test(&cd_S20970C11, buf);
    S20970C11 *dp, &lv = *(dp=new (buf) S20970C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,672), "sizeof(S20970C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C11)");
    /*is_ambiguous_... S20970C11::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C12*), ABISELECT(504,312), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C13*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C13*), ABISELECT(504,312), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*)(S20970C14*), ABISELECT(504,312), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C14*), ABISELECT(504,312), "S20970C11");
    check_base_class_offset(lv, (S20970C12*), 0, "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C13::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C13*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C13*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*)(S20970C14*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C14*), ABISELECT(616,384), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C9*), ABISELECT(288,180), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*), ABISELECT(304,188), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*), ABISELECT(304,188), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*), ABISELECT(416,260), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C9 */ AMB_check_base_class_offset(lv, (S20970C9*), ABISELECT(288,180), "S20970C11");
    check_base_class_offset(lv, (S20970C6*)(S20970C13*), ABISELECT(664,416), "S20970C11");
    check_base_class_offset(lv, (S20970C13*), ABISELECT(664,416), "S20970C11");
    /*is_ambiguous_... S20970C11::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*), ABISELECT(704,440), "S20970C11");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*)(S20970C14*), ABISELECT(720,448), "S20970C11");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*)(S20970C14*), ABISELECT(736,456), "S20970C11");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*)(S20970C14*), ABISELECT(736,456), "S20970C11");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*)(S20970C14*), ABISELECT(848,528), "S20970C11");
    check_base_class_offset(lv, (S20970C9*)(S20970C14*), ABISELECT(720,448), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C14*), ABISELECT(896,560), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C14*), ABISELECT(896,560), "S20970C11");
    /*is_ambiguous_... S20970C14::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C14*), ABISELECT(1008,632), "S20970C11");
    check_base_class_offset(lv, (S20970C10*)(S20970C14*), ABISELECT(1024,644), "S20970C11");
    check_base_class_offset(lv, (S20970C14*), ABISELECT(720,448), "S20970C11");
    check_field_offset(lv, s20970c11f0, ABISELECT(464,292), "S20970C11.s20970c11f0");
    check_field_offset(lv, s20970c11f1, ABISELECT(480,296), "S20970C11.s20970c11f1");
    check_field_offset(lv, s20970c11f2, ABISELECT(496,308), "S20970C11.s20970c11f2");
    test_class_info(&lv, &cd_S20970C11);
    dp->~S20970C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C11(Test_S20970C11, "S20970C11", ABISELECT(1072,672));

#else // __cplusplus

extern void _ZN9S20970C11C1Ev();
extern void _ZN9S20970C11D2Ev();
Name_Map name_map_S20970C11[] = {
  NSPAIR(_ZN9S20970C11C1Ev),
  NSPAIR(_ZN9S20970C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C12;
extern VTBL_ENTRY _ZTI9S20970C12[];
extern  VTBL_ENTRY _ZTV9S20970C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C12[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C13;
extern VTBL_ENTRY _ZTI9S20970C13[];
extern  VTBL_ENTRY _ZTV9S20970C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C13[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
extern Class_Descriptor cd_S20970C14;
extern VTBL_ENTRY _ZTI9S20970C14[];
extern  VTBL_ENTRY _ZTV9S20970C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C14[];
static Base_Class bases_S20970C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(504,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
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(504,312), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20970C12,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C5,    ABISELECT(616,384), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(288,180), //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
    18, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(304,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(304,188), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(416,260), //bcp->offset
    24, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(288,180), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20970C6,    ABISELECT(664,416), //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
    4, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C13,    ABISELECT(664,416), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(704,440), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20970C6,    ABISELECT(720,448), //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
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(736,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
    14, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(736,456), //bcp->offset
    77, //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(848,528), //bcp->offset
    83, //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
    11, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(720,448), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(896,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
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(896,560), //bcp->offset
    86, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20970C6,    ABISELECT(1008,632), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20970C10,    ABISELECT(1024,644), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20970C14,    ABISELECT(720,448), //bcp->offset
    55, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20970C11[];
extern void _ZN9S20970C11D1Ev();
extern void _ZN9S20970C11D0Ev();
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn288_N9S20970C11D1Ev,_ZThn180_N9S20970C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S20970C11D0Ev,_ZThn180_N9S20970C11D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C133v15Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTv0_n56_N9S20970C11D1Ev,_ZTv0_n28_N9S20970C11D1Ev)();
extern void ABISELECT(_ZThn720_N9S20970C11D1Ev,_ZThn448_N9S20970C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20970C11D0Ev,_ZTv0_n28_N9S20970C11D0Ev)();
extern void ABISELECT(_ZThn720_N9S20970C11D0Ev,_ZThn448_N9S20970C11D0Ev)() __attribute__((weak));
extern void _ZN8S20970C92v8Ev();
extern void _ZN9S20970C143v16Ev();
extern void _ZN9S20970C143v17Ev();
extern void _ZN9S20970C143v18Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C11[] = {
  ABISELECT(1024,644),
  ABISELECT(720,448),
  ABISELECT(704,440),
  ABISELECT(664,416),
  ABISELECT(616,384),
  ABISELECT(504,312),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN9S20970C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20970C11D0Ev,
  ABISELECT(328,204),
  ABISELECT(216,132),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20970C11D1Ev,_ZThn180_N9S20970C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N9S20970C11D0Ev,_ZThn180_N9S20970C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-304,-188),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-416,-260),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-616,-384),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-664,-416),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C133v15Ev,
  0,
  ABISELECT(-88,-56),
  ABISELECT(-200,-128),
  ABISELECT(-704,-440),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  0,
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  ABISELECT(16,8),
  0,
  ABISELECT(-720,-448),
  0,
  ABISELECT(304,196),
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  ABISELECT(-720,-448),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20970C11D1Ev,_ZTv0_n28_N9S20970C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20970C11D0Ev,_ZTv0_n28_N9S20970C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v18Ev,
  ABISELECT(-736,-456),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-848,-528),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  ABISELECT(-896,-560),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-392,-248),
  ABISELECT(-504,-320),
  ABISELECT(-1008,-632),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  0,
  0,
  ABISELECT(-1024,-644),
  (VTBL_ENTRY)&(_ZTI9S20970C11[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV9S20970C11[];
static  VTBL_ENTRY _tg__ZTV9S20970C12__9S20970C11[] = {
  ABISELECT(504,312),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__9S20970C12__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-504,-312),
  (VTBL_ENTRY)&(_ZTI9S20970C12[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__9S20970C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C9__9S20970C11[] = {
  ABISELECT(328,204),
  ABISELECT(216,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C9__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-216,-132),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C9__9S20970C11[] = {
  0,
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C133v15Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C13__9S20970C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C133v15Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C69S20970C13__A1__9S20970C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C69S20970C13__A1__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C69S20970C13__A1__9S20970C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__9S20970C13__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__9S20970C13__9S20970C11[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20970C13[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__9S20970C11[] = {
  ABISELECT(-88,-56),
  ABISELECT(-200,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__A2__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(200,128),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__A2__9S20970C11[] = {
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN9S20970C14D1Ev();
extern void _ZN9S20970C14D0Ev();
extern void _ZN8S20970C92v8Ev();
extern void _ZN9S20970C143v16Ev();
extern void _ZN9S20970C143v17Ev();
extern void _ZN9S20970C143v18Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C14__9S20970C11[] = {
  ABISELECT(304,196),
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20970C14D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v16Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v17Ev,
  (VTBL_ENTRY)&_ZN9S20970C143v18Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C99S20970C14__A1__9S20970C11[] = {
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C99S20970C14__A3__9S20970C11[] = {
  ABISELECT(-104,-64),
  ABISELECT(-216,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C99S20970C14__A3__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,136),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C99S20970C14__A3__9S20970C11[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C99S20970C14__A1__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,136),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C99S20970C14__A1__9S20970C11[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C69S20970C14__A4__9S20970C11[] = {
  ABISELECT(-392,-248),
  ABISELECT(-504,-320),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C69S20970C14__A4__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(504,320),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C69S20970C14__A4__9S20970C11[] = {
  0,
  ABISELECT(392,248),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__9S20970C14__9S20970C11[] = {
  0,
  0,
  0,
  0,
  ABISELECT(216,136),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__9S20970C14__9S20970C11[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A1__9S20970C14__9S20970C11[] = {
  ABISELECT(-392,-248),
  ABISELECT(-504,-320),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__9S20970C14__9S20970C11[] = {
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI9S20970C14[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
static  VTT_ENTRY vtt_S20970C11[] = {
  {&(_ZTV9S20970C11[8]),  8,103},
  {&(_tg__ZTV9S20970C12__9S20970C11[3]),  3,3},
  {&(_tg__ZTV8S20970C4__9S20970C12__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C9__9S20970C11[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C9__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C9__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C9__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C9__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C9__9S20970C11[3]),  3,4},
  {&(_ZTV9S20970C11[33]),  33,103},
  {&(_ZTV9S20970C11[14]),  14,103},
  {&(_ZTV9S20970C11[40]),  40,103},
  {&(_ZTV9S20970C11[47]),  47,103},
  {&(_ZTV9S20970C11[54]),  54,103},
  {&(_ZTV9S20970C11[70]),  70,103},
  {&(_ZTV9S20970C11[79]),  79,103},
  {&(_ZTV9S20970C11[85]),  85,103},
  {&(_ZTV9S20970C11[88]),  88,103},
  {&(_ZTV9S20970C11[96]),  96,103},
  {&(_ZTV9S20970C11[101]),  101,103},
  {&(_tg__ZTV9S20970C13__9S20970C11[4]),  4,6},
  {&(_tg__ZTV8S20970C69S20970C13__A1__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C69S20970C13__A1__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C69S20970C13__A1__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__9S20970C13__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__9S20970C13__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C6__A2__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__A2__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__A2__9S20970C11[3]),  3,4},
  {&(_tg__ZTV9S20970C14__9S20970C11[5]),  5,12},
  {&(_tg__ZTV8S20970C99S20970C14__A1__9S20970C11[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C99S20970C14__A3__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C99S20970C14__A3__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C99S20970C14__A3__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C99S20970C14__A1__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C99S20970C14__A1__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C69S20970C14__A4__9S20970C11[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C69S20970C14__A4__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C69S20970C14__A4__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C4__9S20970C14__9S20970C11[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__9S20970C14__9S20970C11[3]),  3,4},
  {&(_tg__ZTV8S20970C6__A1__9S20970C14__9S20970C11[4]),  4,5},
  {&(_tg__ZTV9S20970C10__9S20970C14__9S20970C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20970C11[];
extern  VTBL_ENTRY _ZTV9S20970C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20970C11[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20970C11D0Ev,_ZTv0_n28_N9S20970C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20970C11D0Ev,_ZThn448_N9S20970C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20970C11D1Ev,_ZTv0_n28_N9S20970C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N9S20970C11D1Ev,_ZThn448_N9S20970C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C11 = {  "S20970C11", // class name
  bases_S20970C11, 22,
  &(vtc_S20970C11[0]), // expected_vtbl_contents
  &(vtt_S20970C11[0]), // expected_vtt_contents
  ABISELECT(1072,672), // object size
  NSPAIRA(_ZTI9S20970C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20970C11),103, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20970C11),43, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20970C1  : virtual S20970C2 {
  ::S20970C11 s20970c1f0;
  void *s20970c1f1[2];
  virtual  ~S20970C1(); // _ZN8S20970C1D2Ev
  virtual void  v1(); // _ZN8S20970C12v1Ev
  virtual void  v2(); // _ZN8S20970C12v2Ev
  S20970C1(); // tgen
};
//SIG(1 S20970C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ v3 Fp Fc[5] FL Fp[2]} v4 v5 v6 FC5 Fc[2] Fp} VBC5 VBC6{ VBC4 VBC5 v7 Fi} vd FC4 FC7{} FD[5] Fp FC5 Fi} VBC8{ VBC4 BC6 BC9{ BC6 BC4 BC5 vd v8} VBC3 VBC10{ v9 v10 Fi Fc[7] Fp Fi Fs} v11 FC4 FC9[3]} vd v12 v13 v14 Fc[4]} vd v1 v2 FC11{ BC12{ VBC4 Fp[4] FC5 FC13{ VBC4 VBC5 BC6 v15 Fl Fp Fi[2]}} BC9 VBC13 VBC6 VBC14{ BC9 BC4 BC6 VBC10 v16 v17 v18 Fi} vd Fi FD Fi} Fp[2]}


 S20970C1 ::~S20970C1(){ note_dtor("S20970C1", this);}
void  S20970C1 ::v1(){vfunc_called(this, "_ZN8S20970C12v1Ev");}
void  S20970C1 ::v2(){vfunc_called(this, "_ZN8S20970C12v2Ev");}
S20970C1 ::S20970C1(){ note_ctor("S20970C1", this);} // tgen

static void Test_S20970C1()
{
  extern Class_Descriptor cd_S20970C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(184,464)];
    init_test(&cd_S20970C1, buf);
    S20970C1 *dp, &lv = *(dp=new (buf) S20970C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2928,1852), "sizeof(S20970C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20970C1)");
    /*is_ambiguous_... S20970C1::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*), ABISELECT(1392,872), "S20970C1");
    check_base_class_offset(lv, (S20970C4*)(S20970C3*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C1::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C8*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C8*), ABISELECT(1392,872), "S20970C1");
    check_base_class_offset(lv, (S20970C4*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(1392,872), "S20970C1");
    /*is_ambiguous_... S20970C3::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C3*), ABISELECT(1504,944), "S20970C1");
    /*is_ambiguous_... S20970C1::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*), ABISELECT(1504,944), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C8*), ABISELECT(1504,944), "S20970C1");
    /*is_ambiguous_... S20970C6::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(1504,944), "S20970C1");
    check_base_class_offset(lv, (S20970C6*)(S20970C3*), ABISELECT(1552,976), "S20970C1");
    check_base_class_offset(lv, (S20970C3*)(S20970C2*), ABISELECT(1120,692), "S20970C1");
    check_base_class_offset(lv, (S20970C3*)(S20970C8*), ABISELECT(1120,692), "S20970C1");
    /*is_ambiguous_... S20970C8::S20970C6 */ AMB_check_base_class_offset(lv, (S20970C6*)(S20970C8*), ABISELECT(1568,984), "S20970C1");
    check_base_class_offset(lv, (S20970C6*)(S20970C9*)(S20970C8*), ABISELECT(1584,992), "S20970C1");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(1600,1000), "S20970C1");
    /*is_ambiguous_... S20970C9::S20970C4 */ AMB_check_base_class_offset(lv, (S20970C4*)(S20970C9*)(S20970C8*), ABISELECT(1600,1000), "S20970C1");
    /*is_ambiguous_... S20970C9::S20970C5 */ AMB_check_base_class_offset(lv, (S20970C5*)(S20970C9*)(S20970C8*), ABISELECT(1712,1072), "S20970C1");
    check_base_class_offset(lv, (S20970C9*)(S20970C8*), ABISELECT(1584,992), "S20970C1");
    check_base_class_offset(lv, (S20970C10*)(S20970C8*), ABISELECT(2880,1824), "S20970C1");
    check_base_class_offset(lv, (S20970C8*)(S20970C2*), ABISELECT(1568,984), "S20970C1");
    check_base_class_offset(lv, (S20970C2*), ABISELECT(1104,684), "S20970C1");
    check_field_offset(lv, s20970c1f0, ABISELECT(16,4), "S20970C1.s20970c1f0");
    check_field_offset(lv, s20970c1f1, ABISELECT(1088,676), "S20970C1.s20970c1f1");
    test_class_info(&lv, &cd_S20970C1);
    dp->~S20970C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20970C1(Test_S20970C1, "S20970C1", ABISELECT(2928,1852));

#else // __cplusplus

extern void _ZN8S20970C1C1Ev();
extern void _ZN8S20970C1D2Ev();
Name_Map name_map_S20970C1[] = {
  NSPAIR(_ZN8S20970C1C1Ev),
  NSPAIR(_ZN8S20970C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C3;
extern VTBL_ENTRY _ZTI8S20970C3[];
extern  VTBL_ENTRY _ZTV8S20970C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C3[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C6;
extern VTBL_ENTRY _ZTI8S20970C6[];
extern  VTBL_ENTRY _ZTV8S20970C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C6[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C4;
extern VTBL_ENTRY _ZTI8S20970C4[];
extern  VTBL_ENTRY _ZTV8S20970C4[];
extern Class_Descriptor cd_S20970C5;
extern VTBL_ENTRY _ZTI8S20970C5[];
extern  VTBL_ENTRY _ZTV8S20970C5[];
extern Class_Descriptor cd_S20970C9;
extern VTBL_ENTRY _ZTI8S20970C9[];
extern  VTBL_ENTRY _ZTV8S20970C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C9[];
extern Class_Descriptor cd_S20970C10;
extern VTBL_ENTRY _ZTI9S20970C10[];
extern  VTBL_ENTRY _ZTV9S20970C10[];
extern Class_Descriptor cd_S20970C8;
extern VTBL_ENTRY _ZTI8S20970C8[];
extern  VTBL_ENTRY _ZTV8S20970C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C8[];
extern Class_Descriptor cd_S20970C2;
extern VTBL_ENTRY _ZTI8S20970C2[];
extern  VTBL_ENTRY _ZTV8S20970C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C2[];
static Base_Class bases_S20970C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20970C5,    ABISELECT(1392,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(1392,872), //bcp->offset
    38, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C5,    ABISELECT(1504,944), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(1552,976), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20970C3,    ABISELECT(1120,692), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20970C6,    ABISELECT(1568,984), //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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C6,    ABISELECT(1584,992), //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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(1600,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20970C4,    ABISELECT(1600,1000), //bcp->offset
    85, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C5,    ABISELECT(1712,1072), //bcp->offset
    91, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20970C9,    ABISELECT(1584,992), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20970C10,    ABISELECT(2880,1824), //bcp->offset
    94, //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
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20970C8,    ABISELECT(1568,984), //bcp->offset
    58, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20970C2,    ABISELECT(1104,684), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20970C1[];
extern void _ZN8S20970C1D1Ev();
extern void _ZN8S20970C1D0Ev();
extern void _ZN8S20970C12v1Ev();
extern void _ZN8S20970C12v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20970C1D1Ev,_ZTv0_n36_N8S20970C1D1Ev)();
extern void ABISELECT(_ZThn1104_N8S20970C1D1Ev,_ZThn684_N8S20970C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20970C1D0Ev,_ZTv0_n36_N8S20970C1D0Ev)();
extern void ABISELECT(_ZThn1104_N8S20970C1D0Ev,_ZThn684_N8S20970C1D0Ev)() __attribute__((weak));
extern void _ZN8S20970C23v12Ev();
extern void _ZN8S20970C23v13Ev();
extern void _ZN8S20970C23v14Ev();
extern void ABISELECT(_ZTv0_n48_N8S20970C1D1Ev,_ZTv0_n24_N8S20970C1D1Ev)();
extern void ABISELECT(_ZThn1120_N8S20970C1D1Ev,_ZThn692_N8S20970C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C1D0Ev,_ZTv0_n24_N8S20970C1D0Ev)();
extern void ABISELECT(_ZThn1120_N8S20970C1D0Ev,_ZThn692_N8S20970C1D0Ev)() __attribute__((weak));
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20970C1D1Ev,_ZTv0_n40_N8S20970C1D1Ev)();
extern void ABISELECT(_ZThn1568_N8S20970C1D1Ev,_ZThn984_N8S20970C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20970C1D0Ev,_ZTv0_n40_N8S20970C1D0Ev)();
extern void ABISELECT(_ZThn1568_N8S20970C1D0Ev,_ZThn984_N8S20970C1D0Ev)() __attribute__((weak));
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20970C1D1Ev,_ZTvn8_n40_N8S20970C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20970C1D0Ev,_ZTvn8_n40_N8S20970C1D0Ev)();
extern void _ZN8S20970C92v8Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
extern void _ZN8S20970C52v3Ev();
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY vtc_S20970C1[] = {
  ABISELECT(2880,1824),
  ABISELECT(1568,984),
  ABISELECT(1552,976),
  ABISELECT(1504,944),
  ABISELECT(1392,872),
  ABISELECT(1120,692),
  ABISELECT(1104,684),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20970C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-1104,-684),
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  ABISELECT(-1104,-684),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20970C1D1Ev,_ZTv0_n36_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20970C1D0Ev,_ZTv0_n36_N8S20970C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v14Ev,
  ABISELECT(-1120,-692),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-1120,-692),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C1D1Ev,_ZTv0_n24_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C1D0Ev,_ZTv0_n24_N8S20970C1D0Ev),
  0,
  0,
  0,
  0,
  ABISELECT(-1392,-872),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  0,
  ABISELECT(-1504,-944),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-1552,-976),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-1568,-984),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-1568,-984),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C1D1Ev,_ZTv0_n40_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C1D0Ev,_ZTv0_n40_N8S20970C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-1584,-992),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C1D1Ev,_ZTvn8_n40_N8S20970C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C1D0Ev,_ZTvn8_n40_N8S20970C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
  ABISELECT(-1600,-1000),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
  ABISELECT(-1712,-1072),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  0,
  0,
  ABISELECT(-2880,-1824),
  (VTBL_ENTRY)&(_ZTI8S20970C1[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern VTBL_ENTRY _ZTV8S20970C1[];
extern void _ZN8S20970C2D1Ev();
extern void _ZN8S20970C2D0Ev();
extern void _ZN8S20970C23v12Ev();
extern void _ZN8S20970C23v13Ev();
extern void _ZN8S20970C23v14Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C2__8S20970C1[] = {
  ABISELECT(1776,1140),
  ABISELECT(464,300),
  ABISELECT(448,292),
  ABISELECT(400,260),
  ABISELECT(288,188),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20970C23v14Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C2__8S20970C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev),
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C2__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C2__8S20970C1[] = {
  0,
  ABISELECT(-400,-260),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C2__8S20970C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-448,-292),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev)();
extern void ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20970C8__8S20970C2__8S20970C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-464,-300),
  0,
  0,
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev),
};
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev)();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C98S20970C8__8S20970C2__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-480,-308),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D1Ev,_ZTvn8_n40_N8S20970C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S20970C2D0Ev,_ZTvn8_n40_N8S20970C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C48S20970C98S20970C8__A1__8S20970C2__8S20970C1[] = {
  ABISELECT(-496,-316),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C58S20970C98S20970C8__A3__8S20970C2__8S20970C1[] = {
  ABISELECT(-608,-388),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__8S20970C2__8S20970C1[] = {
  0,
  0,
  ABISELECT(-1776,-1140),
  (VTBL_ENTRY)&(_ZTI8S20970C2[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
extern void _ZN8S20970C3D1Ev();
extern void _ZN8S20970C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C1[] = {
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C3D0Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C3__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C3__8S20970C1[] = {
  0,
  ABISELECT(-384,-252),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C3__8S20970C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(-432,-284),
  (VTBL_ENTRY)&(_ZTI8S20970C3[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__8S20970C1[] = {
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C6__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C6__8S20970C1[] = {
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C83v11Ev();
extern void _ZN8S20970C8D1Ev();
extern void _ZN8S20970C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C8__8S20970C1[] = {
  ABISELECT(1312,840),
  ABISELECT(-16,-8),
  ABISELECT(-448,-292),
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C8D0Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C8__A1__8S20970C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void _ZN8S20970C9D1Ev();
extern void _ZN8S20970C9D0Ev();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C98S20970C8__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20970C9D0Ev,
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C6[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(192,120),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C1[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI8S20970C9[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C52v3Ev();
extern void _ZN8S20970C42v4Ev();
extern void _ZN8S20970C42v5Ev();
extern void _ZN8S20970C42v6Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C4__8S20970C8__8S20970C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v4Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v5Ev,
  (VTBL_ENTRY)&_ZN8S20970C42v6Ev,
};
extern void _ZN8S20970C52v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C5__A1__8S20970C8__8S20970C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C52v3Ev,
};
extern void _ZN8S20970C62v7Ev();
extern void ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev)();
extern void _ZN8S20970C92v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C9__8S20970C8__8S20970C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-192,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D1Ev,_ZThn8_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20970C8D0Ev,_ZThn8_N8S20970C8D0Ev),
  (VTBL_ENTRY)&_ZN8S20970C92v8Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20970C3__8S20970C8__8S20970C1[] = {
  ABISELECT(448,292),
  ABISELECT(432,284),
  ABISELECT(384,252),
  ABISELECT(272,180),
  ABISELECT(448,292),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D1Ev,_ZTv0_n24_N8S20970C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20970C8D0Ev,_ZTv0_n24_N8S20970C8D0Ev),
};
extern void _ZN8S20970C62v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20970C6__A2__8S20970C8__8S20970C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-160,-104),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN8S20970C62v7Ev,
};
extern void _ZN9S20970C102v9Ev();
extern void _ZN9S20970C103v10Ev();
static  VTBL_ENTRY _tg__ZTV9S20970C10__8S20970C8__8S20970C1[] = {
  0,
  0,
  ABISELECT(-1312,-840),
  (VTBL_ENTRY)&(_ZTI8S20970C8[0]),
  (VTBL_ENTRY)&_ZN9S20970C102v9Ev,
  (VTBL_ENTRY)&_ZN9S20970C103v10Ev,
};
static  VTT_ENTRY vtt_S20970C1[] = {
  {&(_ZTV8S20970C1[9]),  9,100},
  {&(_ZTV8S20970C1[25]),  25,100},
  {&(_ZTV8S20970C1[36]),  36,100},
  {&(_ZTV8S20970C1[44]),  44,100},
  {&(_ZTV8S20970C1[51]),  51,100},
  {&(_ZTV8S20970C1[57]),  57,100},
  {&(_ZTV8S20970C1[73]),  73,100},
  {&(_ZTV8S20970C1[81]),  81,100},
  {&(_ZTV8S20970C1[87]),  87,100},
  {&(_ZTV8S20970C1[93]),  93,100},
  {&(_ZTV8S20970C1[98]),  98,100},
  {&(_tg__ZTV8S20970C2__8S20970C1[8]),  8,13},
  {&(_tg__ZTV8S20970C3__8S20970C2__8S20970C1[6]),  6,8},
  {&(_tg__ZTV8S20970C4__8S20970C2__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C2__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C2__8S20970C1[5]),  5,6},
  {&(_tg__ZTV8S20970C8__8S20970C2__8S20970C1[15]),  15,19},
  {&(_tg__ZTV8S20970C98S20970C8__8S20970C2__8S20970C1[4]),  4,8},
  {&(_tg__ZTV8S20970C48S20970C98S20970C8__A1__8S20970C2__8S20970C1[2]),  2,6},
  {&(_tg__ZTV8S20970C58S20970C98S20970C8__A3__8S20970C2__8S20970C1[2]),  2,3},
  {&(_tg__ZTV9S20970C10__8S20970C2__8S20970C1[4]),  4,6},
  {&(_tg__ZTV8S20970C3__8S20970C1[5]),  5,7},
  {&(_tg__ZTV8S20970C4__8S20970C3__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C3__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C6__8S20970C3__8S20970C1[5]),  5,6},
  {&(_tg__ZTV8S20970C6__8S20970C1[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C6__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C6__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C8__8S20970C1[7]),  7,11},
  {&(_tg__ZTV8S20970C68S20970C8__A1__8S20970C1[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C8__A1__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C8__A1__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C98S20970C8__8S20970C1[4]),  4,8},
  {&(_tg__ZTV8S20970C68S20970C98S20970C8__A2__8S20970C1[4]),  4,5},
  {&(_tg__ZTV8S20970C4__8S20970C68S20970C98S20970C8__A2__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C68S20970C98S20970C8__A2__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C98S20970C8__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C98S20970C8__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C4__8S20970C8__8S20970C1[6]),  6,10},
  {&(_tg__ZTV8S20970C5__A1__8S20970C8__8S20970C1[3]),  3,4},
  {&(_tg__ZTV8S20970C9__8S20970C8__8S20970C1[4]),  4,8},
  {&(_tg__ZTV8S20970C3__8S20970C8__8S20970C1[6]),  6,8},
  {&(_tg__ZTV8S20970C6__A2__8S20970C8__8S20970C1[5]),  5,6},
  {&(_tg__ZTV9S20970C10__8S20970C8__8S20970C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20970C1[];
extern  VTBL_ENTRY _ZTV8S20970C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20970C1[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D0Ev,_ZTv0_n40_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D0Ev,_ZThn300_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C2D1Ev,_ZTv0_n40_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S20970C2D1Ev,_ZThn300_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D0Ev,_ZTv0_n24_N8S20970C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D0Ev,_ZThn8_N8S20970C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C2D1Ev,_ZTv0_n24_N8S20970C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20970C2D1Ev,_ZThn8_N8S20970C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C1D0Ev,_ZTv0_n40_N8S20970C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20970C1D0Ev,_ZThn984_N8S20970C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20970C1D1Ev,_ZTv0_n40_N8S20970C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N8S20970C1D1Ev,_ZThn984_N8S20970C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C1D0Ev,_ZTv0_n24_N8S20970C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20970C1D0Ev,_ZThn692_N8S20970C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20970C1D1Ev,_ZTv0_n24_N8S20970C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1120_N8S20970C1D1Ev,_ZThn692_N8S20970C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20970C1D0Ev,_ZTv0_n36_N8S20970C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20970C1D0Ev,_ZThn684_N8S20970C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20970C1D1Ev,_ZTv0_n36_N8S20970C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N8S20970C1D1Ev,_ZThn684_N8S20970C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20970C1 = {  "S20970C1", // class name
  bases_S20970C1, 14,
  &(vtc_S20970C1[0]), // expected_vtbl_contents
  &(vtt_S20970C1[0]), // expected_vtt_contents
  ABISELECT(2928,1852), // object size
  NSPAIRA(_ZTI8S20970C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20970C1),100, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20970C1),44, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C2_nt  : virtual S4228C37 {
  ~S20760C2_nt(); // tgen
  S20760C2_nt(); // tgen
};
//SIG(-1 S20760C2_nt) C1{ VBC2{ m}}


S20760C2_nt ::~S20760C2_nt(){ note_dtor("S20760C2_nt", this);} // tgen
S20760C2_nt ::S20760C2_nt(){ note_ctor("S20760C2_nt", this);} // tgen

//skip512 S20760C2_nt

#else // __cplusplus

extern void _ZN11S20760C2_ntC1Ev();
extern void _ZN11S20760C2_ntD1Ev();
Name_Map name_map_S20760C2_nt[] = {
  NSPAIR(_ZN11S20760C2_ntC1Ev),
  NSPAIR(_ZN11S20760C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S20760C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S20760C2_nt[];
static  VTBL_ENTRY vtc_S20760C2_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20760C2_nt[0]),
};
extern VTBL_ENTRY _ZTV11S20760C2_nt[];
static  VTT_ENTRY vtt_S20760C2_nt[] = {
  {&(_ZTV11S20760C2_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S20760C2_nt[];
VTBL_ENTRY *P__ZTI11S20760C2_nt = _ZTI11S20760C2_nt; 
extern  VTBL_ENTRY _ZTV11S20760C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20760C2_nt[];
Class_Descriptor cd_S20760C2_nt = {  "S20760C2_nt", // class name
  bases_S20760C2_nt, 1,
  &(vtc_S20760C2_nt[0]), // expected_vtbl_contents
  &(vtt_S20760C2_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20760C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20760C2_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20760C2_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  S20760C5_nt  {
  __tsi64 s20760c5f0;
  void  mf20760c5(); // _ZN11S20760C5_nt9mf20760c5Ev
  virtual  ~S20760C5_nt(); // _ZN11S20760C5_ntD1Ev
  S20760C5_nt(); // tgen
};
//SIG(-1 S20760C5_nt) C1{ vd m FL}


void  S20760C5_nt ::mf20760c5(){}
 S20760C5_nt ::~S20760C5_nt(){ note_dtor("S20760C5_nt", this);}
S20760C5_nt ::S20760C5_nt(){ note_ctor("S20760C5_nt", this);} // tgen

//skip512 S20760C5_nt

#else // __cplusplus

extern void _ZN11S20760C5_ntC1Ev();
extern void _ZN11S20760C5_ntD1Ev();
Name_Map name_map_S20760C5_nt[] = {
  NSPAIR(_ZN11S20760C5_ntC1Ev),
  NSPAIR(_ZN11S20760C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern void _ZN11S20760C5_ntD1Ev();
extern void _ZN11S20760C5_ntD0Ev();
static  VTBL_ENTRY vtc_S20760C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20760C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20760C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20760C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
VTBL_ENTRY *P__ZTI11S20760C5_nt = _ZTI11S20760C5_nt; 
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
Class_Descriptor cd_S20760C5_nt = {  "S20760C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20760C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI11S20760C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20760C5_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  S20760C4  : virtual S20760C5_nt {
  char s20760c4f0[2];
  virtual  ~S20760C4(); // _ZN8S20760C4D2Ev
  S20760C4(); // tgen
};
//SIG(-1 S20760C4) C1{ VBC2{ vd m FL} vd Fc[2]}


 S20760C4 ::~S20760C4(){ note_dtor("S20760C4", this);}
S20760C4 ::S20760C4(){ note_ctor("S20760C4", this);} // tgen

static void Test_S20760C4()
{
  extern Class_Descriptor cd_S20760C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20760C4, buf);
    S20760C4 *dp, &lv = *(dp=new (buf) S20760C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20760C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C4)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(16,8), "S20760C4");
    check_field_offset(lv, s20760c4f0, ABISELECT(8,4), "S20760C4.s20760c4f0");
    test_class_info(&lv, &cd_S20760C4);
    dp->~S20760C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C4(Test_S20760C4, "S20760C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20760C4C1Ev();
extern void _ZN8S20760C4D2Ev();
Name_Map name_map_S20760C4[] = {
  NSPAIR(_ZN8S20760C4C1Ev),
  NSPAIR(_ZN8S20760C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S20760C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(16,8), //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 _ZTI8S20760C4[];
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C4[];
static  VTT_ENTRY vtt_S20760C4[] = {
  {&(_ZTV8S20760C4[3]),  3,10},
  {&(_ZTV8S20760C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C4 = {  "S20760C4", // class name
  bases_S20760C4, 1,
  &(vtc_S20760C4[0]), // expected_vtbl_contents
  &(vtt_S20760C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20760C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20760C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C9  {
  __tsi64 s20760c9f0;
  void  mf20760c9(); // _ZN8S20760C99mf20760c9Ev
  virtual  ~S20760C9(); // _ZN8S20760C9D1Ev
  S20760C9(); // tgen
};
//SIG(-1 S20760C9) C1{ vd m FL}


void  S20760C9 ::mf20760c9(){}
 S20760C9 ::~S20760C9(){ note_dtor("S20760C9", this);}
S20760C9 ::S20760C9(){ note_ctor("S20760C9", this);} // tgen

static void Test_S20760C9()
{
  extern Class_Descriptor cd_S20760C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20760C9, buf);
    S20760C9 *dp, &lv = *(dp=new (buf) S20760C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20760C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C9)");
    check_field_offset(lv, s20760c9f0, ABISELECT(8,4), "S20760C9.s20760c9f0");
    test_class_info(&lv, &cd_S20760C9);
    dp->~S20760C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C9(Test_S20760C9, "S20760C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20760C9C1Ev();
extern void _ZN8S20760C9D1Ev();
Name_Map name_map_S20760C9[] = {
  NSPAIR(_ZN8S20760C9C1Ev),
  NSPAIR(_ZN8S20760C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20760C9[];
extern void _ZN8S20760C9D1Ev();
extern void _ZN8S20760C9D0Ev();
static  VTBL_ENTRY vtc_S20760C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C9[0]),
  (VTBL_ENTRY)&_ZN8S20760C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C9D0Ev,
};
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
Class_Descriptor cd_S20760C9 = {  "S20760C9", // class name
  0,0,//no base classes
  &(vtc_S20760C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20760C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20760C9),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  S20760C8  : virtual S20760C9 {
  ::S4228C27 s20760c8f0;
  virtual  ~S20760C8(); // _ZN8S20760C8D2Ev
  S20760C8(); // tgen
};
//SIG(-1 S20760C8) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S20760C8 ::~S20760C8(){ note_dtor("S20760C8", this);}
S20760C8 ::S20760C8(){ note_ctor("S20760C8", this);} // tgen

static void Test_S20760C8()
{
  extern Class_Descriptor cd_S20760C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20760C8, buf);
    S20760C8 *dp, &lv = *(dp=new (buf) S20760C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20760C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S20760C8");
    check_field_offset(lv, s20760c8f0, ABISELECT(8,4), "S20760C8.s20760c8f0");
    test_class_info(&lv, &cd_S20760C8);
    dp->~S20760C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C8(Test_S20760C8, "S20760C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20760C8C1Ev();
extern void _ZN8S20760C8D2Ev();
Name_Map name_map_S20760C8[] = {
  NSPAIR(_ZN8S20760C8C1Ev),
  NSPAIR(_ZN8S20760C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20760C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI8S20760C8[];
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C8[];
static  VTT_ENTRY vtt_S20760C8[] = {
  {&(_ZTV8S20760C8[3]),  3,10},
  {&(_ZTV8S20760C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C8 = {  "S20760C8", // class name
  bases_S20760C8, 1,
  &(vtc_S20760C8[0]), // expected_vtbl_contents
  &(vtt_S20760C8[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20760C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20760C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C13  {
  int s20760c13f0[6];
  void  mf20760c13(); // _ZN9S20760C1310mf20760c13Ev
  virtual  ~S20760C13(); // _ZN9S20760C13D1Ev
  S20760C13(); // tgen
};
//SIG(-1 S20760C13) C1{ vd m Fi[6]}


void  S20760C13 ::mf20760c13(){}
 S20760C13 ::~S20760C13(){ note_dtor("S20760C13", this);}
S20760C13 ::S20760C13(){ note_ctor("S20760C13", this);} // tgen

static void Test_S20760C13()
{
  extern Class_Descriptor cd_S20760C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,8)];
    init_test(&cd_S20760C13, buf);
    S20760C13 *dp, &lv = *(dp=new (buf) S20760C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S20760C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C13)");
    check_field_offset(lv, s20760c13f0, ABISELECT(8,4), "S20760C13.s20760c13f0");
    test_class_info(&lv, &cd_S20760C13);
    dp->~S20760C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C13(Test_S20760C13, "S20760C13", ABISELECT(32,28));

#else // __cplusplus

extern void _ZN9S20760C13C1Ev();
extern void _ZN9S20760C13D1Ev();
Name_Map name_map_S20760C13[] = {
  NSPAIR(_ZN9S20760C13C1Ev),
  NSPAIR(_ZN9S20760C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S20760C13[];
extern void _ZN9S20760C13D1Ev();
extern void _ZN9S20760C13D0Ev();
static  VTBL_ENTRY vtc_S20760C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C13[0]),
  (VTBL_ENTRY)&_ZN9S20760C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C13D0Ev,
};
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
Class_Descriptor cd_S20760C13 = {  "S20760C13", // class name
  0,0,//no base classes
  &(vtc_S20760C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,28), // object size
  NSPAIRA(_ZTI9S20760C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S20760C13),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  S20760C12  : S20760C13 , virtual S4228C20 , virtual S4228C27 {
  short s20760c12f0;
  ~S20760C12(); // tgen
  S20760C12(); // tgen
};
//SIG(-1 S20760C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S20760C12 ::~S20760C12(){ note_dtor("S20760C12", this);} // tgen
S20760C12 ::S20760C12(){ note_ctor("S20760C12", this);} // tgen

static void Test_S20760C12()
{
  extern Class_Descriptor cd_S20760C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20760C12, buf);
    S20760C12 *dp, &lv = *(dp=new (buf) S20760C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S20760C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S20760C12");
    check_base_class_offset(lv, (S4228C20*), 0, "S20760C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S20760C12");
    check_field_offset(lv, s20760c12f0, ABISELECT(32,28), "S20760C12.s20760c12f0");
    test_class_info(&lv, &cd_S20760C12);
    dp->~S20760C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C12(Test_S20760C12, "S20760C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S20760C12C1Ev();
extern void _ZN9S20760C12D1Ev();
Name_Map name_map_S20760C12[] = {
  NSPAIR(_ZN9S20760C12C1Ev),
  NSPAIR(_ZN9S20760C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20760C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20760C12[];
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY vtc_S20760C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S20760C12[];
static  VTT_ENTRY vtt_S20760C12[] = {
  {&(_ZTV9S20760C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
Class_Descriptor cd_S20760C12 = {  "S20760C12", // class name
  bases_S20760C12, 3,
  &(vtc_S20760C12[0]), // expected_vtbl_contents
  &(vtt_S20760C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S20760C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20760C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C12),1, //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  S20760C7  : virtual S20760C8 , virtual S4228C23 , S20760C12 {
  int s20760c7f0;
  virtual  ~S20760C7(); // _ZN8S20760C7D2Ev
  S20760C7(); // tgen
};
//SIG(-1 S20760C7) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S20760C7 ::~S20760C7(){ note_dtor("S20760C7", this);}
S20760C7 ::S20760C7(){ note_ctor("S20760C7", this);} // tgen

static void Test_S20760C7()
{
  extern Class_Descriptor cd_S20760C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S20760C7, buf);
    S20760C7 *dp, &lv = *(dp=new (buf) S20760C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S20760C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C7)");
    check_base_class_offset(lv, (S20760C9*)(S20760C8*), ABISELECT(56,44), "S20760C7");
    check_base_class_offset(lv, (S20760C8*), ABISELECT(40,36), "S20760C7");
    check_base_class_offset(lv, (S4228C23*), 0, "S20760C7");
    check_base_class_offset(lv, (S20760C13*)(S20760C12*), 0, "S20760C7");
    check_base_class_offset(lv, (S4228C20*)(S20760C12*), 0, "S20760C7");
    check_base_class_offset(lv, (S4228C27*)(S20760C12*), 0, "S20760C7");
    check_base_class_offset(lv, (S20760C12*), 0, "S20760C7");
    check_field_offset(lv, s20760c7f0, ABISELECT(36,32), "S20760C7.s20760c7f0");
    test_class_info(&lv, &cd_S20760C7);
    dp->~S20760C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C7(Test_S20760C7, "S20760C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S20760C7C1Ev();
extern void _ZN8S20760C7D2Ev();
Name_Map name_map_S20760C7[] = {
  NSPAIR(_ZN8S20760C7C1Ev),
  NSPAIR(_ZN8S20760C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C8;
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C12;
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
static Base_Class bases_S20760C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //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_S20760C8,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C12,    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 _ZTI8S20760C7[];
extern void _ZN8S20760C7D1Ev();
extern void _ZN8S20760C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S20760C7D1Ev,_ZThn36_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn40_N8S20760C7D0Ev,_ZThn36_N8S20760C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20760C7D1Ev,_ZThn44_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S20760C7D0Ev,_ZThn44_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C7[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&_ZN8S20760C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C7D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C7[];
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C12__8S20760C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C8__8S20760C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
static  VTT_ENTRY vtt_S20760C7[] = {
  {&(_ZTV8S20760C7[7]),  7,20},
  {&(_tg__ZTV9S20760C12__8S20760C7[4]),  4,6},
  {&(_ZTV8S20760C7[13]),  13,20},
  {&(_ZTV8S20760C7[18]),  18,20},
  {&(_tg__ZTV8S20760C8__8S20760C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20760C8__8S20760C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20760C7[];
extern  VTBL_ENTRY _ZTV8S20760C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C7[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C7D0Ev,_ZThn44_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C7D1Ev,_ZThn44_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C7D0Ev,_ZThn36_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C7D1Ev,_ZThn36_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C7 = {  "S20760C7", // class name
  bases_S20760C7, 7,
  &(vtc_S20760C7[0]), // expected_vtbl_contents
  &(vtt_S20760C7[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S20760C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20760C7),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C18  : virtual S20760C9 {
  virtual  ~S20760C18(); // _ZN9S20760C18D2Ev
  S20760C18(); // tgen
};
//SIG(-1 S20760C18) C1{ VBC2{ vd m FL} vd}


 S20760C18 ::~S20760C18(){ note_dtor("S20760C18", this);}
S20760C18 ::S20760C18(){ note_ctor("S20760C18", this);} // tgen

static void Test_S20760C18()
{
  extern Class_Descriptor cd_S20760C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20760C18, buf);
    S20760C18 *dp, &lv = *(dp=new (buf) S20760C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20760C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C18)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S20760C18");
    test_class_info(&lv, &cd_S20760C18);
    dp->~S20760C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C18(Test_S20760C18, "S20760C18", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20760C18C1Ev();
extern void _ZN9S20760C18D2Ev();
Name_Map name_map_S20760C18[] = {
  NSPAIR(_ZN9S20760C18C1Ev),
  NSPAIR(_ZN9S20760C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20760C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C18[];
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn8_N9S20760C18D1Ev,_ZThn4_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn8_N9S20760C18D0Ev,_ZThn4_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C18[];
static  VTT_ENTRY vtt_S20760C18[] = {
  {&(_ZTV9S20760C18[3]),  3,10},
  {&(_ZTV9S20760C18[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20760C18D0Ev,_ZThn4_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20760C18D1Ev,_ZThn4_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C18 = {  "S20760C18", // class name
  bases_S20760C18, 1,
  &(vtc_S20760C18[0]), // expected_vtbl_contents
  &(vtt_S20760C18[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20760C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20760C18),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C18),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C17  : S20760C9 , virtual S20760C13 , S20760C18 {
  ::S20760C13 s20760c17f0;
  ~S20760C17(); // tgen
  S20760C17(); // tgen
};
//SIG(-1 S20760C17) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S20760C17 ::~S20760C17(){ note_dtor("S20760C17", this);} // tgen
S20760C17 ::S20760C17(){ note_ctor("S20760C17", this);} // tgen

static void Test_S20760C17()
{
  extern Class_Descriptor cd_S20760C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S20760C17, buf);
    S20760C17 *dp, &lv = *(dp=new (buf) S20760C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S20760C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20760C17)");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20760C17");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S20760C17");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(88,72), "S20760C17");
    check_base_class_offset(lv, (S20760C18*), ABISELECT(16,12), "S20760C17");
    check_field_offset(lv, s20760c17f0, ABISELECT(24,16), "S20760C17.s20760c17f0");
    test_class_info(&lv, &cd_S20760C17);
    dp->~S20760C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C17(Test_S20760C17, "S20760C17", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S20760C17C1Ev();
extern void _ZN9S20760C17D1Ev();
Name_Map name_map_S20760C17[] = {
  NSPAIR(_ZN9S20760C17C1Ev),
  NSPAIR(_ZN9S20760C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
static Base_Class bases_S20760C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C17[];
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20760C17D1Ev,_ZThn72_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20760C17D0Ev,_ZThn72_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C17[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C17[];
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn60_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn60_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__9S20760C17[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C17[] = {
  {&(_ZTV9S20760C17[4]),  4,21},
  {&(_tg__ZTV9S20760C18__9S20760C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__9S20760C17[3]),  3,5},
  {&(_ZTV9S20760C17[14]),  14,21},
  {&(_ZTV9S20760C17[9]),  9,21},
  {&(_ZTV9S20760C17[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn60_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn60_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C17D0Ev,_ZThn72_N9S20760C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C17D1Ev,_ZThn72_N9S20760C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C17 = {  "S20760C17", // class name
  bases_S20760C17, 4,
  &(vtc_S20760C17[0]), // expected_vtbl_contents
  &(vtt_S20760C17[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S20760C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20760C17),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C17),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C16  : virtual S20760C13 , virtual S20760C17 {
  long double s20760c16f0;
  ~S20760C16(); // tgen
  S20760C16(); // tgen
};
//SIG(-1 S20760C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S20760C16 ::~S20760C16(){ note_dtor("S20760C16", this);} // tgen
S20760C16 ::S20760C16(){ note_ctor("S20760C16", this);} // tgen

static void Test_S20760C16()
{
  extern Class_Descriptor cd_S20760C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S20760C16, buf);
    S20760C16 *dp, &lv = *(dp=new (buf) S20760C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S20760C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S20760C16");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(32,16), "S20760C16");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(64,44), "S20760C16");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(120,88), "S20760C16");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(80,56), "S20760C16");
    check_base_class_offset(lv, (S20760C17*), ABISELECT(64,44), "S20760C16");
    check_field_offset(lv, s20760c16f0, ABISELECT(16,4), "S20760C16.s20760c16f0");
    test_class_info(&lv, &cd_S20760C16);
    dp->~S20760C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C16(Test_S20760C16, "S20760C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S20760C16C1Ev();
extern void _ZN9S20760C16D1Ev();
Name_Map name_map_S20760C16[] = {
  NSPAIR(_ZN9S20760C16C1Ev),
  NSPAIR(_ZN9S20760C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
static Base_Class bases_S20760C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C16[];
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C16[];
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
static  VTT_ENTRY vtt_S20760C16[] = {
  {&(_ZTV9S20760C16[5]),  5,29},
  {&(_ZTV9S20760C16[10]),  10,29},
  {&(_ZTV9S20760C16[17]),  17,29},
  {&(_ZTV9S20760C16[22]),  22,29},
  {&(_ZTV9S20760C16[27]),  27,29},
  {&(_tg__ZTV9S20760C17__9S20760C16[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C16 = {  "S20760C16", // class name
  bases_S20760C16, 5,
  &(vtc_S20760C16[0]), // expected_vtbl_contents
  &(vtt_S20760C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S20760C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20760C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C22_nt  {
  void  mf20760c22(); // _ZN12S20760C22_nt10mf20760c22Ev
  virtual  ~S20760C22_nt(); // _ZN12S20760C22_ntD1Ev
  S20760C22_nt(); // tgen
};
//SIG(-1 S20760C22_nt) C1{ vd m}


void  S20760C22_nt ::mf20760c22(){}
 S20760C22_nt ::~S20760C22_nt(){ note_dtor("S20760C22_nt", this);}
S20760C22_nt ::S20760C22_nt(){ note_ctor("S20760C22_nt", this);} // tgen

//skip512 S20760C22_nt

#else // __cplusplus

extern void _ZN12S20760C22_ntC1Ev();
extern void _ZN12S20760C22_ntD1Ev();
Name_Map name_map_S20760C22_nt[] = {
  NSPAIR(_ZN12S20760C22_ntC1Ev),
  NSPAIR(_ZN12S20760C22_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern void _ZN12S20760C22_ntD1Ev();
extern void _ZN12S20760C22_ntD0Ev();
static  VTBL_ENTRY vtc_S20760C22_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20760C22_nt[0]),
  (VTBL_ENTRY)&_ZN12S20760C22_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S20760C22_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
VTBL_ENTRY *P__ZTI12S20760C22_nt = _ZTI12S20760C22_nt; 
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
Class_Descriptor cd_S20760C22_nt = {  "S20760C22_nt", // class name
  0,0,//no base classes
  &(vtc_S20760C22_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20760C22_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S20760C22_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  S20760C20  : S4161C4_nt , S20760C16 , S20760C22_nt , virtual S20760C18 {
  virtual  ~S20760C20(); // _ZN9S20760C20D2Ev
  S20760C20(); // tgen
};
//SIG(-1 S20760C20) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S20760C20 ::~S20760C20(){ note_dtor("S20760C20", this);}
S20760C20 ::S20760C20(){ note_ctor("S20760C20", this);} // tgen

static void Test_S20760C20()
{
  extern Class_Descriptor cd_S20760C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S20760C20, buf);
    S20760C20 *dp, &lv = *(dp=new (buf) S20760C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S20760C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C20)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S20760C20");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(48,24), "S20760C20");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(48,24), "S20760C20");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(80,52), "S20760C20");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(136,96), "S20760C20");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(136,96), "S20760C20");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(96,64), "S20760C20");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(80,52), "S20760C20");
    check_base_class_offset(lv, (S20760C16*), 0, "S20760C20");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S20760C20");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*), ABISELECT(152,108), "S20760C20");
    test_class_info(&lv, &cd_S20760C20);
    dp->~S20760C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C20(Test_S20760C20, "S20760C20", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S20760C20C1Ev();
extern void _ZN9S20760C20D2Ev();
Name_Map name_map_S20760C20[] = {
  NSPAIR(_ZN9S20760C20C1Ev),
  NSPAIR(_ZN9S20760C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
static Base_Class bases_S20760C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C16,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C18,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C20[];
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
extern void ABISELECT(_ZThn40_N9S20760C20D1Ev,_ZThn20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C20D0Ev,_ZThn20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C20[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C20D1Ev,_ZThn20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C20D0Ev,_ZThn20_N9S20760C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C20[];
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C20[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__9S20760C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__9S20760C20[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C20[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__9S20760C20[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C20[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C20[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C20[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C20[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C20[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C20[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C20[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C20[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C20[] = {
  {&(_ZTV9S20760C20[6]),  6,40},
  {&(_tg__ZTV9S20760C16__9S20760C20[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__9S20760C20[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__9S20760C20[3]),  3,5},
  {&(_ZTV9S20760C20[15]),  15,40},
  {&(_ZTV9S20760C20[22]),  22,40},
  {&(_ZTV9S20760C20[27]),  27,40},
  {&(_ZTV9S20760C20[32]),  32,40},
  {&(_ZTV9S20760C20[38]),  38,40},
  {&(_tg__ZTV9S20760C17__9S20760C20[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C20[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C20 = {  "S20760C20", // class name
  bases_S20760C20, 9,
  &(vtc_S20760C20[0]), // expected_vtbl_contents
  &(vtt_S20760C20[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S20760C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20760C20),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C20),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C19  : S20760C9 , S20760C20 {
  virtual  ~S20760C19(); // _ZN9S20760C19D2Ev
  S20760C19(); // tgen
};
//SIG(-1 S20760C19) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S20760C19 ::~S20760C19(){ note_dtor("S20760C19", this);}
S20760C19 ::S20760C19(){ note_ctor("S20760C19", this);} // tgen

static void Test_S20760C19()
{
  extern Class_Descriptor cd_S20760C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S20760C19, buf);
    S20760C19 *dp, &lv = *(dp=new (buf) S20760C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S20760C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C19)");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20760C19");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*), ABISELECT(48,28), "S20760C19");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*), ABISELECT(64,36), "S20760C19");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(64,36), "S20760C19");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(96,64), "S20760C19");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(152,108), "S20760C19");
    /*is_ambiguous_... S20760C19::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(152,108), "S20760C19");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(112,76), "S20760C19");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*), ABISELECT(96,64), "S20760C19");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*), ABISELECT(16,12), "S20760C19");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*), ABISELECT(56,32), "S20760C19");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*), ABISELECT(168,120), "S20760C19");
    check_base_class_offset(lv, (S20760C20*), ABISELECT(16,12), "S20760C19");
    test_class_info(&lv, &cd_S20760C19);
    dp->~S20760C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C19(Test_S20760C19, "S20760C19", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S20760C19C1Ev();
extern void _ZN9S20760C19D2Ev();
Name_Map name_map_S20760C19[] = {
  NSPAIR(_ZN9S20760C19C1Ev),
  NSPAIR(_ZN9S20760C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
static Base_Class bases_S20760C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C16,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI9S20760C19[];
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C19D1Ev,_ZThn32_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C19D0Ev,_ZThn32_N9S20760C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C19D1Ev,_ZThn36_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C19D0Ev,_ZThn36_N9S20760C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S20760C19D1Ev,_ZThn64_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S20760C19D0Ev,_ZThn64_N9S20760C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C19D1Ev,_ZThn108_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C19D0Ev,_ZThn108_N9S20760C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C19D1Ev,_ZThn120_N9S20760C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C19D0Ev,_ZThn120_N9S20760C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C19[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C19D1Ev,_ZThn32_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C19D0Ev,_ZThn32_N9S20760C19D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C19[];
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C20__9S20760C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C20__9S20760C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C20__9S20760C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C20__9S20760C19[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C19[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C19[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C19[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C19[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C19[] = {
  {&(_ZTV9S20760C19[6]),  6,48},
  {&(_tg__ZTV9S20760C20__9S20760C19[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C20__9S20760C19[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C19[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C20__9S20760C19[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C20__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C20__9S20760C19[4]),  4,6},
  {&(_ZTV9S20760C19[14]),  14,48},
  {&(_ZTV9S20760C19[23]),  23,48},
  {&(_ZTV9S20760C19[30]),  30,48},
  {&(_ZTV9S20760C19[35]),  35,48},
  {&(_ZTV9S20760C19[40]),  40,48},
  {&(_ZTV9S20760C19[46]),  46,48},
  {&(_tg__ZTV9S20760C17__9S20760C19[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C19[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D0Ev,_ZThn108_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C20D1Ev,_ZThn108_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn52_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn52_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn96_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D0Ev,_ZThn24_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn96_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C20D1Ev,_ZThn24_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn52_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn52_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn96_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D0Ev,_ZThn24_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn96_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C16D1Ev,_ZThn24_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C19D0Ev,_ZThn120_N9S20760C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C19D1Ev,_ZThn120_N9S20760C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C19D0Ev,_ZThn64_N9S20760C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C19D1Ev,_ZThn64_N9S20760C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C19D0Ev,_ZThn108_N9S20760C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C19D0Ev,_ZThn36_N9S20760C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C19D1Ev,_ZThn108_N9S20760C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C19D1Ev,_ZThn36_N9S20760C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C19 = {  "S20760C19", // class name
  bases_S20760C19, 11,
  &(vtc_S20760C19[0]), // expected_vtbl_contents
  &(vtt_S20760C19[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S20760C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20760C19),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C19),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C15  : virtual S20760C16 , virtual S20760C19 , S4228C27 , virtual S20760C5_nt {
  virtual  ~S20760C15(); // _ZN9S20760C15D2Ev
  virtual void  v1(); // _ZN9S20760C152v1Ev
  S20760C15(); // tgen
};
//SIG(-1 S20760C15) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m FL} vd v1}


 S20760C15 ::~S20760C15(){ note_dtor("S20760C15", this);}
void  S20760C15 ::v1(){vfunc_called(this, "_ZN9S20760C152v1Ev");}
S20760C15 ::S20760C15(){ note_ctor("S20760C15", this);} // tgen

static void Test_S20760C15()
{
  extern Class_Descriptor cd_S20760C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S20760C15, buf);
    S20760C15 *dp, &lv = *(dp=new (buf) S20760C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S20760C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C15)");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(48,20), "S20760C15");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(48,20), "S20760C15");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(48,20), "S20760C15");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(80,48), "S20760C15");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(136,92), "S20760C15");
    /*is_ambiguous_... S20760C15::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(136,92), "S20760C15");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(96,60), "S20760C15");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(80,48), "S20760C15");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(80,48), "S20760C15");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C16*), ABISELECT(16,4), "S20760C15");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C19*), ABISELECT(160,104), "S20760C15");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C19*), ABISELECT(208,132), "S20760C15");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(176,116), "S20760C15");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C19*), ABISELECT(216,136), "S20760C15");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C19*), 0, "S20760C15");
    check_base_class_offset(lv, (S20760C20*)(S20760C19*), ABISELECT(176,116), "S20760C15");
    check_base_class_offset(lv, (S20760C19*), ABISELECT(160,104), "S20760C15");
    check_base_class_offset(lv, (S4228C27*), 0, "S20760C15");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(224,140), "S20760C15");
    test_class_info(&lv, &cd_S20760C15);
    dp->~S20760C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C15(Test_S20760C15, "S20760C15", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN9S20760C15C1Ev();
extern void _ZN9S20760C15D2Ev();
Name_Map name_map_S20760C15[] = {
  NSPAIR(_ZN9S20760C15C1Ev),
  NSPAIR(_ZN9S20760C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C19;
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S20760C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(16,4), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C19,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C15[];
extern void ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev)();
extern void _ZN9S20760C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev)();
extern void _ZN9S20760C15D0Ev() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C15D1Ev,_ZThn4_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20760C15D0Ev,_ZThn4_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20760C15D1Ev,_ZThn20_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20760C15D0Ev,_ZThn20_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C15D1Ev,_ZThn48_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C15D0Ev,_ZThn48_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S20760C15D1Ev,_ZThn140_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S20760C15D0Ev,_ZThn140_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C15[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C15[];
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C15[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__9S20760C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__9S20760C15[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__9S20760C15[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C15[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C15[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C15[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C15[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C15[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C19__9S20760C15[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__9S20760C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C19__9S20760C15[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19__9S20760C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C19__9S20760C15[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19__9S20760C15[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19__9S20760C15[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20760C19__9S20760C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19__9S20760C15[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C15[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C15[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C15[] = {
  {&(_ZTV9S20760C15[10]),  10,69},
  {&(_ZTV9S20760C15[19]),  19,69},
  {&(_ZTV9S20760C15[24]),  24,69},
  {&(_ZTV9S20760C15[31]),  31,69},
  {&(_ZTV9S20760C15[36]),  36,69},
  {&(_ZTV9S20760C15[41]),  41,69},
  {&(_ZTV9S20760C15[50]),  50,69},
  {&(_ZTV9S20760C15[58]),  58,69},
  {&(_ZTV9S20760C15[62]),  62,69},
  {&(_ZTV9S20760C15[10]),  10,69},
  {&(_ZTV9S20760C15[67]),  67,69},
  {&(_tg__ZTV9S20760C16__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C15[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C19__9S20760C15[6]),  6,8},
  {&(_tg__ZTV9S20760C209S20760C19__9S20760C15[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C19__A1__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C19__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C19__9S20760C15[4]),  4,6},
  {&(_tg__ZTV9S20760C20__9S20760C19__9S20760C15[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C19__9S20760C15[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20760C19__9S20760C15[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19__9S20760C15[4]),  4,6},
  {&(_tg__ZTV9S20760C18__A1__9S20760C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C15[];
extern  VTBL_ENTRY _ZTV9S20760C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C15[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D0Ev,_ZThn32_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C18D1Ev,_ZThn32_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C15D0Ev,_ZThn48_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C15D1Ev,_ZThn48_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20760C15D0Ev,_ZThn140_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C15D0Ev,_ZThn20_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20760C15D1Ev,_ZThn140_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20760C15D1Ev,_ZThn20_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20760C15D0Ev,_ZThn4_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20760C15D1Ev,_ZThn4_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C15 = {  "S20760C15", // class name
  bases_S20760C15, 15,
  &(vtc_S20760C15[0]), // expected_vtbl_contents
  &(vtt_S20760C15[0]), // expected_vtt_contents
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI9S20760C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20760C15),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C15),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C6  : virtual S20760C4 , S20760C7 , S20760C15 , S20760C9 {
  virtual  ~S20760C6(); // _ZN8S20760C6D2Ev
  S20760C6(); // tgen
};
//SIG(-1 S20760C6) C1{ VBC2{ VBC3{ vd m FL} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S20760C6 ::~S20760C6(){ note_dtor("S20760C6", this);}
S20760C6 ::S20760C6(){ note_ctor("S20760C6", this);} // tgen

static void Test_S20760C6()
{
  extern Class_Descriptor cd_S20760C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S20760C6, buf);
    S20760C6 *dp, &lv = *(dp=new (buf) S20760C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S20760C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C6)");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C4*), ABISELECT(80,60), "S20760C6");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C15*), ABISELECT(80,60), "S20760C6");
    check_base_class_offset(lv, (S20760C4*), ABISELECT(64,52), "S20760C6");
    check_base_class_offset(lv, (S20760C9*)(S20760C8*), ABISELECT(112,80), "S20760C6");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(112,80), "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(112,80), "S20760C6");
    check_base_class_offset(lv, (S20760C8*)(S20760C7*), ABISELECT(96,72), "S20760C6");
    check_base_class_offset(lv, (S4228C23*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S20760C13*)(S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S4228C20*)(S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S4228C27*)(S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S20760C12*)(S20760C7*), 0, "S20760C6");
    check_base_class_offset(lv, (S20760C7*), 0, "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(160,108), "S20760C6");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(160,108), "S20760C6");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(160,108), "S20760C6");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(192,136), "S20760C6");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(208,148), "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(192,136), "S20760C6");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(192,136), "S20760C6");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C16*)(S20760C15*), ABISELECT(128,92), "S20760C6");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C19*), ABISELECT(256,180), "S20760C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C19*), ABISELECT(304,208), "S20760C6");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(272,192), "S20760C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C19*), ABISELECT(312,212), "S20760C6");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C19*), ABISELECT(40,36), "S20760C6");
    check_base_class_offset(lv, (S20760C20*)(S20760C19*), ABISELECT(272,192), "S20760C6");
    check_base_class_offset(lv, (S20760C19*)(S20760C15*), ABISELECT(256,180), "S20760C6");
    check_base_class_offset(lv, (S4228C27*)(S20760C15*), ABISELECT(40,36), "S20760C6");
    check_base_class_offset(lv, (S20760C15*), ABISELECT(40,36), "S20760C6");
    /*is_ambiguous_... S20760C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(48,40), "S20760C6");
    test_class_info(&lv, &cd_S20760C6);
    dp->~S20760C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C6(Test_S20760C6, "S20760C6", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S20760C6C1Ev();
extern void _ZN8S20760C6D2Ev();
Name_Map name_map_S20760C6[] = {
  NSPAIR(_ZN8S20760C6C1Ev),
  NSPAIR(_ZN8S20760C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C4;
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C8;
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C12;
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
extern Class_Descriptor cd_S20760C7;
extern VTBL_ENTRY _ZTI8S20760C7[];
extern  VTBL_ENTRY _ZTV8S20760C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C19;
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C15;
extern VTBL_ENTRY _ZTI9S20760C15[];
extern  VTBL_ENTRY _ZTV9S20760C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20760C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20760C4,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(112,80), //bcp->offset
    50, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C8,    ABISELECT(96,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C12,    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
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20760C7,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,108), //bcp->offset
    63, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(192,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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(208,148), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(192,136), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(128,92), //bcp->offset
    55, //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
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(256,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
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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_S20760C16,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,212), //bcp->offset
    97, //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(272,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20760C19,    ABISELECT(256,180), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(40,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
    23, //immediately_derived
  0, 0},
  {&cd_S20760C15,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(48,40), //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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C6[];
extern void _ZN8S20760C6D1Ev();
extern void _ZN8S20760C6D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev)() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
extern void ABISELECT(_ZThn48_N8S20760C6D1Ev,_ZThn40_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S20760C6D0Ev,_ZThn40_N8S20760C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S20760C6D1Ev,_ZThn52_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S20760C6D0Ev,_ZThn52_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S20760C6D1Ev,_ZThn60_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S20760C6D0Ev,_ZThn60_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S20760C6D1Ev,_ZThn72_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S20760C6D0Ev,_ZThn72_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S20760C6D1Ev,_ZThn80_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S20760C6D0Ev,_ZThn80_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20760C6D1Ev,_ZThn92_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20760C6D0Ev,_ZThn92_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn108_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn108_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn136_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn136_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn256_N8S20760C6D1Ev,_ZThn180_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn256_N8S20760C6D0Ev,_ZThn180_N8S20760C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev)();
static  VTBL_ENTRY vtc_S20760C6[] = {
  ABISELECT(40,36),
  ABISELECT(256,180),
  ABISELECT(192,136),
  ABISELECT(160,108),
  ABISELECT(128,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&_ZN8S20760C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C6D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  ABISELECT(-40,-36),
  ABISELECT(72,44),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20760C6D1Ev,_ZThn40_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20760C6D0Ev,_ZThn40_N8S20760C6D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev),
  ABISELECT(-256,-180),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev),
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev),
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C6[];
extern void _ZN8S20760C7D1Ev();
extern void _ZN8S20760C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C7__8S20760C6[] = {
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&_ZN8S20760C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C7D0Ev,
};
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C128S20760C7__8S20760C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S20760C7D1Ev,_ZThn72_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S20760C7D0Ev,_ZThn72_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C7__8S20760C6[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S20760C7D1Ev,_ZThn80_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S20760C7D0Ev,_ZThn80_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C7__8S20760C6[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev)();
extern void _ZN9S20760C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev)();
extern void _ZN9S20760C15D0Ev() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C15__8S20760C6[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20760C15D1Ev,_ZThn56_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20760C15D0Ev,_ZThn56_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C15__8S20760C6[] = {
  ABISELECT(-88,-56),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20760C15D1Ev,_ZThn72_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20760C15D0Ev,_ZThn72_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C15__8S20760C6[] = {
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn100_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn100_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C15__8S20760C6[] = {
  ABISELECT(-152,-100),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C15__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C15D1Ev,_ZThn44_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C15D0Ev,_ZThn44_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C15__8S20760C6[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn216_N9S20760C15D1Ev,_ZThn144_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn216_N9S20760C15D0Ev,_ZThn144_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C19__9S20760C15__8S20760C6[] = {
  ABISELECT(-216,-144),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__9S20760C15__8S20760C6[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-156),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C15__8S20760C6[] = {
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C15D1Ev,_ZThn24_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S20760C15D0Ev,_ZThn24_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C15__8S20760C6[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C4__8S20760C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C4__8S20760C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C8__8S20760C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__8S20760C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__8S20760C6[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__8S20760C6[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__8S20760C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__8S20760C6[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__8S20760C6[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C6[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__8S20760C6[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__8S20760C6[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C19__8S20760C6[] = {
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C6[] = {
  ABISELECT(232,156),
  ABISELECT(72,44),
  ABISELECT(232,156),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19__8S20760C6[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C19__8S20760C6[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19__8S20760C6[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20760C19__8S20760C6[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19__8S20760C6[] = {
  ABISELECT(216,144),
  ABISELECT(72,44),
  ABISELECT(216,144),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__8S20760C6[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn44_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn44_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__8S20760C6[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C6[] = {
  {&(_ZTV8S20760C6[14]),  14,101},
  {&(_tg__ZTV8S20760C7__8S20760C6[7]),  7,9},
  {&(_tg__ZTV9S20760C128S20760C7__8S20760C6[4]),  4,6},
  {&(_tg__ZTV8S20760C8__8S20760C7__8S20760C6[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20760C7__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C15__8S20760C6[10]),  10,13},
  {&(_tg__ZTV9S20760C16__9S20760C15__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C15__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C15__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C15__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C15__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C19__9S20760C15__8S20760C6[7]),  7,9},
  {&(_tg__ZTV9S20760C209S20760C19__9S20760C15__8S20760C6[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C15__8S20760C6[2]),  2,4},
  {&(_tg__ZTV9S20760C15__8S20760C6[10]),  10,13},
  {&(_tg__ZTV11S20760C5_nt__9S20760C15__8S20760C6[3]),  3,5},
  {&(_ZTV8S20760C6[37]),  37,101},
  {&(_ZTV8S20760C6[42]),  42,101},
  {&(_ZTV8S20760C6[48]),  48,101},
  {&(_ZTV8S20760C6[53]),  53,101},
  {&(_ZTV8S20760C6[26]),  26,101},
  {&(_ZTV8S20760C6[61]),  61,101},
  {&(_ZTV8S20760C6[66]),  66,101},
  {&(_ZTV8S20760C6[73]),  73,101},
  {&(_ZTV8S20760C6[78]),  78,101},
  {&(_ZTV8S20760C6[87]),  87,101},
  {&(_ZTV8S20760C6[95]),  95,101},
  {&(_ZTV8S20760C6[99]),  99,101},
  {&(_ZTV8S20760C6[26]),  26,101},
  {&(_tg__ZTV8S20760C4__8S20760C6[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S20760C4__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C8__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20760C8__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C16__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__8S20760C6[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C19__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C209S20760C19__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C6[4]),  4,6},
  {&(_tg__ZTV9S20760C20__9S20760C19__8S20760C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C19__8S20760C6[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20760C19__8S20760C6[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19__8S20760C6[4]),  4,6},
  {&(_tg__ZTV9S20760C18__A1__8S20760C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__8S20760C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20760C6[];
extern  VTBL_ENTRY _ZTV8S20760C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C6[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D0Ev,_ZThn44_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C18D1Ev,_ZThn44_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D0Ev,_ZThn8_N8S20760C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C4D1Ev,_ZThn8_N8S20760C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20760C15D0Ev,_ZThn144_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20760C15D1Ev,_ZThn144_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn100_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn100_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C15D0Ev,_ZThn24_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C15D0Ev,_ZThn44_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C15D0Ev,_ZThn72_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20760C15D1Ev,_ZThn24_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C15D1Ev,_ZThn44_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20760C15D1Ev,_ZThn72_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C15D0Ev,_ZThn56_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20760C15D1Ev,_ZThn56_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C7D0Ev,_ZThn80_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C7D1Ev,_ZThn80_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C7D0Ev,_ZThn72_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C7D1Ev,_ZThn72_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C6D0Ev,_ZThn180_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C6D1Ev,_ZThn180_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn136_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn136_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20760C6D0Ev,_ZThn92_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20760C6D1Ev,_ZThn92_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn108_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C6D0Ev,_ZThn80_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20760C6D0Ev,_ZThn60_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn108_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20760C6D1Ev,_ZThn80_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20760C6D1Ev,_ZThn60_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C6D0Ev,_ZThn72_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20760C6D0Ev,_ZThn52_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20760C6D1Ev,_ZThn72_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20760C6D1Ev,_ZThn52_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C6 = {  "S20760C6", // class name
  bases_S20760C6, 25,
  &(vtc_S20760C6[0]), // expected_vtbl_contents
  &(vtt_S20760C6[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S20760C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20760C6),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C6),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C24  : virtual S4161C4_nt , virtual S20760C9 , virtual S20760C17 , S20760C20 , virtual S20760C5_nt {
  ~S20760C24(); // tgen
  S20760C24(); // tgen
};
//SIG(-1 S20760C24) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S20760C24 ::~S20760C24(){ note_dtor("S20760C24", this);} // tgen
S20760C24 ::S20760C24(){ note_ctor("S20760C24", this);} // tgen

static void Test_S20760C24()
{
  extern Class_Descriptor cd_S20760C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S20760C24, buf);
    S20760C24 *dp, &lv = *(dp=new (buf) S20760C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S20760C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C24)");
    /*is_ambiguous_... S20760C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S20760C24");
    /*is_ambiguous_... S20760C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S20760C24");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(56,28), "S20760C24");
    /*is_ambiguous_... S20760C24::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(56,28), "S20760C24");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(72,40), "S20760C24");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(128,84), "S20760C24");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*), ABISELECT(128,84), "S20760C24");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(88,52), "S20760C24");
    check_base_class_offset(lv, (S20760C17*), ABISELECT(72,40), "S20760C24");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*), ABISELECT(72,40), "S20760C24");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*), ABISELECT(32,16), "S20760C24");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*), 0, "S20760C24");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*), ABISELECT(40,20), "S20760C24");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*), ABISELECT(160,112), "S20760C24");
    check_base_class_offset(lv, (S20760C20*), 0, "S20760C24");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S20760C24");
    test_class_info(&lv, &cd_S20760C24);
    dp->~S20760C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C24(Test_S20760C24, "S20760C24", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN9S20760C24C1Ev();
extern void _ZN9S20760C24D1Ev();
Name_Map name_map_S20760C24[] = {
  NSPAIR(_ZN9S20760C24C1Ev),
  NSPAIR(_ZN9S20760C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S20760C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S20760C16,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20760C20,    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_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C24[];
extern void _ZN9S20760C24D1Ev();
extern void _ZN9S20760C24D0Ev();
extern void ABISELECT(_ZThn40_N9S20760C24D1Ev,_ZThn20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn40_N9S20760C24D0Ev,_ZThn20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C24D1Ev,_ZThn28_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C24D0Ev,_ZThn28_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C24D1Ev,_ZThn40_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C24D0Ev,_ZThn40_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C24D1Ev,_ZThn84_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C24D0Ev,_ZThn84_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn112_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn112_N9S20760C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C24[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&_ZN9S20760C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C24D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C24D1Ev,_ZThn20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20760C24D0Ev,_ZThn20_N9S20760C24D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C24[];
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C24[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C16D1Ev,_ZThn84_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C16D0Ev,_ZThn84_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C16D1Ev,_ZThn40_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C16D0Ev,_ZThn40_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C16D1Ev,_ZThn28_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C16D0Ev,_ZThn28_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C20D1Ev,_ZThn84_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C20D0Ev,_ZThn84_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C20__9S20760C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S20760C20D1Ev,_ZThn40_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S20760C20D0Ev,_ZThn40_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C20__9S20760C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C20D1Ev,_ZThn28_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C20D0Ev,_ZThn28_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C20__9S20760C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn112_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn112_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C20__9S20760C24[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C24[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C24[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C24[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C24[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C24[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C24[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C24[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
static  VTT_ENTRY vtt_S20760C24[] = {
  {&(_ZTV9S20760C24[8]),  8,47},
  {&(_tg__ZTV9S20760C20__9S20760C24[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C20__9S20760C24[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C20__9S20760C24[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C20__9S20760C24[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C20__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C20__9S20760C24[4]),  4,6},
  {&(_ZTV9S20760C24[17]),  17,47},
  {&(_ZTV9S20760C24[24]),  24,47},
  {&(_ZTV9S20760C24[34]),  34,47},
  {&(_ZTV9S20760C24[29]),  29,47},
  {&(_ZTV9S20760C24[40]),  40,47},
  {&(_ZTV9S20760C24[45]),  45,47},
  {&(_tg__ZTV9S20760C17__9S20760C24[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C24[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C24[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C24[];
extern  VTBL_ENTRY _ZTV9S20760C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C24[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn112_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn112_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C20D0Ev,_ZThn40_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C20D1Ev,_ZThn40_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C20D0Ev,_ZThn28_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C20D0Ev,_ZThn84_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C20D1Ev,_ZThn28_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C20D1Ev,_ZThn84_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C16D0Ev,_ZThn40_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C16D1Ev,_ZThn40_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C16D0Ev,_ZThn28_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C16D0Ev,_ZThn84_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C16D1Ev,_ZThn28_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C16D1Ev,_ZThn84_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn112_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn112_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C24D0Ev,_ZThn40_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20760C24D1Ev,_ZThn40_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C24D0Ev,_ZThn84_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C24D0Ev,_ZThn28_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C24D1Ev,_ZThn84_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C24D1Ev,_ZThn28_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C24 = {  "S20760C24", // class name
  bases_S20760C24, 12,
  &(vtc_S20760C24[0]), // expected_vtbl_contents
  &(vtt_S20760C24[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI9S20760C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20760C24),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C24),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C25  : virtual S20760C13 , S20760C17 , virtual S4161C4_nt {
  ::S20760C24 s20760c25f0;
  ~S20760C25(); // tgen
  S20760C25(); // tgen
};
//SIG(-1 S20760C25) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S20760C25 ::~S20760C25(){ note_dtor("S20760C25", this);} // tgen
S20760C25 ::S20760C25(){ note_ctor("S20760C25", this);} // tgen

static void Test_S20760C25()
{
  extern Class_Descriptor cd_S20760C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S20760C25, buf);
    S20760C25 *dp, &lv = *(dp=new (buf) S20760C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S20760C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C25)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S20760C25");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(256,172), "S20760C25");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), 0, "S20760C25");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(288,200), "S20760C25");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(16,12), "S20760C25");
    check_base_class_offset(lv, (S20760C17*), 0, "S20760C25");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S20760C25");
    check_field_offset(lv, s20760c25f0, ABISELECT(64,44), "S20760C25.s20760c25f0");
    test_class_info(&lv, &cd_S20760C25);
    dp->~S20760C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C25(Test_S20760C25, "S20760C25", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN9S20760C25C1Ev();
extern void _ZN9S20760C25D1Ev();
Name_Map name_map_S20760C25[] = {
  NSPAIR(_ZN9S20760C25C1Ev),
  NSPAIR(_ZN9S20760C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S20760C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C25[];
extern void _ZN9S20760C25D1Ev();
extern void _ZN9S20760C25D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn256_N9S20760C25D1Ev,_ZThn172_N9S20760C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
extern void ABISELECT(_ZThn256_N9S20760C25D0Ev,_ZThn172_N9S20760C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn288_N9S20760C25D1Ev,_ZThn200_N9S20760C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
extern void ABISELECT(_ZThn288_N9S20760C25D0Ev,_ZThn200_N9S20760C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20760C25[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&_ZN9S20760C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C25D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C25[];
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C25[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C25[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn272_N9S20760C18D1Ev,_ZThn188_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn272_N9S20760C18D0Ev,_ZThn188_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C25[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn256_N9S20760C17D1Ev,_ZThn172_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn256_N9S20760C17D0Ev,_ZThn172_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C25[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C25[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn288_N9S20760C17D1Ev,_ZThn200_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn288_N9S20760C17D0Ev,_ZThn200_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C25[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
static  VTT_ENTRY vtt_S20760C25[] = {
  {&(_ZTV9S20760C25[5]),  5,22},
  {&(_tg__ZTV9S20760C17__9S20760C25[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C25[3]),  3,5},
  {&(_ZTV9S20760C25[15]),  15,22},
  {&(_ZTV9S20760C25[10]),  10,22},
  {&(_ZTV9S20760C25[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S20760C25[];
extern  VTBL_ENTRY _ZTV9S20760C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C25[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C17D0Ev,_ZThn200_N9S20760C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C17D0Ev,_ZThn172_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C17D1Ev,_ZThn200_N9S20760C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C17D1Ev,_ZThn172_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20760C18D0Ev,_ZThn188_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20760C18D1Ev,_ZThn188_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C25D0Ev,_ZThn200_N9S20760C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C25D0Ev,_ZThn172_N9S20760C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20760C25D1Ev,_ZThn200_N9S20760C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20760C25D1Ev,_ZThn172_N9S20760C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C25 = {  "S20760C25", // class name
  bases_S20760C25, 6,
  &(vtc_S20760C25[0]), // expected_vtbl_contents
  &(vtt_S20760C25[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI9S20760C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20760C25),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C25),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C23  : S4228C37 , S20760C9 , virtual S4161C4_nt , S20760C24 , virtual S20760C25 {
  int s20760c23f0;
  virtual  ~S20760C23(); // _ZN9S20760C23D2Ev
  S20760C23(); // tgen
};
//SIG(-1 S20760C23) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S20760C23 ::~S20760C23(){ note_dtor("S20760C23", this);}
S20760C23 ::S20760C23(){ note_ctor("S20760C23", this);} // tgen

static void Test_S20760C23()
{
  extern Class_Descriptor cd_S20760C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S20760C23, buf);
    S20760C23 *dp, &lv = *(dp=new (buf) S20760C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S20760C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C23)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20760C23");
    /*is_ambiguous_... S20760C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S20760C23");
    /*is_ambiguous_... S20760C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20760C24*), ABISELECT(72,40), "S20760C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C25*), ABISELECT(72,40), "S20760C23");
    /*is_ambiguous_... S20760C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C24*), ABISELECT(80,44), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(80,44), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(80,44), "S20760C23");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(80,44), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(96,56), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(152,100), "S20760C23");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C24*), ABISELECT(152,100), "S20760C23");
    check_base_class_offset(lv, (S20760C13*)(S20760C25*), ABISELECT(152,100), "S20760C23");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*)(S20760C25*), ABISELECT(152,100), "S20760C23");
    /*is_ambiguous_... S20760C23::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(112,68), "S20760C23");
    check_base_class_offset(lv, (S20760C17*)(S20760C24*), ABISELECT(96,56), "S20760C23");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C24*), ABISELECT(96,56), "S20760C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C24*), ABISELECT(48,28), "S20760C23");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C24*), ABISELECT(16,12), "S20760C23");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C24*), ABISELECT(56,32), "S20760C23");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C24*), ABISELECT(184,128), "S20760C23");
    check_base_class_offset(lv, (S20760C20*)(S20760C24*), ABISELECT(16,12), "S20760C23");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C24*), ABISELECT(192,132), "S20760C23");
    check_base_class_offset(lv, (S20760C24*), ABISELECT(16,12), "S20760C23");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*)(S20760C25*), ABISELECT(208,144), "S20760C23");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(224,156), "S20760C23");
    check_base_class_offset(lv, (S20760C17*)(S20760C25*), ABISELECT(208,144), "S20760C23");
    check_base_class_offset(lv, (S20760C25*), ABISELECT(208,144), "S20760C23");
    check_field_offset(lv, s20760c23f0, ABISELECT(64,36), "S20760C23.s20760c23f0");
    test_class_info(&lv, &cd_S20760C23);
    dp->~S20760C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C23(Test_S20760C23, "S20760C23", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN9S20760C23C1Ev();
extern void _ZN9S20760C23D2Ev();
Name_Map name_map_S20760C23[] = {
  NSPAIR(_ZN9S20760C23C1Ev),
  NSPAIR(_ZN9S20760C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C24;
extern VTBL_ENTRY _ZTI9S20760C24[];
extern  VTBL_ENTRY _ZTV9S20760C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C25;
extern VTBL_ENTRY _ZTI9S20760C25[];
extern  VTBL_ENTRY _ZTV9S20760C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C25[];
static Base_Class bases_S20760C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C18,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S20760C16,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20760C20,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20760C24,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(208,144), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C25,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20760C23[];
extern void _ZN9S20760C23D1Ev();
extern void _ZN9S20760C23D0Ev();
extern void ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C23D1Ev,_ZThn32_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C23D0Ev,_ZThn32_N9S20760C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn44_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn44_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20760C23D1Ev,_ZThn56_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn96_N9S20760C23D0Ev,_ZThn56_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C23D1Ev,_ZThn100_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C23D0Ev,_ZThn100_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn184_N9S20760C23D1Ev,_ZThn128_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn184_N9S20760C23D0Ev,_ZThn128_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn144_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn144_N9S20760C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev)();
static  VTBL_ENTRY vtc_S20760C23[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&_ZN9S20760C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C23D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C23D1Ev,_ZThn32_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20760C23D0Ev,_ZThn32_N9S20760C23D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20760C23[];
extern void _ZN9S20760C24D1Ev();
extern void _ZN9S20760C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C24__9S20760C23[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&_ZN9S20760C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C24D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn32_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn32_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn88_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn88_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn44_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn44_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C20D1Ev,_ZThn32_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C20D0Ev,_ZThn32_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C20D1Ev,_ZThn116_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C20D0Ev,_ZThn116_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C24__9S20760C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn32_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn32_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C24__9S20760C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C24D1Ev,_ZThn44_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C24D0Ev,_ZThn44_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C24__9S20760C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn136_N9S20760C24D1Ev,_ZThn88_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn136_N9S20760C24D0Ev,_ZThn88_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C24__9S20760C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C24__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C24__9S20760C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn176_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn176_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C24__9S20760C23[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C23[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C23[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__9S20760C23[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__9S20760C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__9S20760C23[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C23[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__9S20760C23[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void _ZN9S20760C25D1Ev();
extern void _ZN9S20760C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C25__9S20760C23[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&_ZN9S20760C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C25D0Ev,
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__9S20760C23[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__9S20760C23[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C25__9S20760C23[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C25__9S20760C23[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C25__9S20760C23[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
static  VTT_ENTRY vtt_S20760C23[] = {
  {&(_ZTV9S20760C23[9]),  9,71},
  {&(_tg__ZTV9S20760C24__9S20760C23[8]),  8,10},
  {&(_tg__ZTV9S20760C209S20760C24__9S20760C23[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C24__9S20760C23[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C24__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C24__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C24__9S20760C23[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S20760C24__9S20760C23[3]),  3,5},
  {&(_ZTV9S20760C23[19]),  19,71},
  {&(_ZTV9S20760C23[28]),  28,71},
  {&(_ZTV9S20760C23[35]),  35,71},
  {&(_ZTV9S20760C23[45]),  45,71},
  {&(_ZTV9S20760C23[40]),  40,71},
  {&(_ZTV9S20760C23[51]),  51,71},
  {&(_ZTV9S20760C23[56]),  56,71},
  {&(_ZTV9S20760C23[64]),  64,71},
  {&(_ZTV9S20760C23[69]),  69,71},
  {&(_tg__ZTV9S20760C17__9S20760C23[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C25__9S20760C23[5]),  5,7},
  {&(_tg__ZTV9S20760C179S20760C25__A1__9S20760C23[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C179S20760C25__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C179S20760C25__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C25__9S20760C23[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C25__9S20760C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C25__9S20760C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20760C23[];
extern  VTBL_ENTRY _ZTV9S20760C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C23[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D0Ev,_ZThn44_N9S20760C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20760C17D1Ev,_ZThn44_N9S20760C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D0Ev,_ZThn116_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C24D1Ev,_ZThn116_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C24D0Ev,_ZThn44_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C24D1Ev,_ZThn44_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C24D0Ev,_ZThn88_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn32_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C24D1Ev,_ZThn88_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn32_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C20D0Ev,_ZThn116_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C20D1Ev,_ZThn116_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D0Ev,_ZThn44_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C20D1Ev,_ZThn44_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C20D0Ev,_ZThn32_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D0Ev,_ZThn88_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C20D1Ev,_ZThn32_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C20D1Ev,_ZThn88_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn32_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D0Ev,_ZThn88_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn32_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20760C16D1Ev,_ZThn88_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn144_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn144_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20760C23D0Ev,_ZThn128_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20760C23D1Ev,_ZThn128_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C23D0Ev,_ZThn56_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20760C23D1Ev,_ZThn56_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C23D0Ev,_ZThn100_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn44_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C23D1Ev,_ZThn100_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn44_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C23 = {  "S20760C23", // class name
  bases_S20760C23, 19,
  &(vtc_S20760C23[0]), // expected_vtbl_contents
  &(vtt_S20760C23[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI9S20760C23),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20760C23),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20760C23),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20760C1  : virtual S20760C2_nt , S20760C4 , S20760C6 , S20760C23 {
  int s20760c1f0;
  ~S20760C1(); // tgen
  S20760C1(); // tgen
};
//SIG(1 S20760C1) C1{ VBC2{ VBC3{ m}} BC4{ VBC5{ vd m FL} vd Fc[2]} BC6{ VBC4 BC7{ VBC8{ VBC9{ vd m FL} vd FC10{ m}} VBC11{ m} BC12{ BC13{ vd m Fi[6]} VBC14{ m} VBC10 Fs} vd Fi} BC15{ VBC16{ VBC13 VBC17{ BC9 VBC13 BC18{ VBC9 vd} FC13} FD} VBC19{ BC9 BC20{ BC21{ m Fp} BC16 BC22{ vd m} VBC18 vd} vd} BC10 VBC5 vd v1} BC9 vd} BC23{ BC3 BC9 VBC21 BC24{ VBC21 VBC9 VBC17 BC20 VBC5} VBC25{ VBC13 BC17 VBC21 FC24} vd Fi} Fi}


S20760C1 ::~S20760C1(){ note_dtor("S20760C1", this);} // tgen
S20760C1 ::S20760C1(){ note_ctor("S20760C1", this);} // tgen

static void Test_S20760C1()
{
  extern Class_Descriptor cd_S20760C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(44,113)];
    init_test(&cd_S20760C1, buf);
    S20760C1 *dp, &lv = *(dp=new (buf) S20760C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,448), "sizeof(S20760C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20760C1)");
    check_base_class_offset(lv, (S4228C37*)(S20760C2_nt*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C2_nt*), ABISELECT(152,104), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C4 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S20760C4*), ABISELECT(160,108), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C4 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S20760C4*), ABISELECT(160,108), "S20760C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C15*)(S20760C6*), ABISELECT(160,108), "S20760C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S20760C24*)(S20760C23*), ABISELECT(160,108), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C4 */ AMB_check_base_class_offset(lv, (S20760C4*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C4*)(S20760C6*), ABISELECT(176,120), "S20760C1");
    check_base_class_offset(lv, (S20760C9*)(S20760C8*), ABISELECT(208,136), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*), ABISELECT(208,136), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C18*), ABISELECT(208,136), "S20760C1");
    /*is_ambiguous_... S20760C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C24*)(S20760C23*), ABISELECT(208,136), "S20760C1");
    check_base_class_offset(lv, (S20760C9*)(S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(208,136), "S20760C1");
    check_base_class_offset(lv, (S20760C8*)(S20760C7*)(S20760C6*), ABISELECT(192,128), "S20760C1");
    check_base_class_offset(lv, (S4228C23*)(S20760C7*)(S20760C6*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C12*)(S20760C7*)(S20760C6*), ABISELECT(16,8), "S20760C1");
    check_base_class_offset(lv, (S4228C20*)(S20760C12*)(S20760C7*)(S20760C6*), 0, "S20760C1");
    check_base_class_offset(lv, (S4228C27*)(S20760C12*)(S20760C7*)(S20760C6*), 0, "S20760C1");
    check_base_class_offset(lv, (S20760C12*)(S20760C7*)(S20760C6*), ABISELECT(16,8), "S20760C1");
    check_base_class_offset(lv, (S20760C7*)(S20760C6*), ABISELECT(16,8), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C16*), ABISELECT(256,164), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20760C17*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C16*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C25*), ABISELECT(256,164), "S20760C1");
    check_base_class_offset(lv, (S20760C13*)(S20760C17*)(S20760C25*), ABISELECT(256,164), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*), ABISELECT(288,192), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C17 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C17*), ABISELECT(304,204), "S20760C1");
    /*is_ambiguous_... S20760C1::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C17*)(S20760C16*), ABISELECT(288,192), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(288,192), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C24*)(S20760C23*), ABISELECT(288,192), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C16*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(288,192), "S20760C1");
    /*is_ambiguous_... S20760C15::S20760C16 */ AMB_check_base_class_offset(lv, (S20760C16*)(S20760C15*)(S20760C6*), ABISELECT(224,148), "S20760C1");
    /*is_ambiguous_... S20760C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C19*), ABISELECT(352,236), "S20760C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C19*), ABISELECT(400,264), "S20760C1");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C19*), ABISELECT(368,248), "S20760C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C19*), ABISELECT(408,268), "S20760C1");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C19*), ABISELECT(56,44), "S20760C1");
    /*is_ambiguous_... S20760C20::S20760C18 */ AMB_check_base_class_offset(lv, (S20760C18*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(56,44), "S20760C1");
    check_base_class_offset(lv, (S20760C20*)(S20760C19*), ABISELECT(368,248), "S20760C1");
    check_base_class_offset(lv, (S20760C19*)(S20760C15*)(S20760C6*), ABISELECT(352,236), "S20760C1");
    check_base_class_offset(lv, (S4228C27*)(S20760C15*)(S20760C6*), ABISELECT(56,44), "S20760C1");
    check_base_class_offset(lv, (S20760C15*)(S20760C6*), ABISELECT(56,44), "S20760C1");
    /*is_ambiguous_... S20760C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C6*), ABISELECT(64,48), "S20760C1");
    check_base_class_offset(lv, (S20760C6*), ABISELECT(16,8), "S20760C1");
    check_base_class_offset(lv, (S4228C37*)(S20760C23*), ABISELECT(80,60), "S20760C1");
    /*is_ambiguous_... S20760C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C23*), ABISELECT(80,60), "S20760C1");
    /*is_ambiguous_... S20760C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20760C23*), ABISELECT(416,272), "S20760C1");
    /*is_ambiguous_... S20760C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20760C24*)(S20760C23*), ABISELECT(416,272), "S20760C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C25*), ABISELECT(416,272), "S20760C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(128,88), "S20760C1");
    check_base_class_offset(lv, (S20760C16*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(96,72), "S20760C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(136,92), "S20760C1");
    check_base_class_offset(lv, (S20760C20*)(S20760C24*)(S20760C23*), ABISELECT(96,72), "S20760C1");
    check_base_class_offset(lv, (S20760C24*)(S20760C23*), ABISELECT(96,72), "S20760C1");
    /*is_ambiguous_... S20760C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20760C17*)(S20760C25*), ABISELECT(432,276), "S20760C1");
    check_base_class_offset(lv, (S20760C18*)(S20760C17*)(S20760C25*), ABISELECT(448,288), "S20760C1");
    check_base_class_offset(lv, (S20760C17*)(S20760C25*), ABISELECT(432,276), "S20760C1");
    check_base_class_offset(lv, (S20760C25*)(S20760C23*), ABISELECT(432,276), "S20760C1");
    check_base_class_offset(lv, (S20760C23*), ABISELECT(80,60), "S20760C1");
    check_field_offset(lv, s20760c1f0, ABISELECT(148,100), "S20760C1.s20760c1f0");
    test_class_info(&lv, &cd_S20760C1);
    dp->~S20760C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20760C1(Test_S20760C1, "S20760C1", ABISELECT(688,448));

#else // __cplusplus

extern void _ZN8S20760C1C1Ev();
extern void _ZN8S20760C1D1Ev();
Name_Map name_map_S20760C1[] = {
  NSPAIR(_ZN8S20760C1C1Ev),
  NSPAIR(_ZN8S20760C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C2_nt;
extern VTBL_ENTRY _ZTI11S20760C2_nt[];
extern  VTBL_ENTRY _ZTV11S20760C2_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20760C2_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C4;
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
extern Class_Descriptor cd_S20760C4;
extern VTBL_ENTRY _ZTI8S20760C4[];
extern  VTBL_ENTRY _ZTV8S20760C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C8;
extern VTBL_ENTRY _ZTI8S20760C8[];
extern  VTBL_ENTRY _ZTV8S20760C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C12;
extern VTBL_ENTRY _ZTI9S20760C12[];
extern  VTBL_ENTRY _ZTV9S20760C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C12[];
extern Class_Descriptor cd_S20760C7;
extern VTBL_ENTRY _ZTI8S20760C7[];
extern  VTBL_ENTRY _ZTV8S20760C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C19;
extern VTBL_ENTRY _ZTI9S20760C19[];
extern  VTBL_ENTRY _ZTV9S20760C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C15;
extern VTBL_ENTRY _ZTI9S20760C15[];
extern  VTBL_ENTRY _ZTV9S20760C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C6;
extern VTBL_ENTRY _ZTI8S20760C6[];
extern  VTBL_ENTRY _ZTV8S20760C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C6[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C16;
extern VTBL_ENTRY _ZTI9S20760C16[];
extern  VTBL_ENTRY _ZTV9S20760C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20760C20;
extern VTBL_ENTRY _ZTI9S20760C20[];
extern  VTBL_ENTRY _ZTV9S20760C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C20[];
extern Class_Descriptor cd_S20760C24;
extern VTBL_ENTRY _ZTI9S20760C24[];
extern  VTBL_ENTRY _ZTV9S20760C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C18;
extern VTBL_ENTRY _ZTI9S20760C18[];
extern  VTBL_ENTRY _ZTV9S20760C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C18[];
extern Class_Descriptor cd_S20760C17;
extern VTBL_ENTRY _ZTI9S20760C17[];
extern  VTBL_ENTRY _ZTV9S20760C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C17[];
extern Class_Descriptor cd_S20760C25;
extern VTBL_ENTRY _ZTI9S20760C25[];
extern  VTBL_ENTRY _ZTV9S20760C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C25[];
extern Class_Descriptor cd_S20760C23;
extern VTBL_ENTRY _ZTI9S20760C23[];
extern  VTBL_ENTRY _ZTV9S20760C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20760C23[];
static Base_Class bases_S20760C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20760C2_nt,    ABISELECT(152,104), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(160,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20760C4,    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_S20760C4,    ABISELECT(176,120), //bcp->offset
    86, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(208,136), //bcp->offset
    98, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C8,    ABISELECT(192,128), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20760C13,    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
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C12,    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
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C7,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(256,164), //bcp->offset
    111, //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
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(288,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
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(304,204), //bcp->offset
    123, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(288,192), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20760C16,    ABISELECT(224,148), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(400,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
    23, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(368,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(408,268), //bcp->offset
    145, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C20,    ABISELECT(368,248), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C19,    ABISELECT(352,236), //bcp->offset
    128, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C15,    ABISELECT(56,44), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(64,48), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C6,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(416,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
    36, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S20760C16,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(136,92), //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
    30, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C20,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20760C24,    ABISELECT(96,72), //bcp->offset
    64, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(432,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
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20760C18,    ABISELECT(448,288), //bcp->offset
    157, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20760C17,    ABISELECT(432,276), //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
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20760C25,    ABISELECT(432,276), //bcp->offset
    149, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20760C23,    ABISELECT(80,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20760C1[];
extern void _ZN8S20760C1D1Ev();
extern void _ZN8S20760C1D0Ev();
extern void ABISELECT(_ZThn16_N8S20760C1D1Ev,_ZThn8_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C1D0Ev,_ZThn8_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20760C1D1Ev,_ZThn44_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20760C1D0Ev,_ZThn44_N8S20760C1D0Ev)() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
extern void ABISELECT(_ZThn64_N8S20760C1D1Ev,_ZThn48_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20760C1D0Ev,_ZThn48_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20760C1D1Ev,_ZThn60_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20760C1D0Ev,_ZThn60_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20760C1D1Ev,_ZThn72_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20760C1D0Ev,_ZThn72_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S20760C1D1Ev,_ZThn92_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S20760C1D0Ev,_ZThn92_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C1D1Ev,_ZThn108_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C1D0Ev,_ZThn108_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20760C1D1Ev,_ZThn120_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S20760C1D0Ev,_ZThn120_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C1D1Ev,_ZThn128_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C1D0Ev,_ZThn128_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20760C1D1Ev,_ZThn136_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20760C1D0Ev,_ZThn136_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20760C1D1Ev,_ZThn148_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20760C1D0Ev,_ZThn148_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20760C1D1Ev,_ZThn164_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20760C1D0Ev,_ZThn164_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C1D1Ev,_ZTv0_n20_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20760C1D1Ev,_ZThn192_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C1D0Ev,_ZTv0_n20_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20760C1D0Ev,_ZThn192_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20760C1D1Ev,_ZTvn12_n20_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20760C1D0Ev,_ZTvn12_n20_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20760C1D1Ev,_ZTv0_n28_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20760C1D1Ev,_ZThn236_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20760C1D0Ev,_ZTv0_n28_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20760C1D0Ev,_ZThn236_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20760C1D1Ev,_ZTvn12_n28_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20760C1D0Ev,_ZTvn12_n28_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C1D1Ev,_ZTvn32_n28_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C1D0Ev,_ZTvn32_n28_N8S20760C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev)();
extern void ABISELECT(_ZThn432_N8S20760C1D1Ev,_ZThn276_N8S20760C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev)();
extern void ABISELECT(_ZThn432_N8S20760C1D0Ev,_ZThn276_N8S20760C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20760C1D1Ev,_ZTvn12_n24_N8S20760C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20760C1D0Ev,_ZTvn12_n24_N8S20760C1D0Ev)();
static  VTBL_ENTRY vtc_S20760C1[] = {
  ABISELECT(432,276),
  ABISELECT(416,272),
  ABISELECT(56,44),
  ABISELECT(352,236),
  ABISELECT(288,192),
  ABISELECT(256,164),
  ABISELECT(224,148),
  0,
  0,
  0,
  ABISELECT(208,136),
  ABISELECT(192,128),
  ABISELECT(176,120),
  0,
  ABISELECT(152,104),
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&_ZN8S20760C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(336,228),
  ABISELECT(272,184),
  ABISELECT(240,156),
  ABISELECT(208,140),
  ABISELECT(144,100),
  ABISELECT(160,112),
  ABISELECT(-16,-8),
  ABISELECT(192,128),
  ABISELECT(176,120),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20760C1D1Ev,_ZThn8_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20760C1D0Ev,_ZThn8_N8S20760C1D0Ev),
  ABISELECT(104,64),
  0,
  ABISELECT(296,192),
  ABISELECT(232,148),
  ABISELECT(200,120),
  ABISELECT(168,104),
  ABISELECT(-56,-44),
  ABISELECT(152,92),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20760C1D1Ev,_ZThn48_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20760C1D0Ev,_ZThn48_N8S20760C1D0Ev),
  ABISELECT(352,216),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,104),
  ABISELECT(208,132),
  ABISELECT(128,76),
  ABISELECT(336,212),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20760C1D1Ev,_ZThn60_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20760C1D0Ev,_ZThn60_N8S20760C1D0Ev),
  ABISELECT(64,36),
  ABISELECT(320,200),
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20760C1D1Ev,_ZThn72_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20760C1D0Ev,_ZThn72_N8S20760C1D0Ev),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20760C1D1Ev,_ZThn92_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20760C1D0Ev,_ZThn92_N8S20760C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev),
  ABISELECT(-176,-120),
  ABISELECT(-16,-12),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev),
  ABISELECT(-192,-128),
  ABISELECT(16,8),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev),
  ABISELECT(-224,-148),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev),
  ABISELECT(-256,-164),
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev),
  ABISELECT(-288,-192),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C1D1Ev,_ZTv0_n20_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C1D0Ev,_ZTv0_n20_N8S20760C1D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-304,-204),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C1D1Ev,_ZTvn12_n20_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C1D0Ev,_ZTvn12_n20_N8S20760C1D0Ev),
  ABISELECT(-352,-236),
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C1D1Ev,_ZTv0_n28_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C1D0Ev,_ZTv0_n28_N8S20760C1D0Ev),
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-368,-248),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C1D1Ev,_ZTvn12_n28_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C1D0Ev,_ZTvn12_n28_N8S20760C1D0Ev),
  ABISELECT(-408,-268),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C1D1Ev,_ZTvn32_n28_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C1D0Ev,_ZTvn32_n28_N8S20760C1D0Ev),
  ABISELECT(-432,-276),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-432,-276),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-448,-288),
  (VTBL_ENTRY)&(_ZTI8S20760C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20760C1D1Ev,_ZTvn12_n24_N8S20760C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20760C1D0Ev,_ZTvn12_n24_N8S20760C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20760C1[];
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C4__A__8S20760C1[] = {
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C4D1Ev,_ZThn108_N8S20760C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C4D0Ev,_ZThn108_N8S20760C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C4__A__8S20760C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern void _ZN8S20760C6D1Ev();
extern void _ZN8S20760C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C6__8S20760C1[] = {
  ABISELECT(40,36),
  ABISELECT(336,228),
  ABISELECT(272,184),
  ABISELECT(240,156),
  ABISELECT(208,140),
  ABISELECT(144,100),
  ABISELECT(160,112),
  ABISELECT(-16,-8),
  ABISELECT(192,128),
  ABISELECT(176,120),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&_ZN8S20760C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C6D0Ev,
};
extern void _ZN8S20760C7D1Ev();
extern void _ZN8S20760C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(192,128),
  ABISELECT(176,120),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&_ZN8S20760C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C7D0Ev,
};
extern void _ZN9S20760C12D1Ev();
extern void _ZN9S20760C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C128S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C12[0]),
  (VTBL_ENTRY)&_ZN9S20760C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn176_N8S20760C7D1Ev,_ZThn120_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn176_N8S20760C7D0Ev,_ZThn120_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(16,8),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C7D1Ev,_ZThn128_N8S20760C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C7D0Ev,_ZThn128_N8S20760C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C78S20760C6__8S20760C1[] = {
  ABISELECT(-192,-128),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S20760C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev)();
extern void _ZN9S20760C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev)();
extern void _ZN9S20760C15D0Ev() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,192),
  ABISELECT(232,148),
  ABISELECT(200,120),
  ABISELECT(168,104),
  0,
  ABISELECT(152,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn168_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn168_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C16__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn200_N9S20760C15D1Ev,_ZThn120_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn200_N9S20760C15D0Ev,_ZThn120_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-200,-120),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn232_N9S20760C15D1Ev,_ZThn148_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn232_N9S20760C15D0Ev,_ZThn148_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-232,-148),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-248,-160),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D1Ev,_ZTvn12_n20_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C15D0Ev,_ZTvn12_n20_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn296_N9S20760C15D1Ev,_ZThn192_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn296_N9S20760C15D0Ev,_ZThn192_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C19__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-296,-192),
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-296,-192),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-312,-204),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D1Ev,_ZTvn12_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20760C15D0Ev,_ZTvn12_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D1Ev,_ZTvn32_n28_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20760C15D0Ev,_ZTvn32_n28_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S20760C15D1Ev,_ZThn64_N9S20760C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S20760C15D0Ev,_ZThn64_N9S20760C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C158S20760C6__8S20760C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn112_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn112_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C4__8S20760C6__8S20760C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-16,-12),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn144_N8S20760C6D1Ev,_ZThn100_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn144_N8S20760C6D0Ev,_ZThn100_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C6__8S20760C1[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S20760C6D1Ev,_ZThn120_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S20760C6D0Ev,_ZThn120_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C6__8S20760C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(16,8),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn128_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn128_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C6__8S20760C1[] = {
  ABISELECT(-192,-128),
  ABISELECT(-192,-128),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev)() __attribute__((weak));
extern void _ZN9S20760C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C15__8S20760C6__8S20760C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,192),
  ABISELECT(232,148),
  ABISELECT(200,120),
  ABISELECT(168,104),
  ABISELECT(-40,-36),
  ABISELECT(152,92),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20760C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S20760C6D1Ev,_ZThn140_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S20760C6D0Ev,_ZThn140_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C16__8S20760C6__8S20760C1[] = {
  ABISELECT(-208,-140),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S20760C6D1Ev,_ZThn156_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S20760C6D0Ev,_ZThn156_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S20760C6__8S20760C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20760C6D1Ev,_ZThn184_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20760C6D0Ev,_ZThn184_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__8S20760C6__8S20760C1[] = {
  ABISELECT(-272,-184),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__8S20760C6__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D1Ev,_ZTvn12_n20_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20760C6D0Ev,_ZTvn12_n20_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S20760C6D1Ev,_ZThn228_N8S20760C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S20760C6D0Ev,_ZThn228_N8S20760C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C19__8S20760C6__8S20760C1[] = {
  ABISELECT(-336,-228),
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-336,-228),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__8S20760C6__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-352,-240),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D1Ev,_ZTvn12_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20760C6D0Ev,_ZTvn12_n28_N8S20760C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20760C209S20760C19__8S20760C6__8S20760C1[] = {
  ABISELECT(-392,-260),
  (VTBL_ENTRY)&(_ZTI8S20760C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D1Ev,_ZTvn32_n28_N8S20760C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20760C6D0Ev,_ZTvn32_n28_N8S20760C6D0Ev),
};
extern void _ZN9S20760C23D1Ev();
extern void _ZN9S20760C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C23__8S20760C1[] = {
  ABISELECT(352,216),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,104),
  ABISELECT(208,132),
  ABISELECT(128,76),
  ABISELECT(336,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&_ZN9S20760C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C23D0Ev,
};
extern void _ZN9S20760C24D1Ev();
extern void _ZN9S20760C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,200),
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&_ZN9S20760C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C24D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C16D1Ev,_ZThn92_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C16D0Ev,_ZThn92_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C16D1Ev,_ZThn120_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C16D0Ev,_ZThn120_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S20760C16D1Ev,_ZThn64_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn112_N9S20760C16D0Ev,_ZThn64_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn92_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn92_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C20D1Ev,_ZThn120_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C20D0Ev,_ZThn120_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20760C20D1Ev,_ZThn64_N9S20760C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20760C20D0Ev,_ZThn64_N9S20760C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,92),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn112_N9S20760C24D1Ev,_ZThn64_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn112_N9S20760C24D0Ev,_ZThn64_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn192_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn192_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn92_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn92_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D1Ev,_ZTvn12_n20_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C24D0Ev,_ZTvn12_n20_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,92),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D1Ev,_ZTv0_n16_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C24D0Ev,_ZTv0_n16_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn36_N9S20760C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn36_N9S20760C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C249S20760C23__8S20760C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20760C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C24__9S20760C23__8S20760C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,200),
  ABISELECT(-40,-28),
  ABISELECT(112,64),
  ABISELECT(192,120),
  ABISELECT(160,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D1Ev,_ZThn12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C23D0Ev,_ZThn12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S20760C23D1Ev,_ZThn76_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S20760C23D0Ev,_ZThn76_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C23__8S20760C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C23__8S20760C1[] = {
  ABISELECT(-208,-132),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S20760C23D1Ev,_ZThn104_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S20760C23D0Ev,_ZThn104_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C23__8S20760C1[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C23__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D1Ev,_ZTvn12_n20_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C23D0Ev,_ZTvn12_n20_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C23__8S20760C1[] = {
  ABISELECT(24,16),
  ABISELECT(152,92),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D1Ev,_ZTv0_n16_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C23D0Ev,_ZTv0_n16_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn48_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn48_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S20760C23__8S20760C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZThn352_N9S20760C23D1Ev,_ZThn216_N9S20760C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev)();
extern void ABISELECT(_ZThn352_N9S20760C23D0Ev,_ZThn216_N9S20760C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C25__9S20760C23__8S20760C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-352,-216),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23__8S20760C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-368,-228),
  (VTBL_ENTRY)&(_ZTI9S20760C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D1Ev,_ZTvn12_n24_N9S20760C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20760C23D0Ev,_ZTvn12_n24_N9S20760C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20760C2_nt__8S20760C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI11S20760C2_nt[0]),
};
extern void _ZN8S20760C4D1Ev();
extern void _ZN8S20760C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C4__A1__8S20760C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&_ZN8S20760C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S20760C4__A1__8S20760C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20760C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev),
};
extern void _ZN8S20760C8D1Ev();
extern void _ZN8S20760C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20760C8__8S20760C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&_ZN8S20760C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20760C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20760C8__8S20760C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20760C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev),
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C16__8S20760C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C16__8S20760C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C16__8S20760C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C16__8S20760C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C17__8S20760C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__8S20760C1[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C1[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C17__8S20760C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C17__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C17__8S20760C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void _ZN9S20760C19D1Ev();
extern void _ZN9S20760C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C19__8S20760C1[] = {
  ABISELECT(-296,-192),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&_ZN9S20760C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C19D0Ev,
};
extern void _ZN9S20760C20D1Ev();
extern void _ZN9S20760C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&_ZN9S20760C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C20D0Ev,
};
extern void _ZN9S20760C16D1Ev();
extern void _ZN9S20760C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&_ZN9S20760C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D1Ev,_ZTvn12_n20_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C16D0Ev,_ZTvn12_n20_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D1Ev,_ZTvn12_n20_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C20D0Ev,_ZTvn12_n20_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C1[] = {
  ABISELECT(312,204),
  ABISELECT(152,92),
  ABISELECT(312,204),
  (VTBL_ENTRY)&(_ZTI9S20760C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D1Ev,_ZTv0_n16_N9S20760C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C20D0Ev,_ZTv0_n16_N9S20760C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C20__9S20760C19__8S20760C1[] = {
  ABISELECT(-312,-204),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D1Ev,_ZThn12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C19D0Ev,_ZThn12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C19__8S20760C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C17__9S20760C19__8S20760C1[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D1Ev,_ZTv0_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20760C19D0Ev,_ZTv0_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D1Ev,_ZTvn12_n20_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20760C19D0Ev,_ZTvn12_n20_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20760C19__8S20760C1[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D1Ev,_ZTv0_n12_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C19D0Ev,_ZTv0_n12_N9S20760C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__9S20760C19__8S20760C1[] = {
  ABISELECT(296,192),
  ABISELECT(152,92),
  ABISELECT(296,192),
  (VTBL_ENTRY)&(_ZTI9S20760C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D1Ev,_ZTv0_n16_N9S20760C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20760C19D0Ev,_ZTv0_n16_N9S20760C19D0Ev),
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C18__A1__8S20760C1[] = {
  ABISELECT(152,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C18__A1__8S20760C1[] = {
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void _ZN9S20760C25D1Ev();
extern void _ZN9S20760C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C25__8S20760C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&_ZN9S20760C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C25D0Ev,
};
extern void _ZN9S20760C17D1Ev();
extern void _ZN9S20760C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&_ZN9S20760C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C17D0Ev,
};
extern void _ZN9S20760C18D1Ev();
extern void _ZN9S20760C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C179S20760C25__A2__8S20760C1[] = {
  ABISELECT(-240,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&_ZN9S20760C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20760C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__8S20760C1[] = {
  ABISELECT(240,152),
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI9S20760C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C18__9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D1Ev,_ZThn12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C17D0Ev,_ZThn12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__8S20760C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20760C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D1Ev,_ZTv0_n12_N9S20760C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C17D0Ev,_ZTv0_n12_N9S20760C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20760C25__8S20760C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C189S20760C17__9S20760C25__8S20760C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D1Ev,_ZThn12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20760C25D0Ev,_ZThn12_N9S20760C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20760C25__8S20760C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20760C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D1Ev,_ZTv0_n12_N9S20760C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20760C25D0Ev,_ZTv0_n12_N9S20760C25D0Ev),
};
static  VTT_ENTRY vtt_S20760C1[] = {
  {&(_ZTV8S20760C1[18]),  18,162},
  {&(_tg__ZTV8S20760C4__A__8S20760C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S20760C4__A__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C6__8S20760C1[14]),  14,16},
  {&(_tg__ZTV8S20760C78S20760C6__8S20760C1[7]),  7,9},
  {&(_tg__ZTV9S20760C128S20760C78S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C8__8S20760C78S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20760C78S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C158S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV9S20760C16__9S20760C158S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C158S20760C6__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C19__9S20760C158S20760C6__8S20760C1[7]),  7,9},
  {&(_tg__ZTV9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20760C209S20760C19__9S20760C158S20760C6__8S20760C1[2]),  2,4},
  {&(_tg__ZTV9S20760C158S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV11S20760C5_nt__9S20760C158S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C4__8S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C8__8S20760C6__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C15__8S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV9S20760C16__8S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__8S20760C6__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__8S20760C6__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C19__8S20760C6__8S20760C1[7]),  7,9},
  {&(_tg__ZTV9S20760C209S20760C19__8S20760C6__8S20760C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20760C209S20760C19__8S20760C6__8S20760C1[2]),  2,4},
  {&(_tg__ZTV9S20760C15__8S20760C6__8S20760C1[10]),  10,13},
  {&(_tg__ZTV9S20760C23__8S20760C1[9]),  9,11},
  {&(_tg__ZTV9S20760C249S20760C23__8S20760C1[8]),  8,10},
  {&(_tg__ZTV9S20760C209S20760C249S20760C23__A1__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C249S20760C23__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C249S20760C23__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C249S20760C23__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C249S20760C23__A1__8S20760C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C249S20760C23__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C249S20760C23__8S20760C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S20760C249S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C24__9S20760C23__8S20760C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C23__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C23__8S20760C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S20760C23__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C25__9S20760C23__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C189S20760C179S20760C25__A2__9S20760C23__8S20760C1[3]),  3,5},
  {&(_ZTV8S20760C1[81]),  81,162},
  {&(_ZTV8S20760C1[84]),  84,162},
  {&(_ZTV8S20760C1[34]),  34,162},
  {&(_ZTV8S20760C1[90]),  90,162},
  {&(_ZTV8S20760C1[96]),  96,162},
  {&(_ZTV8S20760C1[101]),  101,162},
  {&(_ZTV8S20760C1[46]),  46,162},
  {&(_ZTV8S20760C1[109]),  109,162},
  {&(_ZTV8S20760C1[114]),  114,162},
  {&(_ZTV8S20760C1[121]),  121,162},
  {&(_ZTV8S20760C1[126]),  126,162},
  {&(_ZTV8S20760C1[135]),  135,162},
  {&(_ZTV8S20760C1[143]),  143,162},
  {&(_ZTV8S20760C1[147]),  147,162},
  {&(_ZTV8S20760C1[46]),  46,162},
  {&(_ZTV8S20760C1[62]),  62,162},
  {&(_ZTV8S20760C1[72]),  72,162},
  {&(_ZTV8S20760C1[155]),  155,162},
  {&(_ZTV8S20760C1[160]),  160,162},
  {&(_tg__ZTV11S20760C2_nt__8S20760C1[3]),  3,3},
  {&(_tg__ZTV8S20760C4__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S20760C4__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C8__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20760C8__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C16__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C16__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C16__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C16__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C16__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C17__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C19__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C209S20760C19__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C169S20760C209S20760C19__A1__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20760C169S20760C209S20760C19__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C169S20760C209S20760C19__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C169S20760C209S20760C19__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C209S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C209S20760C19__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C209S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C209S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C209S20760C19__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C20__9S20760C19__8S20760C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C17__9S20760C19__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20760C19__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__A1__9S20760C19__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C18__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C18__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C25__8S20760C1[5]),  5,7},
  {&(_tg__ZTV9S20760C179S20760C25__A1__8S20760C1[4]),  4,6},
  {&(_tg__ZTV9S20760C189S20760C179S20760C25__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20760C189S20760C179S20760C25__A2__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C179S20760C25__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C18__9S20760C179S20760C25__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C179S20760C25__A1__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20760C25__8S20760C1[3]),  3,5},
  {&(_tg__ZTV9S20760C189S20760C17__9S20760C25__8S20760C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20760C25__8S20760C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20760C1[];
extern  VTBL_ENTRY _ZTV8S20760C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20760C1[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D0Ev,_ZTv0_n12_N9S20760C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C18D0Ev,_ZThn92_N9S20760C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C18D1Ev,_ZTv0_n12_N9S20760C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C18D1Ev,_ZThn92_N9S20760C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D0Ev,_ZTv0_n12_N8S20760C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D0Ev,_ZThn8_N8S20760C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C8D1Ev,_ZTv0_n12_N8S20760C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20760C8D1Ev,_ZThn8_N8S20760C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D0Ev,_ZTv0_n24_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20760C23D0Ev,_ZThn216_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C23D1Ev,_ZTv0_n24_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20760C23D1Ev,_ZThn216_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D0Ev,_ZTv0_n20_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D0Ev,_ZThn132_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C23D1Ev,_ZTv0_n20_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20760C23D1Ev,_ZThn132_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D0Ev,_ZTv0_n12_N9S20760C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D0Ev,_ZThn48_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C23D0Ev,_ZThn104_N9S20760C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C23D0Ev,_ZThn76_N9S20760C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C23D1Ev,_ZTv0_n12_N9S20760C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20760C23D1Ev,_ZThn48_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20760C23D1Ev,_ZThn104_N9S20760C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20760C23D1Ev,_ZThn76_N9S20760C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D0Ev,_ZTv0_n20_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C24D0Ev,_ZThn120_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C24D1Ev,_ZTv0_n20_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C24D1Ev,_ZThn120_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D0Ev,_ZTv0_n12_N9S20760C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D0Ev,_ZThn36_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D0Ev,_ZThn92_N9S20760C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C24D0Ev,_ZThn64_N9S20760C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C24D1Ev,_ZTv0_n12_N9S20760C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C24D1Ev,_ZThn36_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C24D1Ev,_ZThn92_N9S20760C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C24D1Ev,_ZThn64_N9S20760C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D0Ev,_ZTv0_n20_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C20D0Ev,_ZThn120_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C20D1Ev,_ZTv0_n20_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C20D1Ev,_ZThn120_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D0Ev,_ZTv0_n12_N9S20760C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C20D0Ev,_ZThn64_N9S20760C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D0Ev,_ZThn92_N9S20760C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C20D1Ev,_ZTv0_n12_N9S20760C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C20D1Ev,_ZThn64_N9S20760C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C20D1Ev,_ZThn92_N9S20760C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D0Ev,_ZTv0_n20_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D0Ev,_ZThn44_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C16D0Ev,_ZThn120_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C16D1Ev,_ZTv0_n20_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20760C16D1Ev,_ZThn44_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20760C16D1Ev,_ZThn120_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D0Ev,_ZTv0_n12_N9S20760C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D0Ev,_ZThn16_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C16D0Ev,_ZThn64_N9S20760C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C16D0Ev,_ZThn92_N9S20760C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C16D1Ev,_ZTv0_n12_N9S20760C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20760C16D1Ev,_ZThn16_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20760C16D1Ev,_ZThn64_N9S20760C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20760C16D1Ev,_ZThn92_N9S20760C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D0Ev,_ZTv0_n28_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20760C6D0Ev,_ZThn228_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C6D1Ev,_ZTv0_n28_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20760C6D1Ev,_ZThn228_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D0Ev,_ZTv0_n20_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20760C6D0Ev,_ZThn184_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C6D1Ev,_ZTv0_n20_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20760C6D1Ev,_ZThn184_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D0Ev,_ZTv0_n24_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C6D0Ev,_ZThn140_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C6D1Ev,_ZTv0_n24_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C6D1Ev,_ZThn140_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D0Ev,_ZTv0_n12_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20760C6D0Ev,_ZThn156_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D0Ev,_ZThn128_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20760C6D0Ev,_ZThn100_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C6D1Ev,_ZTv0_n12_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20760C6D1Ev,_ZThn156_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C6D1Ev,_ZThn128_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20760C6D1Ev,_ZThn100_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D0Ev,_ZTv0_n16_N8S20760C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D0Ev,_ZThn36_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C6D0Ev,_ZThn120_N8S20760C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D0Ev,_ZThn112_N8S20760C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C6D1Ev,_ZTv0_n16_N8S20760C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20760C6D1Ev,_ZThn36_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C6D1Ev,_ZThn120_N8S20760C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C6D1Ev,_ZThn112_N8S20760C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D0Ev,_ZTv0_n28_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20760C15D0Ev,_ZThn192_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20760C15D1Ev,_ZTv0_n28_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20760C15D1Ev,_ZThn192_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D0Ev,_ZTv0_n20_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20760C15D0Ev,_ZThn148_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20760C15D1Ev,_ZTv0_n20_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20760C15D1Ev,_ZThn148_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D0Ev,_ZTv0_n12_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20760C15D0Ev,_ZThn64_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D0Ev,_ZThn92_N9S20760C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20760C15D0Ev,_ZThn120_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20760C15D1Ev,_ZTv0_n12_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20760C15D1Ev,_ZThn64_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20760C15D1Ev,_ZThn92_N9S20760C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20760C15D1Ev,_ZThn120_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D0Ev,_ZTv0_n24_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C15D0Ev,_ZThn104_N9S20760C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20760C15D1Ev,_ZTv0_n24_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20760C15D1Ev,_ZThn104_N9S20760C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D0Ev,_ZTv0_n16_N9S20760C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20760C15D1Ev,_ZTv0_n16_N9S20760C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20760C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D0Ev,_ZTv0_n12_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C7D0Ev,_ZThn128_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C7D1Ev,_ZTv0_n12_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C7D1Ev,_ZThn128_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D0Ev,_ZTv0_n16_N8S20760C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C7D0Ev,_ZThn120_N8S20760C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C7D1Ev,_ZTv0_n16_N8S20760C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C7D1Ev,_ZThn120_N8S20760C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D0Ev,_ZTv0_n12_N8S20760C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C4D0Ev,_ZThn108_N8S20760C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C4D1Ev,_ZTv0_n12_N8S20760C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C4D1Ev,_ZThn108_N8S20760C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C1D0Ev,_ZTv0_n28_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20760C1D0Ev,_ZThn236_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20760C1D1Ev,_ZTv0_n28_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20760C1D1Ev,_ZThn236_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C1D0Ev,_ZTv0_n20_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20760C1D0Ev,_ZThn192_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20760C1D1Ev,_ZTv0_n20_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20760C1D1Ev,_ZThn192_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C1D0Ev,_ZTv0_n24_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20760C1D0Ev,_ZThn276_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20760C1D0Ev,_ZThn148_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20760C1D1Ev,_ZTv0_n24_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20760C1D1Ev,_ZThn276_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20760C1D1Ev,_ZThn148_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C1D0Ev,_ZTv0_n12_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C1D0Ev,_ZThn164_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C1D0Ev,_ZThn136_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C1D0Ev,_ZThn108_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20760C1D1Ev,_ZTv0_n12_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20760C1D1Ev,_ZThn164_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20760C1D1Ev,_ZThn136_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20760C1D1Ev,_ZThn108_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C1D0Ev,_ZTv0_n16_N8S20760C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C1D0Ev,_ZThn128_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C1D0Ev,_ZThn120_N8S20760C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C1D0Ev,_ZThn44_N8S20760C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20760C1D1Ev,_ZTv0_n16_N8S20760C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20760C1D1Ev,_ZThn128_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20760C1D1Ev,_ZThn120_N8S20760C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20760C1D1Ev,_ZThn44_N8S20760C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20760C1 = {  "S20760C1", // class name
  bases_S20760C1, 42,
  &(vtc_S20760C1[0]), // expected_vtbl_contents
  &(vtt_S20760C1[0]), // expected_vtt_contents
  ABISELECT(688,448), // object size
  NSPAIRA(_ZTI8S20760C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20760C1),162, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20760C1),125, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C2  : virtual S4228C37 {
  ~S20759C2(); // tgen
  S20759C2(); // tgen
};
//SIG(-1 S20759C2) C1{ VBC2{ m}}


S20759C2 ::~S20759C2(){ note_dtor("S20759C2", this);} // tgen
S20759C2 ::S20759C2(){ note_ctor("S20759C2", this);} // tgen

static void Test_S20759C2()
{
  extern Class_Descriptor cd_S20759C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20759C2, buf);
    S20759C2 *dp, &lv = *(dp=new (buf) S20759C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20759C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C2)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20759C2");
    test_class_info(&lv, &cd_S20759C2);
    dp->~S20759C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C2(Test_S20759C2, "S20759C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20759C2C1Ev();
extern void _ZN8S20759C2D1Ev();
Name_Map name_map_S20759C2[] = {
  NSPAIR(_ZN8S20759C2C1Ev),
  NSPAIR(_ZN8S20759C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S20759C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20759C2[];
static  VTBL_ENTRY vtc_S20759C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C2[0]),
};
extern VTBL_ENTRY _ZTV8S20759C2[];
static  VTT_ENTRY vtt_S20759C2[] = {
  {&(_ZTV8S20759C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20759C2[];
extern  VTBL_ENTRY _ZTV8S20759C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C2[];
Class_Descriptor cd_S20759C2 = {  "S20759C2", // class name
  bases_S20759C2, 1,
  &(vtc_S20759C2[0]), // expected_vtbl_contents
  &(vtt_S20759C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20759C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20759C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C2),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  S20759C5_nt  {
  long s20759c5f0;
  void  mf20759c5(); // _ZN11S20759C5_nt9mf20759c5Ev
  virtual  ~S20759C5_nt(); // _ZN11S20759C5_ntD1Ev
  S20759C5_nt(); // tgen
};
//SIG(-1 S20759C5_nt) C1{ vd m Fl}


void  S20759C5_nt ::mf20759c5(){}
 S20759C5_nt ::~S20759C5_nt(){ note_dtor("S20759C5_nt", this);}
S20759C5_nt ::S20759C5_nt(){ note_ctor("S20759C5_nt", this);} // tgen

//skip512 S20759C5_nt

#else // __cplusplus

extern void _ZN11S20759C5_ntC1Ev();
extern void _ZN11S20759C5_ntD1Ev();
Name_Map name_map_S20759C5_nt[] = {
  NSPAIR(_ZN11S20759C5_ntC1Ev),
  NSPAIR(_ZN11S20759C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern void _ZN11S20759C5_ntD1Ev();
extern void _ZN11S20759C5_ntD0Ev();
static  VTBL_ENTRY vtc_S20759C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20759C5_nt[0]),
  (VTBL_ENTRY)&_ZN11S20759C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20759C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
VTBL_ENTRY *P__ZTI11S20759C5_nt = _ZTI11S20759C5_nt; 
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
Class_Descriptor cd_S20759C5_nt = {  "S20759C5_nt", // class name
  0,0,//no base classes
  &(vtc_S20759C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20759C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20759C5_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  S20759C4  : virtual S20759C5_nt {
  char s20759c4f0[2];
  virtual  ~S20759C4(); // _ZN8S20759C4D2Ev
  S20759C4(); // tgen
};
//SIG(-1 S20759C4) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S20759C4 ::~S20759C4(){ note_dtor("S20759C4", this);}
S20759C4 ::S20759C4(){ note_ctor("S20759C4", this);} // tgen

static void Test_S20759C4()
{
  extern Class_Descriptor cd_S20759C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20759C4, buf);
    S20759C4 *dp, &lv = *(dp=new (buf) S20759C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20759C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C4)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S20759C4");
    check_field_offset(lv, s20759c4f0, ABISELECT(8,4), "S20759C4.s20759c4f0");
    test_class_info(&lv, &cd_S20759C4);
    dp->~S20759C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C4(Test_S20759C4, "S20759C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20759C4C1Ev();
extern void _ZN8S20759C4D2Ev();
Name_Map name_map_S20759C4[] = {
  NSPAIR(_ZN8S20759C4C1Ev),
  NSPAIR(_ZN8S20759C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S20759C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //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 _ZTI8S20759C4[];
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C4[];
static  VTT_ENTRY vtt_S20759C4[] = {
  {&(_ZTV8S20759C4[3]),  3,10},
  {&(_ZTV8S20759C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C4 = {  "S20759C4", // class name
  bases_S20759C4, 1,
  &(vtc_S20759C4[0]), // expected_vtbl_contents
  &(vtt_S20759C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20759C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20759C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C8  : virtual S20760C9 {
  ::S4228C27 s20759c8f0;
  virtual  ~S20759C8(); // _ZN8S20759C8D2Ev
  S20759C8(); // tgen
};
//SIG(-1 S20759C8) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S20759C8 ::~S20759C8(){ note_dtor("S20759C8", this);}
S20759C8 ::S20759C8(){ note_ctor("S20759C8", this);} // tgen

static void Test_S20759C8()
{
  extern Class_Descriptor cd_S20759C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20759C8, buf);
    S20759C8 *dp, &lv = *(dp=new (buf) S20759C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20759C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S20759C8");
    check_field_offset(lv, s20759c8f0, ABISELECT(8,4), "S20759C8.s20759c8f0");
    test_class_info(&lv, &cd_S20759C8);
    dp->~S20759C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C8(Test_S20759C8, "S20759C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20759C8C1Ev();
extern void _ZN8S20759C8D2Ev();
Name_Map name_map_S20759C8[] = {
  NSPAIR(_ZN8S20759C8C1Ev),
  NSPAIR(_ZN8S20759C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20759C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI8S20759C8[];
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C8[];
static  VTT_ENTRY vtt_S20759C8[] = {
  {&(_ZTV8S20759C8[3]),  3,10},
  {&(_ZTV8S20759C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C8 = {  "S20759C8", // class name
  bases_S20759C8, 1,
  &(vtc_S20759C8[0]), // expected_vtbl_contents
  &(vtt_S20759C8[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20759C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20759C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C12  : S20760C13 , virtual S4228C20 , virtual S4228C27 {
  short s20759c12f0;
  ~S20759C12(); // tgen
  S20759C12(); // tgen
};
//SIG(-1 S20759C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S20759C12 ::~S20759C12(){ note_dtor("S20759C12", this);} // tgen
S20759C12 ::S20759C12(){ note_ctor("S20759C12", this);} // tgen

static void Test_S20759C12()
{
  extern Class_Descriptor cd_S20759C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20759C12, buf);
    S20759C12 *dp, &lv = *(dp=new (buf) S20759C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S20759C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S20759C12");
    check_base_class_offset(lv, (S4228C20*), 0, "S20759C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S20759C12");
    check_field_offset(lv, s20759c12f0, ABISELECT(32,28), "S20759C12.s20759c12f0");
    test_class_info(&lv, &cd_S20759C12);
    dp->~S20759C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C12(Test_S20759C12, "S20759C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S20759C12C1Ev();
extern void _ZN9S20759C12D1Ev();
Name_Map name_map_S20759C12[] = {
  NSPAIR(_ZN9S20759C12C1Ev),
  NSPAIR(_ZN9S20759C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20759C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20759C12[];
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY vtc_S20759C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S20759C12[];
static  VTT_ENTRY vtt_S20759C12[] = {
  {&(_ZTV9S20759C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
Class_Descriptor cd_S20759C12 = {  "S20759C12", // class name
  bases_S20759C12, 3,
  &(vtc_S20759C12[0]), // expected_vtbl_contents
  &(vtt_S20759C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S20759C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20759C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C12),1, //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  S20759C7  : virtual S20759C8 , virtual S4228C23 , S20759C12 {
  int s20759c7f0;
  virtual  ~S20759C7(); // _ZN8S20759C7D2Ev
  S20759C7(); // tgen
};
//SIG(-1 S20759C7) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S20759C7 ::~S20759C7(){ note_dtor("S20759C7", this);}
S20759C7 ::S20759C7(){ note_ctor("S20759C7", this);} // tgen

static void Test_S20759C7()
{
  extern Class_Descriptor cd_S20759C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S20759C7, buf);
    S20759C7 *dp, &lv = *(dp=new (buf) S20759C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S20759C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C7)");
    check_base_class_offset(lv, (S20760C9*)(S20759C8*), ABISELECT(56,44), "S20759C7");
    check_base_class_offset(lv, (S20759C8*), ABISELECT(40,36), "S20759C7");
    check_base_class_offset(lv, (S4228C23*), 0, "S20759C7");
    check_base_class_offset(lv, (S20760C13*)(S20759C12*), 0, "S20759C7");
    check_base_class_offset(lv, (S4228C20*)(S20759C12*), 0, "S20759C7");
    check_base_class_offset(lv, (S4228C27*)(S20759C12*), 0, "S20759C7");
    check_base_class_offset(lv, (S20759C12*), 0, "S20759C7");
    check_field_offset(lv, s20759c7f0, ABISELECT(36,32), "S20759C7.s20759c7f0");
    test_class_info(&lv, &cd_S20759C7);
    dp->~S20759C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C7(Test_S20759C7, "S20759C7", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S20759C7C1Ev();
extern void _ZN8S20759C7D2Ev();
Name_Map name_map_S20759C7[] = {
  NSPAIR(_ZN8S20759C7C1Ev),
  NSPAIR(_ZN8S20759C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C8;
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C12;
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
static Base_Class bases_S20759C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //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_S20759C8,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20759C12,    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 _ZTI8S20759C7[];
extern void _ZN8S20759C7D1Ev();
extern void _ZN8S20759C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S20759C7D1Ev,_ZThn36_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn40_N8S20759C7D0Ev,_ZThn36_N8S20759C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S20759C7D1Ev,_ZThn44_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S20759C7D0Ev,_ZThn44_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C7[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&_ZN8S20759C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C7D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C7[];
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C12__8S20759C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C7[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C8__8S20759C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
static  VTT_ENTRY vtt_S20759C7[] = {
  {&(_ZTV8S20759C7[7]),  7,20},
  {&(_tg__ZTV9S20759C12__8S20759C7[4]),  4,6},
  {&(_ZTV8S20759C7[13]),  13,20},
  {&(_ZTV8S20759C7[18]),  18,20},
  {&(_tg__ZTV8S20759C8__8S20759C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20759C8__8S20759C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20759C7[];
extern  VTBL_ENTRY _ZTV8S20759C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C7[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C7D0Ev,_ZThn44_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C7D1Ev,_ZThn44_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C7D0Ev,_ZThn36_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C7D1Ev,_ZThn36_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C7 = {  "S20759C7", // class name
  bases_S20759C7, 7,
  &(vtc_S20759C7[0]), // expected_vtbl_contents
  &(vtt_S20759C7[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S20759C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20759C7),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C18  : virtual S20760C9 {
  virtual  ~S20759C18(); // _ZN9S20759C18D2Ev
  S20759C18(); // tgen
};
//SIG(-1 S20759C18) C1{ VBC2{ vd m FL} vd}


 S20759C18 ::~S20759C18(){ note_dtor("S20759C18", this);}
S20759C18 ::S20759C18(){ note_ctor("S20759C18", this);} // tgen

static void Test_S20759C18()
{
  extern Class_Descriptor cd_S20759C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20759C18, buf);
    S20759C18 *dp, &lv = *(dp=new (buf) S20759C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20759C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C18)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S20759C18");
    test_class_info(&lv, &cd_S20759C18);
    dp->~S20759C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C18(Test_S20759C18, "S20759C18", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20759C18C1Ev();
extern void _ZN9S20759C18D2Ev();
Name_Map name_map_S20759C18[] = {
  NSPAIR(_ZN9S20759C18C1Ev),
  NSPAIR(_ZN9S20759C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20759C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C18[];
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn8_N9S20759C18D1Ev,_ZThn4_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn8_N9S20759C18D0Ev,_ZThn4_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C18[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C18[];
static  VTT_ENTRY vtt_S20759C18[] = {
  {&(_ZTV9S20759C18[3]),  3,10},
  {&(_ZTV9S20759C18[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20759C18D0Ev,_ZThn4_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20759C18D1Ev,_ZThn4_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C18 = {  "S20759C18", // class name
  bases_S20759C18, 1,
  &(vtc_S20759C18[0]), // expected_vtbl_contents
  &(vtt_S20759C18[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20759C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20759C18),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C18),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C17  : S20760C9 , virtual S20760C13 , S20759C18 {
  ::S20760C13 s20759c17f0;
  ~S20759C17(); // tgen
  S20759C17(); // tgen
};
//SIG(-1 S20759C17) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S20759C17 ::~S20759C17(){ note_dtor("S20759C17", this);} // tgen
S20759C17 ::S20759C17(){ note_ctor("S20759C17", this);} // tgen

static void Test_S20759C17()
{
  extern Class_Descriptor cd_S20759C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S20759C17, buf);
    S20759C17 *dp, &lv = *(dp=new (buf) S20759C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S20759C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20759C17)");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20759C17");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S20759C17");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(88,72), "S20759C17");
    check_base_class_offset(lv, (S20759C18*), ABISELECT(16,12), "S20759C17");
    check_field_offset(lv, s20759c17f0, ABISELECT(24,16), "S20759C17.s20759c17f0");
    test_class_info(&lv, &cd_S20759C17);
    dp->~S20759C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C17(Test_S20759C17, "S20759C17", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S20759C17C1Ev();
extern void _ZN9S20759C17D1Ev();
Name_Map name_map_S20759C17[] = {
  NSPAIR(_ZN9S20759C17C1Ev),
  NSPAIR(_ZN9S20759C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
static Base_Class bases_S20759C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C17[];
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20759C17D1Ev,_ZThn72_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20759C17D0Ev,_ZThn72_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C17[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C17[];
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn60_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn60_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__9S20759C17[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C17[] = {
  {&(_ZTV9S20759C17[4]),  4,21},
  {&(_tg__ZTV9S20759C18__9S20759C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__9S20759C17[3]),  3,5},
  {&(_ZTV9S20759C17[14]),  14,21},
  {&(_ZTV9S20759C17[9]),  9,21},
  {&(_ZTV9S20759C17[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn60_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn60_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C17D0Ev,_ZThn72_N9S20759C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C17D1Ev,_ZThn72_N9S20759C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C17 = {  "S20759C17", // class name
  bases_S20759C17, 4,
  &(vtc_S20759C17[0]), // expected_vtbl_contents
  &(vtt_S20759C17[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S20759C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20759C17),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C17),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C16  : virtual S20760C13 , virtual S20759C17 {
  long double s20759c16f0;
  ~S20759C16(); // tgen
  S20759C16(); // tgen
};
//SIG(-1 S20759C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S20759C16 ::~S20759C16(){ note_dtor("S20759C16", this);} // tgen
S20759C16 ::S20759C16(){ note_ctor("S20759C16", this);} // tgen

static void Test_S20759C16()
{
  extern Class_Descriptor cd_S20759C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S20759C16, buf);
    S20759C16 *dp, &lv = *(dp=new (buf) S20759C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S20759C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S20759C16");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(32,16), "S20759C16");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(64,44), "S20759C16");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(120,88), "S20759C16");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(80,56), "S20759C16");
    check_base_class_offset(lv, (S20759C17*), ABISELECT(64,44), "S20759C16");
    check_field_offset(lv, s20759c16f0, ABISELECT(16,4), "S20759C16.s20759c16f0");
    test_class_info(&lv, &cd_S20759C16);
    dp->~S20759C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C16(Test_S20759C16, "S20759C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S20759C16C1Ev();
extern void _ZN9S20759C16D1Ev();
Name_Map name_map_S20759C16[] = {
  NSPAIR(_ZN9S20759C16C1Ev),
  NSPAIR(_ZN9S20759C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
static Base_Class bases_S20759C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C16[];
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C16[];
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
static  VTT_ENTRY vtt_S20759C16[] = {
  {&(_ZTV9S20759C16[5]),  5,29},
  {&(_ZTV9S20759C16[10]),  10,29},
  {&(_ZTV9S20759C16[17]),  17,29},
  {&(_ZTV9S20759C16[22]),  22,29},
  {&(_ZTV9S20759C16[27]),  27,29},
  {&(_tg__ZTV9S20759C17__9S20759C16[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C16 = {  "S20759C16", // class name
  bases_S20759C16, 5,
  &(vtc_S20759C16[0]), // expected_vtbl_contents
  &(vtt_S20759C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S20759C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20759C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C20  : S4161C4_nt , S20759C16 , S20760C22_nt , virtual S20759C18 {
  virtual  ~S20759C20(); // _ZN9S20759C20D2Ev
  S20759C20(); // tgen
};
//SIG(-1 S20759C20) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S20759C20 ::~S20759C20(){ note_dtor("S20759C20", this);}
S20759C20 ::S20759C20(){ note_ctor("S20759C20", this);} // tgen

static void Test_S20759C20()
{
  extern Class_Descriptor cd_S20759C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S20759C20, buf);
    S20759C20 *dp, &lv = *(dp=new (buf) S20759C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S20759C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C20)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S20759C20");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(48,24), "S20759C20");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(48,24), "S20759C20");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(80,52), "S20759C20");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(136,96), "S20759C20");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(136,96), "S20759C20");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(96,64), "S20759C20");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(80,52), "S20759C20");
    check_base_class_offset(lv, (S20759C16*), 0, "S20759C20");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S20759C20");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*), ABISELECT(152,108), "S20759C20");
    test_class_info(&lv, &cd_S20759C20);
    dp->~S20759C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C20(Test_S20759C20, "S20759C20", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S20759C20C1Ev();
extern void _ZN9S20759C20D2Ev();
Name_Map name_map_S20759C20[] = {
  NSPAIR(_ZN9S20759C20C1Ev),
  NSPAIR(_ZN9S20759C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
static Base_Class bases_S20759C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20759C16,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C18,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C20[];
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
extern void ABISELECT(_ZThn40_N9S20759C20D1Ev,_ZThn20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C20D0Ev,_ZThn20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C20[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C20D1Ev,_ZThn20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C20D0Ev,_ZThn20_N9S20759C20D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C20[];
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C20[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__9S20759C20[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__9S20759C20[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C20[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__9S20759C20[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C20[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C20[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C20[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C20[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C20[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C20[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C20[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C20[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C20[] = {
  {&(_ZTV9S20759C20[6]),  6,40},
  {&(_tg__ZTV9S20759C16__9S20759C20[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__9S20759C20[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__9S20759C20[3]),  3,5},
  {&(_ZTV9S20759C20[15]),  15,40},
  {&(_ZTV9S20759C20[22]),  22,40},
  {&(_ZTV9S20759C20[27]),  27,40},
  {&(_ZTV9S20759C20[32]),  32,40},
  {&(_ZTV9S20759C20[38]),  38,40},
  {&(_tg__ZTV9S20759C17__9S20759C20[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C20[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C20[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C20 = {  "S20759C20", // class name
  bases_S20759C20, 9,
  &(vtc_S20759C20[0]), // expected_vtbl_contents
  &(vtt_S20759C20[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S20759C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20759C20),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C20),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C19  : S20760C9 , S20759C20 {
  virtual  ~S20759C19(); // _ZN9S20759C19D2Ev
  S20759C19(); // tgen
};
//SIG(-1 S20759C19) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S20759C19 ::~S20759C19(){ note_dtor("S20759C19", this);}
S20759C19 ::S20759C19(){ note_ctor("S20759C19", this);} // tgen

static void Test_S20759C19()
{
  extern Class_Descriptor cd_S20759C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S20759C19, buf);
    S20759C19 *dp, &lv = *(dp=new (buf) S20759C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S20759C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C19)");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20759C19");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*), ABISELECT(48,28), "S20759C19");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*), ABISELECT(64,36), "S20759C19");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(64,36), "S20759C19");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(96,64), "S20759C19");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(152,108), "S20759C19");
    /*is_ambiguous_... S20759C19::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(152,108), "S20759C19");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(112,76), "S20759C19");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*), ABISELECT(96,64), "S20759C19");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*), ABISELECT(16,12), "S20759C19");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*), ABISELECT(56,32), "S20759C19");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*), ABISELECT(168,120), "S20759C19");
    check_base_class_offset(lv, (S20759C20*), ABISELECT(16,12), "S20759C19");
    test_class_info(&lv, &cd_S20759C19);
    dp->~S20759C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C19(Test_S20759C19, "S20759C19", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S20759C19C1Ev();
extern void _ZN9S20759C19D2Ev();
Name_Map name_map_S20759C19[] = {
  NSPAIR(_ZN9S20759C19C1Ev),
  NSPAIR(_ZN9S20759C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
static Base_Class bases_S20759C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20759C16,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI9S20759C19[];
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C19D1Ev,_ZThn32_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C19D0Ev,_ZThn32_N9S20759C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C19D1Ev,_ZThn36_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C19D0Ev,_ZThn36_N9S20759C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn96_N9S20759C19D1Ev,_ZThn64_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn96_N9S20759C19D0Ev,_ZThn64_N9S20759C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C19D1Ev,_ZThn108_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C19D0Ev,_ZThn108_N9S20759C19D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C19D1Ev,_ZThn120_N9S20759C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C19D0Ev,_ZThn120_N9S20759C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C19[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C19D1Ev,_ZThn32_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C19D0Ev,_ZThn32_N9S20759C19D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C19[];
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C20__9S20759C19[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C20__9S20759C19[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C19[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C20__9S20759C19[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C20__9S20759C19[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C19[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C19[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C19[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C19[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C19[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C19[] = {
  {&(_ZTV9S20759C19[6]),  6,48},
  {&(_tg__ZTV9S20759C20__9S20759C19[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C20__9S20759C19[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C19[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C20__9S20759C19[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C20__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C20__9S20759C19[4]),  4,6},
  {&(_ZTV9S20759C19[14]),  14,48},
  {&(_ZTV9S20759C19[23]),  23,48},
  {&(_ZTV9S20759C19[30]),  30,48},
  {&(_ZTV9S20759C19[35]),  35,48},
  {&(_ZTV9S20759C19[40]),  40,48},
  {&(_ZTV9S20759C19[46]),  46,48},
  {&(_tg__ZTV9S20759C17__9S20759C19[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C19[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C19[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D0Ev,_ZThn108_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C20D1Ev,_ZThn108_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn52_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn52_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn96_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D0Ev,_ZThn24_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn96_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C20D1Ev,_ZThn24_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn52_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn52_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn96_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D0Ev,_ZThn24_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn96_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C16D1Ev,_ZThn24_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C19D0Ev,_ZThn120_N9S20759C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C19D1Ev,_ZThn120_N9S20759C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C19D0Ev,_ZThn64_N9S20759C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C19D1Ev,_ZThn64_N9S20759C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C19D0Ev,_ZThn108_N9S20759C19D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C19D0Ev,_ZThn36_N9S20759C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C19D1Ev,_ZThn108_N9S20759C19D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C19D1Ev,_ZThn36_N9S20759C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C19 = {  "S20759C19", // class name
  bases_S20759C19, 11,
  &(vtc_S20759C19[0]), // expected_vtbl_contents
  &(vtt_S20759C19[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S20759C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20759C19),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C19),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C15  : virtual S20759C16 , virtual S20759C19 , S4228C27 , virtual S20759C5_nt {
  virtual  ~S20759C15(); // _ZN9S20759C15D2Ev
  virtual void  v1(); // _ZN9S20759C152v1Ev
  S20759C15(); // tgen
};
//SIG(-1 S20759C15) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m Fl} vd v1}


 S20759C15 ::~S20759C15(){ note_dtor("S20759C15", this);}
void  S20759C15 ::v1(){vfunc_called(this, "_ZN9S20759C152v1Ev");}
S20759C15 ::S20759C15(){ note_ctor("S20759C15", this);} // tgen

static void Test_S20759C15()
{
  extern Class_Descriptor cd_S20759C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S20759C15, buf);
    S20759C15 *dp, &lv = *(dp=new (buf) S20759C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S20759C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C15)");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(48,20), "S20759C15");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(48,20), "S20759C15");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(48,20), "S20759C15");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(80,48), "S20759C15");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(136,92), "S20759C15");
    /*is_ambiguous_... S20759C15::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(136,92), "S20759C15");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(96,60), "S20759C15");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(80,48), "S20759C15");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(80,48), "S20759C15");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C16*), ABISELECT(16,4), "S20759C15");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C19*), ABISELECT(160,104), "S20759C15");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C19*), ABISELECT(208,132), "S20759C15");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(176,116), "S20759C15");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C19*), ABISELECT(216,136), "S20759C15");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C19*), 0, "S20759C15");
    check_base_class_offset(lv, (S20759C20*)(S20759C19*), ABISELECT(176,116), "S20759C15");
    check_base_class_offset(lv, (S20759C19*), ABISELECT(160,104), "S20759C15");
    check_base_class_offset(lv, (S4228C27*), 0, "S20759C15");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(224,140), "S20759C15");
    test_class_info(&lv, &cd_S20759C15);
    dp->~S20759C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C15(Test_S20759C15, "S20759C15", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S20759C15C1Ev();
extern void _ZN9S20759C15D2Ev();
Name_Map name_map_S20759C15[] = {
  NSPAIR(_ZN9S20759C15C1Ev),
  NSPAIR(_ZN9S20759C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C19;
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S20759C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(16,4), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20759C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C19,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C15[];
extern void ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev)();
extern void _ZN9S20759C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev)();
extern void _ZN9S20759C15D0Ev() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C15D1Ev,_ZThn4_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S20759C15D0Ev,_ZThn4_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn48_N9S20759C15D1Ev,_ZThn20_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn48_N9S20759C15D0Ev,_ZThn20_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C15D1Ev,_ZThn48_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C15D0Ev,_ZThn48_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C15D1Ev,_ZThn92_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C15D0Ev,_ZThn92_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C15D1Ev,_ZThn104_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C15D0Ev,_ZThn104_N9S20759C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C15[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C15[];
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C15[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__9S20759C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__9S20759C15[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__9S20759C15[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C15[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C15[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C15[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C15[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C15[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C19__9S20759C15[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__9S20759C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C19__9S20759C15[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19__9S20759C15[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C19__9S20759C15[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19__9S20759C15[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19__9S20759C15[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20759C19__9S20759C15[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19__9S20759C15[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C15[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C18D1Ev,_ZThn92_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C18D0Ev,_ZThn92_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C15[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C15[] = {
  {&(_ZTV9S20759C15[10]),  10,69},
  {&(_ZTV9S20759C15[19]),  19,69},
  {&(_ZTV9S20759C15[24]),  24,69},
  {&(_ZTV9S20759C15[31]),  31,69},
  {&(_ZTV9S20759C15[36]),  36,69},
  {&(_ZTV9S20759C15[41]),  41,69},
  {&(_ZTV9S20759C15[50]),  50,69},
  {&(_ZTV9S20759C15[58]),  58,69},
  {&(_ZTV9S20759C15[62]),  62,69},
  {&(_ZTV9S20759C15[10]),  10,69},
  {&(_ZTV9S20759C15[67]),  67,69},
  {&(_tg__ZTV9S20759C16__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C15[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C19__9S20759C15[6]),  6,8},
  {&(_tg__ZTV9S20759C209S20759C19__9S20759C15[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C19__A1__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C19__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C19__9S20759C15[4]),  4,6},
  {&(_tg__ZTV9S20759C20__9S20759C19__9S20759C15[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C19__9S20759C15[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20759C19__9S20759C15[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19__9S20759C15[4]),  4,6},
  {&(_tg__ZTV9S20759C18__A1__9S20759C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C15[];
extern  VTBL_ENTRY _ZTV9S20759C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C15[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C18D0Ev,_ZThn92_N9S20759C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D0Ev,_ZThn32_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C18D1Ev,_ZThn92_N9S20759C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C18D1Ev,_ZThn32_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C15D0Ev,_ZThn104_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C15D1Ev,_ZThn104_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C15D0Ev,_ZThn48_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C15D1Ev,_ZThn48_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C15D0Ev,_ZThn92_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C15D0Ev,_ZThn20_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C15D1Ev,_ZThn92_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20759C15D1Ev,_ZThn20_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20759C15D0Ev,_ZThn4_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20759C15D1Ev,_ZThn4_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C15 = {  "S20759C15", // class name
  bases_S20759C15, 15,
  &(vtc_S20759C15[0]), // expected_vtbl_contents
  &(vtt_S20759C15[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S20759C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20759C15),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C15),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C6  : virtual S20759C4 , S20759C7 , S20759C15 , S20760C9 {
  virtual  ~S20759C6(); // _ZN8S20759C6D2Ev
  S20759C6(); // tgen
};
//SIG(-1 S20759C6) C1{ VBC2{ VBC3{ vd m Fl} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S20759C6 ::~S20759C6(){ note_dtor("S20759C6", this);}
S20759C6 ::S20759C6(){ note_ctor("S20759C6", this);} // tgen

static void Test_S20759C6()
{
  extern Class_Descriptor cd_S20759C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S20759C6, buf);
    S20759C6 *dp, &lv = *(dp=new (buf) S20759C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S20759C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C6)");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C4*), ABISELECT(80,60), "S20759C6");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C15*), ABISELECT(80,60), "S20759C6");
    check_base_class_offset(lv, (S20759C4*), ABISELECT(64,52), "S20759C6");
    check_base_class_offset(lv, (S20760C9*)(S20759C8*), ABISELECT(112,76), "S20759C6");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(112,76), "S20759C6");
    /*is_ambiguous_... S20759C6::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(112,76), "S20759C6");
    check_base_class_offset(lv, (S20759C8*)(S20759C7*), ABISELECT(96,68), "S20759C6");
    check_base_class_offset(lv, (S4228C23*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S20760C13*)(S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S4228C20*)(S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S4228C27*)(S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S20759C12*)(S20759C7*), 0, "S20759C6");
    check_base_class_offset(lv, (S20759C7*), 0, "S20759C6");
    /*is_ambiguous_... S20759C6::S20759C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(160,104), "S20759C6");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(160,104), "S20759C6");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(160,104), "S20759C6");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(192,132), "S20759C6");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(208,144), "S20759C6");
    /*is_ambiguous_... S20759C6::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(192,132), "S20759C6");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(192,132), "S20759C6");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C16*)(S20759C15*), ABISELECT(128,88), "S20759C6");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C19*), ABISELECT(256,176), "S20759C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C19*), ABISELECT(304,204), "S20759C6");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(272,188), "S20759C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C19*), ABISELECT(312,208), "S20759C6");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C19*), ABISELECT(40,36), "S20759C6");
    check_base_class_offset(lv, (S20759C20*)(S20759C19*), ABISELECT(272,188), "S20759C6");
    check_base_class_offset(lv, (S20759C19*)(S20759C15*), ABISELECT(256,176), "S20759C6");
    check_base_class_offset(lv, (S4228C27*)(S20759C15*), ABISELECT(40,36), "S20759C6");
    check_base_class_offset(lv, (S20759C15*), ABISELECT(40,36), "S20759C6");
    /*is_ambiguous_... S20759C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(48,40), "S20759C6");
    test_class_info(&lv, &cd_S20759C6);
    dp->~S20759C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C6(Test_S20759C6, "S20759C6", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S20759C6C1Ev();
extern void _ZN8S20759C6D2Ev();
Name_Map name_map_S20759C6[] = {
  NSPAIR(_ZN8S20759C6C1Ev),
  NSPAIR(_ZN8S20759C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S20759C4;
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C8;
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C12;
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
extern Class_Descriptor cd_S20759C7;
extern VTBL_ENTRY _ZTI8S20759C7[];
extern  VTBL_ENTRY _ZTV8S20759C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C19;
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C15;
extern VTBL_ENTRY _ZTI9S20759C15[];
extern  VTBL_ENTRY _ZTV9S20759C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S20759C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20759C4,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(112,76), //bcp->offset
    50, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C8,    ABISELECT(96,68), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20759C12,    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
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20759C7,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,104), //bcp->offset
    63, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(192,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(208,144), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(192,132), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(128,88), //bcp->offset
    55, //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
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(256,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
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(272,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,208), //bcp->offset
    97, //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(272,188), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20759C19,    ABISELECT(256,176), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(40,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
    23, //immediately_derived
  0, 0},
  {&cd_S20759C15,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(48,40), //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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C6[];
extern void _ZN8S20759C6D1Ev();
extern void _ZN8S20759C6D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev)() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
extern void ABISELECT(_ZThn48_N8S20759C6D1Ev,_ZThn40_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn48_N8S20759C6D0Ev,_ZThn40_N8S20759C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S20759C6D1Ev,_ZThn52_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S20759C6D0Ev,_ZThn52_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn80_N8S20759C6D1Ev,_ZThn60_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn80_N8S20759C6D0Ev,_ZThn60_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S20759C6D1Ev,_ZThn68_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S20759C6D0Ev,_ZThn68_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S20759C6D1Ev,_ZThn76_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S20759C6D0Ev,_ZThn76_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S20759C6D1Ev,_ZThn88_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S20759C6D0Ev,_ZThn88_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn104_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn104_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn132_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn132_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn256_N8S20759C6D1Ev,_ZThn176_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn256_N8S20759C6D0Ev,_ZThn176_N8S20759C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev)();
static  VTBL_ENTRY vtc_S20759C6[] = {
  ABISELECT(40,36),
  ABISELECT(256,176),
  ABISELECT(192,132),
  ABISELECT(160,104),
  ABISELECT(128,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&_ZN8S20759C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C6D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(-40,-36),
  ABISELECT(72,40),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20759C6D1Ev,_ZThn40_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20759C6D0Ev,_ZThn40_N8S20759C6D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev),
  ABISELECT(-256,-176),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev),
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev),
  ABISELECT(-312,-208),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C6[];
extern void _ZN8S20759C7D1Ev();
extern void _ZN8S20759C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C7__8S20759C6[] = {
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&_ZN8S20759C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C7D0Ev,
};
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C128S20759C7__8S20759C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S20759C7D1Ev,_ZThn68_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S20759C7D0Ev,_ZThn68_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C7__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S20759C7D1Ev,_ZThn76_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn112_N8S20759C7D0Ev,_ZThn76_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C7__8S20759C6[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev)();
extern void _ZN9S20759C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev)();
extern void _ZN9S20759C15D0Ev() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C15__8S20759C6[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  0,
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20759C15D1Ev,_ZThn52_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20759C15D0Ev,_ZThn52_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C15__8S20759C6[] = {
  ABISELECT(-88,-52),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn120_N9S20759C15D1Ev,_ZThn68_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn120_N9S20759C15D0Ev,_ZThn68_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C15__8S20759C6[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn96_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn96_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C15__8S20759C6[] = {
  ABISELECT(-152,-96),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C15__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C15D1Ev,_ZThn40_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C15D0Ev,_ZThn40_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C15__8S20759C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn216_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn216_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C19__9S20759C15__8S20759C6[] = {
  ABISELECT(-216,-140),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__9S20759C15__8S20759C6[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C15__8S20759C6[] = {
  ABISELECT(-272,-172),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C15D1Ev,_ZThn24_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn40_N9S20759C15D0Ev,_ZThn24_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C15__8S20759C6[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C4__8S20759C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C4__8S20759C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C8__8S20759C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__8S20759C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__8S20759C6[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__8S20759C6[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__8S20759C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__8S20759C6[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__8S20759C6[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C6[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__8S20759C6[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__8S20759C6[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C19__8S20759C6[] = {
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C6[] = {
  ABISELECT(232,152),
  ABISELECT(72,40),
  ABISELECT(232,152),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19__8S20759C6[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C19__8S20759C6[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19__8S20759C6[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C6[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20759C19__8S20759C6[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19__8S20759C6[] = {
  ABISELECT(216,140),
  ABISELECT(72,40),
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__8S20759C6[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn40_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn40_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__8S20759C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C6[] = {
  {&(_ZTV8S20759C6[14]),  14,101},
  {&(_tg__ZTV8S20759C7__8S20759C6[7]),  7,9},
  {&(_tg__ZTV9S20759C128S20759C7__8S20759C6[4]),  4,6},
  {&(_tg__ZTV8S20759C8__8S20759C7__8S20759C6[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20759C7__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C15__8S20759C6[10]),  10,13},
  {&(_tg__ZTV9S20759C16__9S20759C15__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C15__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C15__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C15__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C15__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C19__9S20759C15__8S20759C6[7]),  7,9},
  {&(_tg__ZTV9S20759C209S20759C19__9S20759C15__8S20759C6[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C15__8S20759C6[2]),  2,4},
  {&(_tg__ZTV9S20759C15__8S20759C6[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S20759C15__8S20759C6[3]),  3,5},
  {&(_ZTV8S20759C6[37]),  37,101},
  {&(_ZTV8S20759C6[42]),  42,101},
  {&(_ZTV8S20759C6[48]),  48,101},
  {&(_ZTV8S20759C6[53]),  53,101},
  {&(_ZTV8S20759C6[26]),  26,101},
  {&(_ZTV8S20759C6[61]),  61,101},
  {&(_ZTV8S20759C6[66]),  66,101},
  {&(_ZTV8S20759C6[73]),  73,101},
  {&(_ZTV8S20759C6[78]),  78,101},
  {&(_ZTV8S20759C6[87]),  87,101},
  {&(_ZTV8S20759C6[95]),  95,101},
  {&(_ZTV8S20759C6[99]),  99,101},
  {&(_ZTV8S20759C6[26]),  26,101},
  {&(_tg__ZTV8S20759C4__8S20759C6[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S20759C4__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20759C8__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20759C8__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C16__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__8S20759C6[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C19__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20759C209S20759C19__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C6[4]),  4,6},
  {&(_tg__ZTV9S20759C20__9S20759C19__8S20759C6[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C19__8S20759C6[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20759C19__8S20759C6[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19__8S20759C6[4]),  4,6},
  {&(_tg__ZTV9S20759C18__A1__8S20759C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__8S20759C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20759C6[];
extern  VTBL_ENTRY _ZTV8S20759C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C6[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D0Ev,_ZThn40_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C18D1Ev,_ZThn40_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D0Ev,_ZThn8_N8S20759C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C4D1Ev,_ZThn8_N8S20759C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20759C15D0Ev,_ZThn140_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20759C15D1Ev,_ZThn140_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn96_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn96_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C15D0Ev,_ZThn24_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C15D0Ev,_ZThn40_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C15D0Ev,_ZThn68_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20759C15D1Ev,_ZThn24_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C15D1Ev,_ZThn40_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20759C15D1Ev,_ZThn68_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C15D0Ev,_ZThn52_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20759C15D1Ev,_ZThn52_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C7D0Ev,_ZThn76_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C7D1Ev,_ZThn76_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C7D0Ev,_ZThn68_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C7D1Ev,_ZThn68_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C6D0Ev,_ZThn176_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C6D1Ev,_ZThn176_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn132_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn132_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20759C6D0Ev,_ZThn88_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20759C6D1Ev,_ZThn88_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn104_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C6D0Ev,_ZThn76_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20759C6D0Ev,_ZThn60_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn104_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20759C6D1Ev,_ZThn76_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20759C6D1Ev,_ZThn60_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C6D0Ev,_ZThn68_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20759C6D0Ev,_ZThn52_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20759C6D1Ev,_ZThn68_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20759C6D1Ev,_ZThn52_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C6 = {  "S20759C6", // class name
  bases_S20759C6, 25,
  &(vtc_S20759C6[0]), // expected_vtbl_contents
  &(vtt_S20759C6[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S20759C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20759C6),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C6),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C24  : virtual S4161C4_nt , virtual S20760C9 , virtual S20759C17 , S20759C20 , virtual S20759C5_nt {
  ~S20759C24(); // tgen
  S20759C24(); // tgen
};
//SIG(-1 S20759C24) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S20759C24 ::~S20759C24(){ note_dtor("S20759C24", this);} // tgen
S20759C24 ::S20759C24(){ note_ctor("S20759C24", this);} // tgen

static void Test_S20759C24()
{
  extern Class_Descriptor cd_S20759C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S20759C24, buf);
    S20759C24 *dp, &lv = *(dp=new (buf) S20759C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S20759C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C24)");
    /*is_ambiguous_... S20759C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S20759C24");
    /*is_ambiguous_... S20759C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S20759C24");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(56,28), "S20759C24");
    /*is_ambiguous_... S20759C24::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(56,28), "S20759C24");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(72,40), "S20759C24");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(128,84), "S20759C24");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*), ABISELECT(128,84), "S20759C24");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(88,52), "S20759C24");
    check_base_class_offset(lv, (S20759C17*), ABISELECT(72,40), "S20759C24");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*), ABISELECT(72,40), "S20759C24");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*), ABISELECT(32,16), "S20759C24");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*), 0, "S20759C24");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*), ABISELECT(40,20), "S20759C24");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*), ABISELECT(160,112), "S20759C24");
    check_base_class_offset(lv, (S20759C20*), 0, "S20759C24");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S20759C24");
    test_class_info(&lv, &cd_S20759C24);
    dp->~S20759C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C24(Test_S20759C24, "S20759C24", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN9S20759C24C1Ev();
extern void _ZN9S20759C24D1Ev();
Name_Map name_map_S20759C24[] = {
  NSPAIR(_ZN9S20759C24C1Ev),
  NSPAIR(_ZN9S20759C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S20759C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S20759C16,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20759C20,    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_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C24[];
extern void _ZN9S20759C24D1Ev();
extern void _ZN9S20759C24D0Ev();
extern void ABISELECT(_ZThn40_N9S20759C24D1Ev,_ZThn20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn40_N9S20759C24D0Ev,_ZThn20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C24D1Ev,_ZThn28_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C24D0Ev,_ZThn28_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C24D1Ev,_ZThn40_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C24D0Ev,_ZThn40_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C24D1Ev,_ZThn84_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C24D0Ev,_ZThn84_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn112_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn112_N9S20759C24D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C24[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&_ZN9S20759C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C24D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C24D1Ev,_ZThn20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20759C24D0Ev,_ZThn20_N9S20759C24D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C24[];
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C24[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C16D1Ev,_ZThn84_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C16D0Ev,_ZThn84_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C16D1Ev,_ZThn40_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C16D0Ev,_ZThn40_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C16D1Ev,_ZThn28_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C16D0Ev,_ZThn28_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C20D1Ev,_ZThn84_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C20D0Ev,_ZThn84_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C20__9S20759C24[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn72_N9S20759C20D1Ev,_ZThn40_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn72_N9S20759C20D0Ev,_ZThn40_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C20__9S20759C24[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C20D1Ev,_ZThn28_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C20D0Ev,_ZThn28_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C20__9S20759C24[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn112_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn112_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C20__9S20759C24[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C24[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C24[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C24[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C24[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C24[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C24[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C24[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C24[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
static  VTT_ENTRY vtt_S20759C24[] = {
  {&(_ZTV9S20759C24[8]),  8,47},
  {&(_tg__ZTV9S20759C20__9S20759C24[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C20__9S20759C24[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C20__9S20759C24[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C20__9S20759C24[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C20__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C20__9S20759C24[4]),  4,6},
  {&(_ZTV9S20759C24[17]),  17,47},
  {&(_ZTV9S20759C24[24]),  24,47},
  {&(_ZTV9S20759C24[34]),  34,47},
  {&(_ZTV9S20759C24[29]),  29,47},
  {&(_ZTV9S20759C24[40]),  40,47},
  {&(_ZTV9S20759C24[45]),  45,47},
  {&(_tg__ZTV9S20759C17__9S20759C24[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C24[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C24[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C24[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C24[];
extern  VTBL_ENTRY _ZTV9S20759C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C24[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn112_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn112_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C20D0Ev,_ZThn40_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C20D1Ev,_ZThn40_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C20D0Ev,_ZThn28_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C20D0Ev,_ZThn84_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C20D1Ev,_ZThn28_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C20D1Ev,_ZThn84_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C16D0Ev,_ZThn40_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C16D1Ev,_ZThn40_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C16D0Ev,_ZThn28_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C16D0Ev,_ZThn84_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C16D1Ev,_ZThn28_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C16D1Ev,_ZThn84_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn112_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn112_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C24D0Ev,_ZThn40_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20759C24D1Ev,_ZThn40_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C24D0Ev,_ZThn84_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C24D0Ev,_ZThn28_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C24D1Ev,_ZThn84_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C24D1Ev,_ZThn28_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C24 = {  "S20759C24", // class name
  bases_S20759C24, 12,
  &(vtc_S20759C24[0]), // expected_vtbl_contents
  &(vtt_S20759C24[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI9S20759C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20759C24),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C24),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C25  : virtual S20760C13 , S20759C17 , virtual S4161C4_nt {
  ::S20759C24 s20759c25f0;
  ~S20759C25(); // tgen
  S20759C25(); // tgen
};
//SIG(-1 S20759C25) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S20759C25 ::~S20759C25(){ note_dtor("S20759C25", this);} // tgen
S20759C25 ::S20759C25(){ note_ctor("S20759C25", this);} // tgen

static void Test_S20759C25()
{
  extern Class_Descriptor cd_S20759C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S20759C25, buf);
    S20759C25 *dp, &lv = *(dp=new (buf) S20759C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S20759C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C25)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S20759C25");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(256,168), "S20759C25");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), 0, "S20759C25");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(288,196), "S20759C25");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(16,12), "S20759C25");
    check_base_class_offset(lv, (S20759C17*), 0, "S20759C25");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S20759C25");
    check_field_offset(lv, s20759c25f0, ABISELECT(64,44), "S20759C25.s20759c25f0");
    test_class_info(&lv, &cd_S20759C25);
    dp->~S20759C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C25(Test_S20759C25, "S20759C25", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN9S20759C25C1Ev();
extern void _ZN9S20759C25D1Ev();
Name_Map name_map_S20759C25[] = {
  NSPAIR(_ZN9S20759C25C1Ev),
  NSPAIR(_ZN9S20759C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S20759C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20759C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C25[];
extern void _ZN9S20759C25D1Ev();
extern void _ZN9S20759C25D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn256_N9S20759C25D1Ev,_ZThn168_N9S20759C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
extern void ABISELECT(_ZThn256_N9S20759C25D0Ev,_ZThn168_N9S20759C25D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn288_N9S20759C25D1Ev,_ZThn196_N9S20759C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
extern void ABISELECT(_ZThn288_N9S20759C25D0Ev,_ZThn196_N9S20759C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20759C25[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&_ZN9S20759C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C25D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C25[];
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C25[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C25[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn272_N9S20759C18D1Ev,_ZThn184_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn272_N9S20759C18D0Ev,_ZThn184_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C25[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn256_N9S20759C17D1Ev,_ZThn168_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn256_N9S20759C17D0Ev,_ZThn168_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C25[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C25[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn288_N9S20759C17D1Ev,_ZThn196_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn288_N9S20759C17D0Ev,_ZThn196_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C25[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
static  VTT_ENTRY vtt_S20759C25[] = {
  {&(_ZTV9S20759C25[5]),  5,22},
  {&(_tg__ZTV9S20759C17__9S20759C25[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C25[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C25[3]),  3,5},
  {&(_ZTV9S20759C25[15]),  15,22},
  {&(_ZTV9S20759C25[10]),  10,22},
  {&(_ZTV9S20759C25[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S20759C25[];
extern  VTBL_ENTRY _ZTV9S20759C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C25[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C17D0Ev,_ZThn196_N9S20759C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C17D0Ev,_ZThn168_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C17D1Ev,_ZThn196_N9S20759C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C17D1Ev,_ZThn168_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20759C18D0Ev,_ZThn184_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20759C18D1Ev,_ZThn184_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C25D0Ev,_ZThn196_N9S20759C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C25D0Ev,_ZThn168_N9S20759C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20759C25D1Ev,_ZThn196_N9S20759C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20759C25D1Ev,_ZThn168_N9S20759C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C25 = {  "S20759C25", // class name
  bases_S20759C25, 6,
  &(vtc_S20759C25[0]), // expected_vtbl_contents
  &(vtt_S20759C25[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI9S20759C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20759C25),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C25),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C23  : S4228C37 , S20760C9 , virtual S4161C4_nt , S20759C24 , virtual S20759C25 {
  int s20759c23f0;
  virtual  ~S20759C23(); // _ZN9S20759C23D2Ev
  S20759C23(); // tgen
};
//SIG(-1 S20759C23) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S20759C23 ::~S20759C23(){ note_dtor("S20759C23", this);}
S20759C23 ::S20759C23(){ note_ctor("S20759C23", this);} // tgen

static void Test_S20759C23()
{
  extern Class_Descriptor cd_S20759C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S20759C23, buf);
    S20759C23 *dp, &lv = *(dp=new (buf) S20759C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S20759C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C23)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20759C23");
    /*is_ambiguous_... S20759C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S20759C23");
    /*is_ambiguous_... S20759C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S20759C23");
    /*is_ambiguous_... S20759C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20759C24*), ABISELECT(72,40), "S20759C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C25*), ABISELECT(72,40), "S20759C23");
    /*is_ambiguous_... S20759C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C24*), ABISELECT(80,44), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(80,44), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(80,44), "S20759C23");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(80,44), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(96,56), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(152,100), "S20759C23");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C24*), ABISELECT(152,100), "S20759C23");
    check_base_class_offset(lv, (S20760C13*)(S20759C25*), ABISELECT(152,100), "S20759C23");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*)(S20759C25*), ABISELECT(152,100), "S20759C23");
    /*is_ambiguous_... S20759C23::S20759C17 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(112,68), "S20759C23");
    check_base_class_offset(lv, (S20759C17*)(S20759C24*), ABISELECT(96,56), "S20759C23");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C24*), ABISELECT(96,56), "S20759C23");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C24*), ABISELECT(48,28), "S20759C23");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C24*), ABISELECT(16,12), "S20759C23");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C24*), ABISELECT(56,32), "S20759C23");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C24*), ABISELECT(184,128), "S20759C23");
    check_base_class_offset(lv, (S20759C20*)(S20759C24*), ABISELECT(16,12), "S20759C23");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C24*), ABISELECT(192,132), "S20759C23");
    check_base_class_offset(lv, (S20759C24*), ABISELECT(16,12), "S20759C23");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*)(S20759C25*), ABISELECT(208,140), "S20759C23");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(224,152), "S20759C23");
    check_base_class_offset(lv, (S20759C17*)(S20759C25*), ABISELECT(208,140), "S20759C23");
    check_base_class_offset(lv, (S20759C25*), ABISELECT(208,140), "S20759C23");
    check_field_offset(lv, s20759c23f0, ABISELECT(64,36), "S20759C23.s20759c23f0");
    test_class_info(&lv, &cd_S20759C23);
    dp->~S20759C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C23(Test_S20759C23, "S20759C23", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN9S20759C23C1Ev();
extern void _ZN9S20759C23D2Ev();
Name_Map name_map_S20759C23[] = {
  NSPAIR(_ZN9S20759C23C1Ev),
  NSPAIR(_ZN9S20759C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S20759C24;
extern VTBL_ENTRY _ZTI9S20759C24[];
extern  VTBL_ENTRY _ZTV9S20759C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C25;
extern VTBL_ENTRY _ZTI9S20759C25[];
extern  VTBL_ENTRY _ZTV9S20759C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C25[];
static Base_Class bases_S20759C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20759C18,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S20759C16,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20759C20,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20759C24,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(208,140), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20759C25,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20759C23[];
extern void _ZN9S20759C23D1Ev();
extern void _ZN9S20759C23D0Ev();
extern void ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C23D1Ev,_ZThn32_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C23D0Ev,_ZThn32_N9S20759C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn44_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn44_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20759C23D1Ev,_ZThn56_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn96_N9S20759C23D0Ev,_ZThn56_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn184_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn184_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C23D1Ev,_ZThn132_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C23D0Ev,_ZThn132_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn140_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn140_N9S20759C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev)();
static  VTBL_ENTRY vtc_S20759C23[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&_ZN9S20759C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C23D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C23D1Ev,_ZThn32_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S20759C23D0Ev,_ZThn32_N9S20759C23D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20759C23[];
extern void _ZN9S20759C24D1Ev();
extern void _ZN9S20759C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C24__9S20759C23[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&_ZN9S20759C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C24D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn32_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn32_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn44_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn44_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C20D1Ev,_ZThn32_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C20D0Ev,_ZThn32_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C24__9S20759C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn32_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn32_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C24__9S20759C23[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C24D1Ev,_ZThn44_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C24D0Ev,_ZThn44_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C24__9S20759C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn136_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn136_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C24__9S20759C23[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C24__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C24__9S20759C23[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn176_N9S20759C24D1Ev,_ZThn120_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn176_N9S20759C24D0Ev,_ZThn120_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C24__9S20759C23[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C23[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C23[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__9S20759C23[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__9S20759C23[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__9S20759C23[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C23[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__9S20759C23[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void _ZN9S20759C25D1Ev();
extern void _ZN9S20759C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C25__9S20759C23[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&_ZN9S20759C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C25D0Ev,
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__9S20759C23[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__9S20759C23[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C25__9S20759C23[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C25__9S20759C23[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C25__9S20759C23[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
static  VTT_ENTRY vtt_S20759C23[] = {
  {&(_ZTV9S20759C23[9]),  9,71},
  {&(_tg__ZTV9S20759C24__9S20759C23[8]),  8,10},
  {&(_tg__ZTV9S20759C209S20759C24__9S20759C23[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C24__9S20759C23[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C24__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C24__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C24__9S20759C23[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S20759C24__9S20759C23[3]),  3,5},
  {&(_ZTV9S20759C23[19]),  19,71},
  {&(_ZTV9S20759C23[28]),  28,71},
  {&(_ZTV9S20759C23[35]),  35,71},
  {&(_ZTV9S20759C23[45]),  45,71},
  {&(_ZTV9S20759C23[40]),  40,71},
  {&(_ZTV9S20759C23[51]),  51,71},
  {&(_ZTV9S20759C23[56]),  56,71},
  {&(_ZTV9S20759C23[64]),  64,71},
  {&(_ZTV9S20759C23[69]),  69,71},
  {&(_tg__ZTV9S20759C17__9S20759C23[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C25__9S20759C23[5]),  5,7},
  {&(_tg__ZTV9S20759C179S20759C25__A1__9S20759C23[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C179S20759C25__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C179S20759C25__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C25__9S20759C23[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C25__9S20759C23[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C25__9S20759C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20759C23[];
extern  VTBL_ENTRY _ZTV9S20759C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C23[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D0Ev,_ZThn44_N9S20759C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20759C17D1Ev,_ZThn44_N9S20759C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C24D0Ev,_ZThn44_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C24D1Ev,_ZThn44_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C24D0Ev,_ZThn120_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn32_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C24D1Ev,_ZThn120_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn32_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D0Ev,_ZThn44_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C20D1Ev,_ZThn44_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C20D0Ev,_ZThn32_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C20D1Ev,_ZThn32_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn32_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn32_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn140_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn140_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C23D0Ev,_ZThn56_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20759C23D1Ev,_ZThn56_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C23D0Ev,_ZThn132_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn44_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C23D1Ev,_ZThn132_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn44_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C23 = {  "S20759C23", // class name
  bases_S20759C23, 19,
  &(vtc_S20759C23[0]), // expected_vtbl_contents
  &(vtt_S20759C23[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI9S20759C23),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20759C23),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20759C23),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20759C1  : virtual S20759C2 , S20759C4 , S20759C6 , S20759C23 {
  int s20759c1f0;
  ~S20759C1(); // tgen
  S20759C1(); // tgen
};
//SIG(1 S20759C1) C1{ VBC2{ VBC3{ m}} BC4{ VBC5{ vd m Fl} vd Fc[2]} BC6{ VBC4 BC7{ VBC8{ VBC9{ vd m FL} vd FC10{ m}} VBC11{ m} BC12{ BC13{ vd m Fi[6]} VBC14{ m} VBC10 Fs} vd Fi} BC15{ VBC16{ VBC13 VBC17{ BC9 VBC13 BC18{ VBC9 vd} FC13} FD} VBC19{ BC9 BC20{ BC21{ m Fp} BC16 BC22{ vd m} VBC18 vd} vd} BC10 VBC5 vd v1} BC9 vd} BC23{ BC3 BC9 VBC21 BC24{ VBC21 VBC9 VBC17 BC20 VBC5} VBC25{ VBC13 BC17 VBC21 FC24} vd Fi} Fi}


S20759C1 ::~S20759C1(){ note_dtor("S20759C1", this);} // tgen
S20759C1 ::S20759C1(){ note_ctor("S20759C1", this);} // tgen

static void Test_S20759C1()
{
  extern Class_Descriptor cd_S20759C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(44,111)];
    init_test(&cd_S20759C1, buf);
    S20759C1 *dp, &lv = *(dp=new (buf) S20759C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,440), "sizeof(S20759C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20759C1)");
    check_base_class_offset(lv, (S4228C37*)(S20759C2*), 0, "S20759C1");
    check_base_class_offset(lv, (S20759C2*), ABISELECT(152,104), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C4 */ AMB_check_base_class_offset(lv, (S20759C5_nt*)(S20759C4*), ABISELECT(160,108), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C4 */ AMB_check_base_class_offset(lv, (S20759C5_nt*)(S20759C4*), ABISELECT(160,108), "S20759C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C15*)(S20759C6*), ABISELECT(160,108), "S20759C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S20759C24*)(S20759C23*), ABISELECT(160,108), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C4 */ AMB_check_base_class_offset(lv, (S20759C4*), 0, "S20759C1");
    check_base_class_offset(lv, (S20759C4*)(S20759C6*), ABISELECT(176,116), "S20759C1");
    check_base_class_offset(lv, (S20760C9*)(S20759C8*), ABISELECT(208,132), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*), ABISELECT(208,132), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C18 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C18*), ABISELECT(208,132), "S20759C1");
    /*is_ambiguous_... S20759C24::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C24*)(S20759C23*), ABISELECT(208,132), "S20759C1");
    check_base_class_offset(lv, (S20760C9*)(S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(208,132), "S20759C1");
    check_base_class_offset(lv, (S20759C8*)(S20759C7*)(S20759C6*), ABISELECT(192,124), "S20759C1");
    check_base_class_offset(lv, (S4228C23*)(S20759C7*)(S20759C6*), 0, "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C12*)(S20759C7*)(S20759C6*), ABISELECT(16,8), "S20759C1");
    check_base_class_offset(lv, (S4228C20*)(S20759C12*)(S20759C7*)(S20759C6*), 0, "S20759C1");
    check_base_class_offset(lv, (S4228C27*)(S20759C12*)(S20759C7*)(S20759C6*), 0, "S20759C1");
    check_base_class_offset(lv, (S20759C12*)(S20759C7*)(S20759C6*), ABISELECT(16,8), "S20759C1");
    check_base_class_offset(lv, (S20759C7*)(S20759C6*), ABISELECT(16,8), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C16 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C16*), ABISELECT(256,160), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C13*)(S20759C17*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C16*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C25*), ABISELECT(256,160), "S20759C1");
    check_base_class_offset(lv, (S20760C13*)(S20759C17*)(S20759C25*), ABISELECT(256,160), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*), ABISELECT(288,188), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C17 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C17*), ABISELECT(304,200), "S20759C1");
    /*is_ambiguous_... S20759C1::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C17*)(S20759C16*), ABISELECT(288,188), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(288,188), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C24*)(S20759C23*), ABISELECT(288,188), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C16*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(288,188), "S20759C1");
    /*is_ambiguous_... S20759C15::S20759C16 */ AMB_check_base_class_offset(lv, (S20759C16*)(S20759C15*)(S20759C6*), ABISELECT(224,144), "S20759C1");
    /*is_ambiguous_... S20759C19::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C19*), ABISELECT(352,232), "S20759C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C19*), ABISELECT(400,260), "S20759C1");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C19*), ABISELECT(368,244), "S20759C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C19*), ABISELECT(408,264), "S20759C1");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C19*), ABISELECT(56,44), "S20759C1");
    /*is_ambiguous_... S20759C20::S20759C18 */ AMB_check_base_class_offset(lv, (S20759C18*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(56,44), "S20759C1");
    check_base_class_offset(lv, (S20759C20*)(S20759C19*), ABISELECT(368,244), "S20759C1");
    check_base_class_offset(lv, (S20759C19*)(S20759C15*)(S20759C6*), ABISELECT(352,232), "S20759C1");
    check_base_class_offset(lv, (S4228C27*)(S20759C15*)(S20759C6*), ABISELECT(56,44), "S20759C1");
    check_base_class_offset(lv, (S20759C15*)(S20759C6*), ABISELECT(56,44), "S20759C1");
    /*is_ambiguous_... S20759C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C6*), ABISELECT(64,48), "S20759C1");
    check_base_class_offset(lv, (S20759C6*), ABISELECT(16,8), "S20759C1");
    check_base_class_offset(lv, (S4228C37*)(S20759C23*), ABISELECT(80,60), "S20759C1");
    /*is_ambiguous_... S20759C23::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C23*), ABISELECT(80,60), "S20759C1");
    /*is_ambiguous_... S20759C23::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20759C23*), ABISELECT(416,268), "S20759C1");
    /*is_ambiguous_... S20759C24::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S20759C24*)(S20759C23*), ABISELECT(416,268), "S20759C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C25*), ABISELECT(416,268), "S20759C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(128,88), "S20759C1");
    check_base_class_offset(lv, (S20759C16*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(96,72), "S20759C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(136,92), "S20759C1");
    check_base_class_offset(lv, (S20759C20*)(S20759C24*)(S20759C23*), ABISELECT(96,72), "S20759C1");
    check_base_class_offset(lv, (S20759C24*)(S20759C23*), ABISELECT(96,72), "S20759C1");
    /*is_ambiguous_... S20759C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S20759C17*)(S20759C25*), ABISELECT(432,272), "S20759C1");
    check_base_class_offset(lv, (S20759C18*)(S20759C17*)(S20759C25*), ABISELECT(448,284), "S20759C1");
    check_base_class_offset(lv, (S20759C17*)(S20759C25*), ABISELECT(432,272), "S20759C1");
    check_base_class_offset(lv, (S20759C25*)(S20759C23*), ABISELECT(432,272), "S20759C1");
    check_base_class_offset(lv, (S20759C23*), ABISELECT(80,60), "S20759C1");
    check_field_offset(lv, s20759c1f0, ABISELECT(148,100), "S20759C1.s20759c1f0");
    test_class_info(&lv, &cd_S20759C1);
    dp->~S20759C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20759C1(Test_S20759C1, "S20759C1", ABISELECT(688,440));

#else // __cplusplus

extern void _ZN8S20759C1C1Ev();
extern void _ZN8S20759C1D1Ev();
Name_Map name_map_S20759C1[] = {
  NSPAIR(_ZN8S20759C1C1Ev),
  NSPAIR(_ZN8S20759C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20759C2;
extern VTBL_ENTRY _ZTI8S20759C2[];
extern  VTBL_ENTRY _ZTV8S20759C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C2[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S20759C4;
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
extern Class_Descriptor cd_S20759C4;
extern VTBL_ENTRY _ZTI8S20759C4[];
extern  VTBL_ENTRY _ZTV8S20759C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C8;
extern VTBL_ENTRY _ZTI8S20759C8[];
extern  VTBL_ENTRY _ZTV8S20759C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C8[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C20;
extern VTBL_ENTRY _ZTI8S4228C20[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C12;
extern VTBL_ENTRY _ZTI9S20759C12[];
extern  VTBL_ENTRY _ZTV9S20759C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C12[];
extern Class_Descriptor cd_S20759C7;
extern VTBL_ENTRY _ZTI8S20759C7[];
extern  VTBL_ENTRY _ZTV8S20759C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C7[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C19;
extern VTBL_ENTRY _ZTI9S20759C19[];
extern  VTBL_ENTRY _ZTV9S20759C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C19[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C15;
extern VTBL_ENTRY _ZTI9S20759C15[];
extern  VTBL_ENTRY _ZTV9S20759C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C15[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C6;
extern VTBL_ENTRY _ZTI8S20759C6[];
extern  VTBL_ENTRY _ZTV8S20759C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C6[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20759C16;
extern VTBL_ENTRY _ZTI9S20759C16[];
extern  VTBL_ENTRY _ZTV9S20759C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C16[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S20759C20;
extern VTBL_ENTRY _ZTI9S20759C20[];
extern  VTBL_ENTRY _ZTV9S20759C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C20[];
extern Class_Descriptor cd_S20759C24;
extern VTBL_ENTRY _ZTI9S20759C24[];
extern  VTBL_ENTRY _ZTV9S20759C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C24[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C18;
extern VTBL_ENTRY _ZTI9S20759C18[];
extern  VTBL_ENTRY _ZTV9S20759C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C18[];
extern Class_Descriptor cd_S20759C17;
extern VTBL_ENTRY _ZTI9S20759C17[];
extern  VTBL_ENTRY _ZTV9S20759C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C17[];
extern Class_Descriptor cd_S20759C25;
extern VTBL_ENTRY _ZTI9S20759C25[];
extern  VTBL_ENTRY _ZTV9S20759C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C25[];
extern Class_Descriptor cd_S20759C23;
extern VTBL_ENTRY _ZTI9S20759C23[];
extern  VTBL_ENTRY _ZTV9S20759C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20759C23[];
static Base_Class bases_S20759C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20759C2,    ABISELECT(152,104), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20759C5_nt,    ABISELECT(160,108), //bcp->offset
    81, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20759C4,    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_S20759C4,    ABISELECT(176,116), //bcp->offset
    86, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(208,132), //bcp->offset
    98, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20759C8,    ABISELECT(192,124), //bcp->offset
    92, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20760C13,    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
    22, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20759C12,    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
    23, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20759C7,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(256,160), //bcp->offset
    111, //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
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(288,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(304,200), //bcp->offset
    123, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(288,188), //bcp->offset
    116, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20759C16,    ABISELECT(224,144), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(352,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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(400,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
    23, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(368,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(408,264), //bcp->offset
    145, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20759C20,    ABISELECT(368,244), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20759C19,    ABISELECT(352,232), //bcp->offset
    128, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20759C15,    ABISELECT(56,44), //bcp->offset
    36, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(64,48), //bcp->offset
    49, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20759C6,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(416,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
    36, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    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
    35, //immediately_derived
  0, 0},
  {&cd_S20759C16,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(136,92), //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
    30, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20759C20,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20759C24,    ABISELECT(96,72), //bcp->offset
    64, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(432,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
    17, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20759C18,    ABISELECT(448,284), //bcp->offset
    157, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20759C17,    ABISELECT(432,272), //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
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20759C25,    ABISELECT(432,272), //bcp->offset
    149, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20759C23,    ABISELECT(80,60), //bcp->offset
    53, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20759C1[];
extern void _ZN8S20759C1D1Ev();
extern void _ZN8S20759C1D0Ev();
extern void ABISELECT(_ZThn16_N8S20759C1D1Ev,_ZThn8_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C1D0Ev,_ZThn8_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S20759C1D1Ev,_ZThn44_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S20759C1D0Ev,_ZThn44_N8S20759C1D0Ev)() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
extern void ABISELECT(_ZThn64_N8S20759C1D1Ev,_ZThn48_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20759C1D0Ev,_ZThn48_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20759C1D1Ev,_ZThn60_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20759C1D0Ev,_ZThn60_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S20759C1D1Ev,_ZThn72_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20759C1D0Ev,_ZThn72_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn136_N8S20759C1D1Ev,_ZThn92_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn136_N8S20759C1D0Ev,_ZThn92_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C1D1Ev,_ZThn108_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C1D0Ev,_ZThn108_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S20759C1D1Ev,_ZThn116_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S20759C1D0Ev,_ZThn116_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C1D1Ev,_ZThn124_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C1D0Ev,_ZThn124_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20759C1D1Ev,_ZThn132_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20759C1D0Ev,_ZThn132_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20759C1D1Ev,_ZThn144_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20759C1D0Ev,_ZThn144_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S20759C1D1Ev,_ZThn160_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S20759C1D0Ev,_ZThn160_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C1D1Ev,_ZTv0_n20_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S20759C1D1Ev,_ZThn188_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C1D0Ev,_ZTv0_n20_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S20759C1D0Ev,_ZThn188_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S20759C1D1Ev,_ZTvn12_n20_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20759C1D0Ev,_ZTvn12_n20_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20759C1D1Ev,_ZTv0_n28_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S20759C1D1Ev,_ZThn232_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20759C1D0Ev,_ZTv0_n28_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S20759C1D0Ev,_ZThn232_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S20759C1D1Ev,_ZTvn12_n28_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20759C1D0Ev,_ZTvn12_n28_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C1D1Ev,_ZTvn32_n28_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C1D0Ev,_ZTvn32_n28_N8S20759C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev)();
extern void ABISELECT(_ZThn432_N8S20759C1D1Ev,_ZThn272_N8S20759C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev)();
extern void ABISELECT(_ZThn432_N8S20759C1D0Ev,_ZThn272_N8S20759C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S20759C1D1Ev,_ZTvn12_n24_N8S20759C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S20759C1D0Ev,_ZTvn12_n24_N8S20759C1D0Ev)();
static  VTBL_ENTRY vtc_S20759C1[] = {
  ABISELECT(432,272),
  ABISELECT(416,268),
  ABISELECT(56,44),
  ABISELECT(352,232),
  ABISELECT(288,188),
  ABISELECT(256,160),
  ABISELECT(224,144),
  0,
  0,
  0,
  ABISELECT(208,132),
  ABISELECT(192,124),
  ABISELECT(176,116),
  0,
  ABISELECT(152,104),
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&_ZN8S20759C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(336,224),
  ABISELECT(272,180),
  ABISELECT(240,152),
  ABISELECT(208,136),
  ABISELECT(144,100),
  ABISELECT(160,108),
  ABISELECT(-16,-8),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20759C1D1Ev,_ZThn8_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20759C1D0Ev,_ZThn8_N8S20759C1D0Ev),
  ABISELECT(104,64),
  0,
  ABISELECT(296,188),
  ABISELECT(232,144),
  ABISELECT(200,116),
  ABISELECT(168,100),
  ABISELECT(-56,-44),
  ABISELECT(152,88),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20759C1D1Ev,_ZThn48_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S20759C1D0Ev,_ZThn48_N8S20759C1D0Ev),
  ABISELECT(352,212),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,100),
  ABISELECT(208,128),
  ABISELECT(128,72),
  ABISELECT(336,208),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20759C1D1Ev,_ZThn60_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20759C1D0Ev,_ZThn60_N8S20759C1D0Ev),
  ABISELECT(64,36),
  ABISELECT(320,196),
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20759C1D1Ev,_ZThn72_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20759C1D0Ev,_ZThn72_N8S20759C1D0Ev),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20759C1D1Ev,_ZThn92_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn136_N8S20759C1D0Ev,_ZThn92_N8S20759C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-16,-8),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev),
  ABISELECT(-192,-124),
  ABISELECT(16,8),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev),
  ABISELECT(-208,-132),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev),
  ABISELECT(-224,-144),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev),
  ABISELECT(-256,-160),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev),
  ABISELECT(-288,-188),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-288,-188),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C1D1Ev,_ZTv0_n20_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C1D0Ev,_ZTv0_n20_N8S20759C1D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-304,-200),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C1D1Ev,_ZTvn12_n20_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C1D0Ev,_ZTvn12_n20_N8S20759C1D0Ev),
  ABISELECT(-352,-232),
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-352,-232),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C1D1Ev,_ZTv0_n28_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C1D0Ev,_ZTv0_n28_N8S20759C1D0Ev),
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-368,-244),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C1D1Ev,_ZTvn12_n28_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C1D0Ev,_ZTvn12_n28_N8S20759C1D0Ev),
  ABISELECT(-408,-264),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C1D1Ev,_ZTvn32_n28_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C1D0Ev,_ZTvn32_n28_N8S20759C1D0Ev),
  ABISELECT(-432,-272),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-432,-272),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-448,-284),
  (VTBL_ENTRY)&(_ZTI8S20759C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20759C1D1Ev,_ZTvn12_n24_N8S20759C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S20759C1D0Ev,_ZTvn12_n24_N8S20759C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20759C1[];
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C4__A__8S20759C1[] = {
  ABISELECT(160,108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C4D1Ev,_ZThn108_N8S20759C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C4D0Ev,_ZThn108_N8S20759C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C4__A__8S20759C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern void _ZN8S20759C6D1Ev();
extern void _ZN8S20759C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C6__8S20759C1[] = {
  ABISELECT(40,36),
  ABISELECT(336,224),
  ABISELECT(272,180),
  ABISELECT(240,152),
  ABISELECT(208,136),
  ABISELECT(144,100),
  ABISELECT(160,108),
  ABISELECT(-16,-8),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&_ZN8S20759C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C6D0Ev,
};
extern void _ZN8S20759C7D1Ev();
extern void _ZN8S20759C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(192,124),
  ABISELECT(176,116),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&_ZN8S20759C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C7D0Ev,
};
extern void _ZN9S20759C12D1Ev();
extern void _ZN9S20759C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C128S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C12[0]),
  (VTBL_ENTRY)&_ZN9S20759C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C12D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn176_N8S20759C7D1Ev,_ZThn116_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn176_N8S20759C7D0Ev,_ZThn116_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-176,-116),
  ABISELECT(16,8),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C7D1Ev,_ZThn124_N8S20759C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C7D0Ev,_ZThn124_N8S20759C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C78S20759C6__8S20759C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20759C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev)();
extern void _ZN9S20759C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev)();
extern void _ZN9S20759C15D0Ev() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,188),
  ABISELECT(232,144),
  ABISELECT(200,116),
  ABISELECT(168,100),
  0,
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn168_N9S20759C15D1Ev,_ZThn100_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn168_N9S20759C15D0Ev,_ZThn100_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C16__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-168,-100),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn200_N9S20759C15D1Ev,_ZThn116_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn200_N9S20759C15D0Ev,_ZThn116_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-200,-116),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn232_N9S20759C15D1Ev,_ZThn144_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn232_N9S20759C15D0Ev,_ZThn144_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-232,-144),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-248,-156),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D1Ev,_ZTvn12_n20_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C15D0Ev,_ZTvn12_n20_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn88_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn88_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn296_N9S20759C15D1Ev,_ZThn188_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn296_N9S20759C15D0Ev,_ZThn188_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C19__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-296,-188),
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-296,-188),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-312,-200),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D1Ev,_ZTvn12_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S20759C15D0Ev,_ZTvn12_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D1Ev,_ZTvn32_n28_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S20759C15D0Ev,_ZTvn32_n28_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev)();
extern void ABISELECT(_ZThn104_N9S20759C15D1Ev,_ZThn64_N9S20759C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev)();
extern void ABISELECT(_ZThn104_N9S20759C15D0Ev,_ZThn64_N9S20759C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C158S20759C6__8S20759C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20759C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn108_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn108_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C4__8S20759C6__8S20759C1[] = {
  ABISELECT(-160,-108),
  ABISELECT(-16,-8),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn144_N8S20759C6D1Ev,_ZThn100_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn144_N8S20759C6D0Ev,_ZThn100_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C6__8S20759C1[] = {
  ABISELECT(-144,-100),
  ABISELECT(-144,-100),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn176_N8S20759C6D1Ev,_ZThn116_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn176_N8S20759C6D0Ev,_ZThn116_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C6__8S20759C1[] = {
  ABISELECT(-176,-116),
  ABISELECT(16,8),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn124_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn124_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C6__8S20759C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev)() __attribute__((weak));
extern void _ZN9S20759C152v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C15__8S20759C6__8S20759C1[] = {
  ABISELECT(104,64),
  0,
  ABISELECT(296,188),
  ABISELECT(232,144),
  ABISELECT(200,116),
  ABISELECT(168,100),
  ABISELECT(-40,-36),
  ABISELECT(152,88),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev),
  (VTBL_ENTRY)&_ZN9S20759C152v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S20759C6D1Ev,_ZThn136_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S20759C6D0Ev,_ZThn136_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C16__8S20759C6__8S20759C1[] = {
  ABISELECT(-208,-136),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn240_N8S20759C6D1Ev,_ZThn152_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn240_N8S20759C6D0Ev,_ZThn152_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S20759C6__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S20759C6D1Ev,_ZThn180_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S20759C6D0Ev,_ZThn180_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__8S20759C6__8S20759C1[] = {
  ABISELECT(-272,-180),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__8S20759C6__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D1Ev,_ZTvn12_n20_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S20759C6D0Ev,_ZTvn12_n20_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZThn336_N8S20759C6D1Ev,_ZThn224_N8S20759C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev)();
extern void ABISELECT(_ZThn336_N8S20759C6D0Ev,_ZThn224_N8S20759C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C19__8S20759C6__8S20759C1[] = {
  ABISELECT(-336,-224),
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-336,-224),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__8S20759C6__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-352,-236),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D1Ev,_ZTvn12_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S20759C6D0Ev,_ZTvn12_n28_N8S20759C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S20759C209S20759C19__8S20759C6__8S20759C1[] = {
  ABISELECT(-392,-256),
  (VTBL_ENTRY)&(_ZTI8S20759C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D1Ev,_ZTvn32_n28_N8S20759C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S20759C6D0Ev,_ZTvn32_n28_N8S20759C6D0Ev),
};
extern void _ZN9S20759C23D1Ev();
extern void _ZN9S20759C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C23__8S20759C1[] = {
  ABISELECT(352,212),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(176,100),
  ABISELECT(208,128),
  ABISELECT(128,72),
  ABISELECT(336,208),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&_ZN9S20759C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C23D0Ev,
};
extern void _ZN9S20759C24D1Ev();
extern void _ZN9S20759C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,196),
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&_ZN9S20759C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C24D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C16D1Ev,_ZThn116_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C16D0Ev,_ZThn116_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn112_N9S20759C16D1Ev,_ZThn60_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn112_N9S20759C16D0Ev,_ZThn60_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20759C20D1Ev,_ZThn60_N9S20759C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20759C20D0Ev,_ZThn60_N9S20759C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,88),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn112_N9S20759C24D1Ev,_ZThn60_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn112_N9S20759C24D0Ev,_ZThn60_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn192_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn192_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D1Ev,_ZTvn12_n20_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C24D0Ev,_ZTvn12_n20_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(40,28),
  ABISELECT(152,88),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D1Ev,_ZTv0_n16_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C24D0Ev,_ZTv0_n16_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn36_N9S20759C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn36_N9S20759C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C249S20759C23__8S20759C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20759C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C24__9S20759C23__8S20759C1[] = {
  ABISELECT(64,36),
  ABISELECT(320,196),
  ABISELECT(-40,-28),
  ABISELECT(112,60),
  ABISELECT(192,116),
  ABISELECT(160,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D1Ev,_ZThn12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C23D0Ev,_ZThn12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S20759C23D1Ev,_ZThn72_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S20759C23D0Ev,_ZThn72_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C23__8S20759C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C23__8S20759C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C23__8S20759C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C23__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D1Ev,_ZTvn12_n20_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C23D0Ev,_ZTvn12_n20_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C23__8S20759C1[] = {
  ABISELECT(24,16),
  ABISELECT(152,88),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D1Ev,_ZTv0_n16_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C23D0Ev,_ZTv0_n16_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn48_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn48_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S20759C23__8S20759C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZThn352_N9S20759C23D1Ev,_ZThn212_N9S20759C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev)();
extern void ABISELECT(_ZThn352_N9S20759C23D0Ev,_ZThn212_N9S20759C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C25__9S20759C23__8S20759C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  ABISELECT(-352,-212),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI9S20759C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D1Ev,_ZTvn12_n24_N9S20759C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S20759C23D0Ev,_ZTvn12_n24_N9S20759C23D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20759C2__8S20759C1[] = {
  ABISELECT(-152,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C2[0]),
};
extern void _ZN8S20759C4D1Ev();
extern void _ZN8S20759C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C4__A1__8S20759C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&_ZN8S20759C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S20759C4__A1__8S20759C1[] = {
  ABISELECT(16,8),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20759C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev),
};
extern void _ZN8S20759C8D1Ev();
extern void _ZN8S20759C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20759C8__8S20759C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&_ZN8S20759C8D1Ev,
  (VTBL_ENTRY)&_ZN8S20759C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S20759C8__8S20759C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20759C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev),
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C16__8S20759C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C16__8S20759C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C16__8S20759C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C16__8S20759C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C17__8S20759C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__8S20759C1[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C1[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C17__8S20759C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C17__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C17__8S20759C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void _ZN9S20759C19D1Ev();
extern void _ZN9S20759C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C19__8S20759C1[] = {
  ABISELECT(-296,-188),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&_ZN9S20759C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C19D0Ev,
};
extern void _ZN9S20759C20D1Ev();
extern void _ZN9S20759C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&_ZN9S20759C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C20D0Ev,
};
extern void _ZN9S20759C16D1Ev();
extern void _ZN9S20759C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&_ZN9S20759C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D1Ev,_ZTvn12_n20_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C16D0Ev,_ZTvn12_n20_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D1Ev,_ZTvn12_n20_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C20D0Ev,_ZTvn12_n20_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C1[] = {
  ABISELECT(312,200),
  ABISELECT(152,88),
  ABISELECT(312,200),
  (VTBL_ENTRY)&(_ZTI9S20759C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D1Ev,_ZTv0_n16_N9S20759C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C20D0Ev,_ZTv0_n16_N9S20759C20D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C20__9S20759C19__8S20759C1[] = {
  ABISELECT(-312,-200),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D1Ev,_ZThn12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C19D0Ev,_ZThn12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C19__8S20759C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C17__9S20759C19__8S20759C1[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D1Ev,_ZTv0_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20759C19D0Ev,_ZTv0_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D1Ev,_ZTvn12_n20_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S20759C19D0Ev,_ZTvn12_n20_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S20759C19__8S20759C1[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D1Ev,_ZTv0_n12_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C19D0Ev,_ZTv0_n12_N9S20759C19D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__9S20759C19__8S20759C1[] = {
  ABISELECT(296,188),
  ABISELECT(152,88),
  ABISELECT(296,188),
  (VTBL_ENTRY)&(_ZTI9S20759C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D1Ev,_ZTv0_n16_N9S20759C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20759C19D0Ev,_ZTv0_n16_N9S20759C19D0Ev),
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C18__A1__8S20759C1[] = {
  ABISELECT(152,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S20759C18D1Ev,_ZThn88_N9S20759C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S20759C18D0Ev,_ZThn88_N9S20759C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C18__A1__8S20759C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void _ZN9S20759C25D1Ev();
extern void _ZN9S20759C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C25__8S20759C1[] = {
  ABISELECT(-16,-4),
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&_ZN9S20759C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C25D0Ev,
};
extern void _ZN9S20759C17D1Ev();
extern void _ZN9S20759C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-176,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&_ZN9S20759C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C17D0Ev,
};
extern void _ZN9S20759C18D1Ev();
extern void _ZN9S20759C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C179S20759C25__A2__8S20759C1[] = {
  ABISELECT(-240,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&_ZN9S20759C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20759C18D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__8S20759C1[] = {
  ABISELECT(240,152),
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI9S20759C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C18__9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D1Ev,_ZThn12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C17D0Ev,_ZThn12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__8S20759C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20759C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D1Ev,_ZTv0_n12_N9S20759C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C17D0Ev,_ZTv0_n12_N9S20759C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S20759C25__8S20759C1[] = {
  ABISELECT(176,112),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20759C189S20759C17__9S20759C25__8S20759C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D1Ev,_ZThn12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20759C25D0Ev,_ZThn12_N9S20759C25D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S20759C25__8S20759C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20759C25[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D1Ev,_ZTv0_n12_N9S20759C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20759C25D0Ev,_ZTv0_n12_N9S20759C25D0Ev),
};
static  VTT_ENTRY vtt_S20759C1[] = {
  {&(_ZTV8S20759C1[18]),  18,162},
  {&(_tg__ZTV8S20759C4__A__8S20759C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S20759C4__A__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C6__8S20759C1[14]),  14,16},
  {&(_tg__ZTV8S20759C78S20759C6__8S20759C1[7]),  7,9},
  {&(_tg__ZTV9S20759C128S20759C78S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20759C8__8S20759C78S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20759C78S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C158S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV9S20759C16__9S20759C158S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C158S20759C6__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C19__9S20759C158S20759C6__8S20759C1[7]),  7,9},
  {&(_tg__ZTV9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20759C209S20759C19__9S20759C158S20759C6__8S20759C1[2]),  2,4},
  {&(_tg__ZTV9S20759C158S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S20759C158S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C4__8S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C8__8S20759C6__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C15__8S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV9S20759C16__8S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__8S20759C6__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__8S20759C6__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C19__8S20759C6__8S20759C1[7]),  7,9},
  {&(_tg__ZTV9S20759C209S20759C19__8S20759C6__8S20759C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S20759C209S20759C19__8S20759C6__8S20759C1[2]),  2,4},
  {&(_tg__ZTV9S20759C15__8S20759C6__8S20759C1[10]),  10,13},
  {&(_tg__ZTV9S20759C23__8S20759C1[9]),  9,11},
  {&(_tg__ZTV9S20759C249S20759C23__8S20759C1[8]),  8,10},
  {&(_tg__ZTV9S20759C209S20759C249S20759C23__A1__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C249S20759C23__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C249S20759C23__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C249S20759C23__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C249S20759C23__A1__8S20759C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C249S20759C23__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C249S20759C23__8S20759C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S20759C249S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C24__9S20759C23__8S20759C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C23__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C23__8S20759C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S20759C23__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C25__9S20759C23__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C189S20759C179S20759C25__A2__9S20759C23__8S20759C1[3]),  3,5},
  {&(_ZTV8S20759C1[81]),  81,162},
  {&(_ZTV8S20759C1[84]),  84,162},
  {&(_ZTV8S20759C1[34]),  34,162},
  {&(_ZTV8S20759C1[90]),  90,162},
  {&(_ZTV8S20759C1[96]),  96,162},
  {&(_ZTV8S20759C1[101]),  101,162},
  {&(_ZTV8S20759C1[46]),  46,162},
  {&(_ZTV8S20759C1[109]),  109,162},
  {&(_ZTV8S20759C1[114]),  114,162},
  {&(_ZTV8S20759C1[121]),  121,162},
  {&(_ZTV8S20759C1[126]),  126,162},
  {&(_ZTV8S20759C1[135]),  135,162},
  {&(_ZTV8S20759C1[143]),  143,162},
  {&(_ZTV8S20759C1[147]),  147,162},
  {&(_ZTV8S20759C1[46]),  46,162},
  {&(_ZTV8S20759C1[62]),  62,162},
  {&(_ZTV8S20759C1[72]),  72,162},
  {&(_ZTV8S20759C1[155]),  155,162},
  {&(_ZTV8S20759C1[160]),  160,162},
  {&(_tg__ZTV8S20759C2__8S20759C1[3]),  3,3},
  {&(_tg__ZTV8S20759C4__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S20759C4__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20759C8__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S20759C8__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C16__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C16__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C16__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C16__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C16__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C17__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C19__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C209S20759C19__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20759C169S20759C209S20759C19__A1__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S20759C169S20759C209S20759C19__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C169S20759C209S20759C19__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C169S20759C209S20759C19__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C209S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C209S20759C19__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C209S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C209S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C209S20759C19__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C20__9S20759C19__8S20759C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C17__9S20759C19__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S20759C19__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__A1__9S20759C19__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C18__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C18__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C25__8S20759C1[5]),  5,7},
  {&(_tg__ZTV9S20759C179S20759C25__A1__8S20759C1[4]),  4,6},
  {&(_tg__ZTV9S20759C189S20759C179S20759C25__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S20759C189S20759C179S20759C25__A2__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C179S20759C25__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C18__9S20759C179S20759C25__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C179S20759C25__A1__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S20759C25__8S20759C1[3]),  3,5},
  {&(_tg__ZTV9S20759C189S20759C17__9S20759C25__8S20759C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S20759C25__8S20759C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20759C1[];
extern  VTBL_ENTRY _ZTV8S20759C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20759C1[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D0Ev,_ZTv0_n12_N9S20759C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C18D0Ev,_ZThn88_N9S20759C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C18D1Ev,_ZTv0_n12_N9S20759C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C18D1Ev,_ZThn88_N9S20759C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D0Ev,_ZTv0_n12_N8S20759C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D0Ev,_ZThn8_N8S20759C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C8D1Ev,_ZTv0_n12_N8S20759C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20759C8D1Ev,_ZThn8_N8S20759C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D0Ev,_ZTv0_n24_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20759C23D0Ev,_ZThn212_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C23D1Ev,_ZTv0_n24_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20759C23D1Ev,_ZThn212_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D0Ev,_ZTv0_n20_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D0Ev,_ZThn128_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C23D1Ev,_ZTv0_n20_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20759C23D1Ev,_ZThn128_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D0Ev,_ZTv0_n12_N9S20759C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D0Ev,_ZThn48_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C23D0Ev,_ZThn100_N9S20759C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C23D0Ev,_ZThn72_N9S20759C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C23D1Ev,_ZTv0_n12_N9S20759C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20759C23D1Ev,_ZThn48_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20759C23D1Ev,_ZThn100_N9S20759C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20759C23D1Ev,_ZThn72_N9S20759C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D0Ev,_ZTv0_n20_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C24D0Ev,_ZThn116_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C24D1Ev,_ZTv0_n20_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C24D1Ev,_ZThn116_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D0Ev,_ZTv0_n12_N9S20759C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D0Ev,_ZThn36_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D0Ev,_ZThn88_N9S20759C24D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C24D0Ev,_ZThn60_N9S20759C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C24D1Ev,_ZTv0_n12_N9S20759C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C24D1Ev,_ZThn36_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C24D1Ev,_ZThn88_N9S20759C24D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C24D1Ev,_ZThn60_N9S20759C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D0Ev,_ZTv0_n20_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C20D0Ev,_ZThn116_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C20D1Ev,_ZTv0_n20_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C20D1Ev,_ZThn116_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D0Ev,_ZTv0_n12_N9S20759C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C20D0Ev,_ZThn60_N9S20759C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D0Ev,_ZThn88_N9S20759C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C20D1Ev,_ZTv0_n12_N9S20759C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C20D1Ev,_ZThn60_N9S20759C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C20D1Ev,_ZThn88_N9S20759C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D0Ev,_ZTv0_n20_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D0Ev,_ZThn44_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C16D0Ev,_ZThn116_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C16D1Ev,_ZTv0_n20_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20759C16D1Ev,_ZThn44_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20759C16D1Ev,_ZThn116_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D0Ev,_ZTv0_n12_N9S20759C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D0Ev,_ZThn16_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C16D0Ev,_ZThn60_N9S20759C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C16D0Ev,_ZThn88_N9S20759C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C16D1Ev,_ZTv0_n12_N9S20759C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20759C16D1Ev,_ZThn16_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20759C16D1Ev,_ZThn60_N9S20759C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20759C16D1Ev,_ZThn88_N9S20759C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D0Ev,_ZTv0_n28_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20759C6D0Ev,_ZThn224_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C6D1Ev,_ZTv0_n28_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20759C6D1Ev,_ZThn224_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D0Ev,_ZTv0_n20_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20759C6D0Ev,_ZThn180_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C6D1Ev,_ZTv0_n20_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S20759C6D1Ev,_ZThn180_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D0Ev,_ZTv0_n24_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C6D0Ev,_ZThn136_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C6D1Ev,_ZTv0_n24_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C6D1Ev,_ZThn136_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D0Ev,_ZTv0_n12_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20759C6D0Ev,_ZThn152_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D0Ev,_ZThn124_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20759C6D0Ev,_ZThn100_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C6D1Ev,_ZTv0_n12_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20759C6D1Ev,_ZThn152_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C6D1Ev,_ZThn124_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S20759C6D1Ev,_ZThn100_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D0Ev,_ZTv0_n16_N8S20759C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D0Ev,_ZThn36_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C6D0Ev,_ZThn116_N8S20759C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D0Ev,_ZThn108_N8S20759C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C6D1Ev,_ZTv0_n16_N8S20759C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20759C6D1Ev,_ZThn36_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C6D1Ev,_ZThn116_N8S20759C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C6D1Ev,_ZThn108_N8S20759C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D0Ev,_ZTv0_n28_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20759C15D0Ev,_ZThn188_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20759C15D1Ev,_ZTv0_n28_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S20759C15D1Ev,_ZThn188_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D0Ev,_ZTv0_n20_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20759C15D0Ev,_ZThn144_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20759C15D1Ev,_ZTv0_n20_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20759C15D1Ev,_ZThn144_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D0Ev,_ZTv0_n12_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20759C15D0Ev,_ZThn64_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D0Ev,_ZThn88_N9S20759C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20759C15D0Ev,_ZThn116_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20759C15D1Ev,_ZTv0_n12_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20759C15D1Ev,_ZThn64_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20759C15D1Ev,_ZThn88_N9S20759C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20759C15D1Ev,_ZThn116_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D0Ev,_ZTv0_n24_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C15D0Ev,_ZThn100_N9S20759C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20759C15D1Ev,_ZTv0_n24_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20759C15D1Ev,_ZThn100_N9S20759C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D0Ev,_ZTv0_n16_N9S20759C15D0Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20759C15D1Ev,_ZTv0_n16_N9S20759C15D1Ev), // 
  (VTBL_ENTRY)_ZN9S20759C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D0Ev,_ZTv0_n12_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C7D0Ev,_ZThn124_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C7D1Ev,_ZTv0_n12_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C7D1Ev,_ZThn124_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D0Ev,_ZTv0_n16_N8S20759C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C7D0Ev,_ZThn116_N8S20759C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C7D1Ev,_ZTv0_n16_N8S20759C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C7D1Ev,_ZThn116_N8S20759C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D0Ev,_ZTv0_n12_N8S20759C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C4D0Ev,_ZThn108_N8S20759C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C4D1Ev,_ZTv0_n12_N8S20759C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C4D1Ev,_ZThn108_N8S20759C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C1D0Ev,_ZTv0_n28_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20759C1D0Ev,_ZThn232_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20759C1D1Ev,_ZTv0_n28_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S20759C1D1Ev,_ZThn232_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C1D0Ev,_ZTv0_n20_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20759C1D0Ev,_ZThn188_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20759C1D1Ev,_ZTv0_n20_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S20759C1D1Ev,_ZThn188_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C1D0Ev,_ZTv0_n24_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20759C1D0Ev,_ZThn272_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20759C1D0Ev,_ZThn144_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20759C1D1Ev,_ZTv0_n24_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S20759C1D1Ev,_ZThn272_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20759C1D1Ev,_ZThn144_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C1D0Ev,_ZTv0_n12_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C1D0Ev,_ZThn160_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C1D0Ev,_ZThn132_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C1D0Ev,_ZThn108_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20759C1D1Ev,_ZTv0_n12_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S20759C1D1Ev,_ZThn160_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20759C1D1Ev,_ZThn132_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20759C1D1Ev,_ZThn108_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C1D0Ev,_ZTv0_n16_N8S20759C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C1D0Ev,_ZThn124_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C1D0Ev,_ZThn116_N8S20759C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C1D0Ev,_ZThn44_N8S20759C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20759C1D1Ev,_ZTv0_n16_N8S20759C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20759C1D1Ev,_ZThn124_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20759C1D1Ev,_ZThn116_N8S20759C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S20759C1D1Ev,_ZThn44_N8S20759C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20759C1 = {  "S20759C1", // class name
  bases_S20759C1, 42,
  &(vtc_S20759C1[0]), // expected_vtbl_contents
  &(vtt_S20759C1[0]), // expected_vtt_contents
  ABISELECT(688,440), // object size
  NSPAIRA(_ZTI8S20759C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20759C1),162, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20759C1),125, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C5  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s20469c5f0;
  ~S20469C5(); // tgen
  S20469C5(); // tgen
};
//SIG(-1 S20469C5) C1{ BC2{ m} VBC3{ m} FC2}


S20469C5 ::~S20469C5(){ note_dtor("S20469C5", this);} // tgen
S20469C5 ::S20469C5(){ note_ctor("S20469C5", this);} // tgen

static void Test_S20469C5()
{
  extern Class_Descriptor cd_S20469C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20469C5, buf);
    S20469C5 *dp, &lv = *(dp=new (buf) S20469C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20469C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C5)");
    check_base_class_offset(lv, (S4228C37*), 0, "S20469C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S20469C5");
    check_field_offset(lv, s20469c5f0, ABISELECT(8,4), "S20469C5.s20469c5f0");
    test_class_info(&lv, &cd_S20469C5);
    dp->~S20469C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C5(Test_S20469C5, "S20469C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20469C5C1Ev();
extern void _ZN8S20469C5D1Ev();
Name_Map name_map_S20469C5[] = {
  NSPAIR(_ZN8S20469C5C1Ev),
  NSPAIR(_ZN8S20469C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20469C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20469C5[];
static  VTBL_ENTRY vtc_S20469C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern VTBL_ENTRY _ZTV8S20469C5[];
static  VTT_ENTRY vtt_S20469C5[] = {
  {&(_ZTV8S20469C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
Class_Descriptor cd_S20469C5 = {  "S20469C5", // class name
  bases_S20469C5, 2,
  &(vtc_S20469C5[0]), // expected_vtbl_contents
  &(vtt_S20469C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20469C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20469C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C5),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  S20469C8  : S4228C27 , virtual S4228C37 , virtual S20469C5 {
  void *s20469c8f0;
  ~S20469C8(); // tgen
  S20469C8(); // tgen
};
//SIG(-1 S20469C8) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S20469C8 ::~S20469C8(){ note_dtor("S20469C8", this);} // tgen
S20469C8 ::S20469C8(){ note_ctor("S20469C8", this);} // tgen

static void Test_S20469C8()
{
  extern Class_Descriptor cd_S20469C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20469C8, buf);
    S20469C8 *dp, &lv = *(dp=new (buf) S20469C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20469C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C8)");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S20469C8");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S20469C8");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(16,8), "S20469C8");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(25,13), "S20469C8");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(16,8), "S20469C8");
    check_field_offset(lv, s20469c8f0, ABISELECT(8,4), "S20469C8.s20469c8f0");
    test_class_info(&lv, &cd_S20469C8);
    dp->~S20469C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C8(Test_S20469C8, "S20469C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20469C8C1Ev();
extern void _ZN8S20469C8D1Ev();
Name_Map name_map_S20469C8[] = {
  NSPAIR(_ZN8S20469C8C1Ev),
  NSPAIR(_ZN8S20469C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
static Base_Class bases_S20469C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C8[];
static  VTBL_ENTRY vtc_S20469C8[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
extern VTBL_ENTRY _ZTV8S20469C8[];
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C8[] = {
  {&(_ZTV8S20469C8[5]),  5,8},
  {&(_ZTV8S20469C8[8]),  8,8},
  {&(_tg__ZTV8S20469C5__8S20469C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
Class_Descriptor cd_S20469C8 = {  "S20469C8", // class name
  bases_S20469C8, 5,
  &(vtc_S20469C8[0]), // expected_vtbl_contents
  &(vtt_S20469C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20469C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20469C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C8),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C3  : S3423C8_nt , virtual S20469C5 , S20469C8 , S4228C27 {
  char s20469c3f0;
  virtual  ~S20469C3(); // _ZN8S20469C3D2Ev
  S20469C3(); // tgen
};
//SIG(-1 S20469C3) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S20469C3 ::~S20469C3(){ note_dtor("S20469C3", this);}
S20469C3 ::S20469C3(){ note_ctor("S20469C3", this);} // tgen

static void Test_S20469C3()
{
  extern Class_Descriptor cd_S20469C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20469C3, buf);
    S20469C3 *dp, &lv = *(dp=new (buf) S20469C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20469C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C3)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S20469C3");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(24,16), "S20469C3");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(33,21), "S20469C3");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(24,16), "S20469C3");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(24,16), "S20469C3");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), 0, "S20469C3");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C3");
    check_base_class_offset(lv, (S20469C8*), 0, "S20469C3");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S20469C3");
    check_field_offset(lv, s20469c3f0, ABISELECT(20,12), "S20469C3.s20469c3f0");
    test_class_info(&lv, &cd_S20469C3);
    dp->~S20469C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C3(Test_S20469C3, "S20469C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20469C3C1Ev();
extern void _ZN8S20469C3D2Ev();
Name_Map name_map_S20469C3[] = {
  NSPAIR(_ZN8S20469C3C1Ev),
  NSPAIR(_ZN8S20469C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20469C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C3[];
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY vtc_S20469C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
extern VTBL_ENTRY _ZTV8S20469C3[];
static  VTBL_ENTRY _tg__ZTV8S20469C8__8S20469C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__8S20469C3[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C3[] = {
  {&(_ZTV8S20469C3[5]),  5,10},
  {&(_tg__ZTV8S20469C8__8S20469C3[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__8S20469C3[3]),  3,3},
  {&(_ZTV8S20469C3[10]),  10,10},
  {&(_tg__ZTV8S20469C5__8S20469C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
Class_Descriptor cd_S20469C3 = {  "S20469C3", // class name
  bases_S20469C3, 8,
  &(vtc_S20469C3[0]), // expected_vtbl_contents
  &(vtt_S20469C3[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20469C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20469C3),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C2  : virtual S20469C3 {
  int s20469c2f0;
  virtual  ~S20469C2(); // _ZN8S20469C2D2Ev
  S20469C2(); // tgen
};
//SIG(-1 S20469C2) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S20469C2 ::~S20469C2(){ note_dtor("S20469C2", this);}
S20469C2 ::S20469C2(){ note_ctor("S20469C2", this);} // tgen

static void Test_S20469C2()
{
  extern Class_Descriptor cd_S20469C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20469C2, buf);
    S20469C2 *dp, &lv = *(dp=new (buf) S20469C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20469C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(32,16), "S20469C2");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(40,24), "S20469C2");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C2");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(40,24), "S20469C2");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(40,24), "S20469C2");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(16,8), "S20469C2");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C2");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(16,8), "S20469C2");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(36,20), "S20469C2");
    check_base_class_offset(lv, (S20469C3*), ABISELECT(16,8), "S20469C2");
    check_field_offset(lv, s20469c2f0, ABISELECT(8,4), "S20469C2.s20469c2f0");
    test_class_info(&lv, &cd_S20469C2);
    dp->~S20469C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C2(Test_S20469C2, "S20469C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S20469C2C1Ev();
extern void _ZN8S20469C2D2Ev();
Name_Map name_map_S20469C2[] = {
  NSPAIR(_ZN8S20469C2C1Ev),
  NSPAIR(_ZN8S20469C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
static Base_Class bases_S20469C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C5,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C8,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C2[];
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C2[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern VTBL_ENTRY _ZTV8S20469C2[];
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__8S20469C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__8S20469C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C2[] = {
  {&(_ZTV8S20469C2[6]),  6,19},
  {&(_ZTV8S20469C2[14]),  14,19},
  {&(_ZTV8S20469C2[19]),  19,19},
  {&(_tg__ZTV8S20469C3__8S20469C2[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__8S20469C2[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C2[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__8S20469C2[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C2 = {  "S20469C2", // class name
  bases_S20469C2, 9,
  &(vtc_S20469C2[0]), // expected_vtbl_contents
  &(vtt_S20469C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S20469C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20469C2),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C2),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C11_nt  : virtual S4228C37 , S4228C27 {
  ~S20469C11_nt(); // tgen
  S20469C11_nt(); // tgen
};
//SIG(-1 S20469C11_nt) C1{ VBC2{ m} BC3{ m}}


S20469C11_nt ::~S20469C11_nt(){ note_dtor("S20469C11_nt", this);} // tgen
S20469C11_nt ::S20469C11_nt(){ note_ctor("S20469C11_nt", this);} // tgen

//skip512 S20469C11_nt

#else // __cplusplus

extern void _ZN12S20469C11_ntC1Ev();
extern void _ZN12S20469C11_ntD1Ev();
Name_Map name_map_S20469C11_nt[] = {
  NSPAIR(_ZN12S20469C11_ntC1Ev),
  NSPAIR(_ZN12S20469C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S20469C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
static  VTBL_ENTRY vtc_S20469C11_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern VTBL_ENTRY _ZTV12S20469C11_nt[];
static  VTT_ENTRY vtt_S20469C11_nt[] = {
  {&(_ZTV12S20469C11_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
VTBL_ENTRY *P__ZTI12S20469C11_nt = _ZTI12S20469C11_nt; 
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
Class_Descriptor cd_S20469C11_nt = {  "S20469C11_nt", // class name
  bases_S20469C11_nt, 2,
  &(vtc_S20469C11_nt[0]), // expected_vtbl_contents
  &(vtt_S20469C11_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20469C11_nt),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV12S20469C11_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20469C11_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  S20469C12  : S20469C8 {
  __tsi64 s20469c12f0[10];
  virtual  ~S20469C12(); // _ZN9S20469C12D2Ev
  S20469C12(); // tgen
};
//SIG(-1 S20469C12) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S20469C12 ::~S20469C12(){ note_dtor("S20469C12", this);}
S20469C12 ::S20469C12(){ note_ctor("S20469C12", this);} // tgen

static void Test_S20469C12()
{
  extern Class_Descriptor cd_S20469C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S20469C12, buf);
    S20469C12 *dp, &lv = *(dp=new (buf) S20469C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S20469C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C12)");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), 0, "S20469C12");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C12");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(96,88), "S20469C12");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(105,93), "S20469C12");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(96,88), "S20469C12");
    check_base_class_offset(lv, (S20469C8*), 0, "S20469C12");
    check_field_offset(lv, s20469c12f0, ABISELECT(16,8), "S20469C12.s20469c12f0");
    test_class_info(&lv, &cd_S20469C12);
    dp->~S20469C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C12(Test_S20469C12, "S20469C12", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN9S20469C12C1Ev();
extern void _ZN9S20469C12D2Ev();
Name_Map name_map_S20469C12[] = {
  NSPAIR(_ZN9S20469C12C1Ev),
  NSPAIR(_ZN9S20469C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
static Base_Class bases_S20469C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    ABISELECT(96,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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C5,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20469C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C12[];
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY vtc_S20469C12[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
extern VTBL_ENTRY _ZTV9S20469C12[];
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C12[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C12[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C12[] = {
  {&(_ZTV9S20469C12[5]),  5,10},
  {&(_tg__ZTV8S20469C8__9S20469C12[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C12[3]),  3,3},
  {&(_ZTV9S20469C12[10]),  10,10},
  {&(_tg__ZTV8S20469C5__9S20469C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
Class_Descriptor cd_S20469C12 = {  "S20469C12", // class name
  bases_S20469C12, 6,
  &(vtc_S20469C12[0]), // expected_vtbl_contents
  &(vtt_S20469C12[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI9S20469C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20469C12),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C9  : virtual S4228C23 , virtual S20469C2 , virtual S20469C11_nt , virtual S20469C12 {
  virtual  ~S20469C9(); // _ZN8S20469C9D2Ev
  S20469C9(); // tgen
};
//SIG(-1 S20469C9) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S20469C9 ::~S20469C9(){ note_dtor("S20469C9", this);}
S20469C9 ::S20469C9(){ note_ctor("S20469C9", this);} // tgen

static void Test_S20469C9()
{
  extern Class_Descriptor cd_S20469C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S20469C9, buf);
    S20469C9 *dp, &lv = *(dp=new (buf) S20469C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S20469C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C9)");
    check_base_class_offset(lv, (S4228C23*), 0, "S20469C9");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(40,20), "S20469C9");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(48,28), "S20469C9");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(57,33), "S20469C9");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(48,28), "S20469C9");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(48,28), "S20469C9");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(48,28), "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(24,12), "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C9");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C9");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(24,12), "S20469C9");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(44,24), "S20469C9");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(24,12), "S20469C9");
    check_base_class_offset(lv, (S20469C2*), ABISELECT(8,4), "S20469C9");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C9");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C9");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(64,36), "S20469C9");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(64,36), "S20469C9");
    check_base_class_offset(lv, (S20469C12*), ABISELECT(64,36), "S20469C9");
    test_class_info(&lv, &cd_S20469C9);
    dp->~S20469C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C9(Test_S20469C9, "S20469C9", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S20469C9C1Ev();
extern void _ZN8S20469C9D2Ev();
Name_Map name_map_S20469C9[] = {
  NSPAIR(_ZN8S20469C9C1Ev),
  NSPAIR(_ZN8S20469C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
static Base_Class bases_S20469C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3423C8_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_S4228C37,    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_S4228C27,    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
    4, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //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
    7, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C9[];
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S20469C9D1Ev,_ZThn36_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S20469C9D0Ev,_ZThn36_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C9[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20469C9[];
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__8S20469C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__8S20469C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__8S20469C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__8S20469C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__8S20469C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTT_ENTRY vtt_S20469C9[] = {
  {&(_ZTV8S20469C9[10]),  10,40},
  {&(_ZTV8S20469C9[19]),  19,40},
  {&(_ZTV8S20469C9[27]),  27,40},
  {&(_ZTV8S20469C9[32]),  32,40},
  {&(_ZTV8S20469C9[10]),  10,40},
  {&(_ZTV8S20469C9[38]),  38,40},
  {&(_tg__ZTV8S20469C2__8S20469C9[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__8S20469C9[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C3__8S20469C9[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__8S20469C9[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C9[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__8S20469C9[3]),  3,3},
  {&(_tg__ZTV9S20469C12__8S20469C9[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__8S20469C9[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C9[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__8S20469C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20469C9D0Ev,_ZThn36_N8S20469C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20469C9D1Ev,_ZThn36_N8S20469C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C9 = {  "S20469C9", // class name
  bases_S20469C9, 16,
  &(vtc_S20469C9[0]), // expected_vtbl_contents
  &(vtt_S20469C9[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S20469C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20469C9),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C9),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C16  : S4228C27 , S20469C11_nt , S20469C5 {
  virtual  ~S20469C16(); // _ZN9S20469C16D2Ev
  S20469C16(); // tgen
};
//SIG(-1 S20469C16) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S20469C16 ::~S20469C16(){ note_dtor("S20469C16", this);}
S20469C16 ::S20469C16(){ note_ctor("S20469C16", this);} // tgen

static void Test_S20469C16()
{
  extern Class_Descriptor cd_S20469C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20469C16, buf);
    S20469C16 *dp, &lv = *(dp=new (buf) S20469C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20469C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C16)");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(8,4), "S20469C16");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C16");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C16");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C16");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(8,4), "S20469C16");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(17,9), "S20469C16");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(8,4), "S20469C16");
    test_class_info(&lv, &cd_S20469C16);
    dp->~S20469C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C16(Test_S20469C16, "S20469C16", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20469C16C1Ev();
extern void _ZN9S20469C16D2Ev();
Name_Map name_map_S20469C16[] = {
  NSPAIR(_ZN9S20469C16C1Ev),
  NSPAIR(_ZN9S20469C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
static Base_Class bases_S20469C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    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_S20469C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C16[];
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY vtc_S20469C16[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern VTBL_ENTRY _ZTV9S20469C16[];
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C16[] = {
  {&(_ZTV9S20469C16[4]),  4,9},
  {&(_tg__ZTV12S20469C11_nt__9S20469C16[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16[3]),  3,3},
  {&(_ZTV9S20469C16[9]),  9,9},
};
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
Class_Descriptor cd_S20469C16 = {  "S20469C16", // class name
  bases_S20469C16, 7,
  &(vtc_S20469C16[0]), // expected_vtbl_contents
  &(vtt_S20469C16[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20469C16),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20469C16),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C17  : virtual S20469C8 {
  char s20469c17f0:8;
  ~S20469C17(); // tgen
  S20469C17(); // tgen
};
//SIG(-1 S20469C17) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S20469C17 ::~S20469C17(){ note_dtor("S20469C17", this);} // tgen
S20469C17 ::S20469C17(){ note_ctor("S20469C17", this);} // tgen

static void Test_S20469C17()
{
  extern Class_Descriptor cd_S20469C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20469C17, buf);
    S20469C17 *dp, &lv = *(dp=new (buf) S20469C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20469C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C17)");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(16,8), "S20469C17");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C17");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(32,16), "S20469C17");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C17");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(32,16), "S20469C17");
    check_base_class_offset(lv, (S20469C8*), ABISELECT(16,8), "S20469C17");
    set_bf_and_test(lv, s20469c17f0, ABISELECT(8,4), 0, 8, 1, "S20469C17");
    set_bf_and_test(lv, s20469c17f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S20469C17");
    test_class_info(&lv, &cd_S20469C17);
    dp->~S20469C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C17(Test_S20469C17, "S20469C17", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20469C17C1Ev();
extern void _ZN9S20469C17D1Ev();
Name_Map name_map_S20469C17[] = {
  NSPAIR(_ZN9S20469C17C1Ev),
  NSPAIR(_ZN9S20469C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
static Base_Class bases_S20469C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C5,    ABISELECT(32,16), //bcp->offset
    11, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(16,8), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C17[];
static  VTBL_ENTRY vtc_S20469C17[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern VTBL_ENTRY _ZTV9S20469C17[];
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C17[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C17[] = {
  {&(_ZTV9S20469C17[6]),  6,14},
  {&(_ZTV9S20469C17[11]),  11,14},
  {&(_ZTV9S20469C17[14]),  14,14},
  {&(_tg__ZTV8S20469C8__9S20469C17[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C17[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
Class_Descriptor cd_S20469C17 = {  "S20469C17", // class name
  bases_S20469C17, 6,
  &(vtc_S20469C17[0]), // expected_vtbl_contents
  &(vtt_S20469C17[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20469C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20469C17),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C17),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C15  : virtual S20469C16 , virtual S20469C8 , S20469C17 , virtual S3423C8_nt , S20469C2 {
  ~S20469C15(); // tgen
  S20469C15(); // tgen
};
//SIG(-1 S20469C15) C1{ VBC2{ BC3{ m} BC4{ VBC5{ m} BC3} BC6{ BC5 VBC3 FC5} vd} VBC7{ BC3 VBC5 VBC6 Fp} BC8{ VBC7 Fc:8} VBC9{ m Fi} BC10{ VBC11{ BC9 VBC6 BC7 BC3 vd Fc} vd Fi}}


S20469C15 ::~S20469C15(){ note_dtor("S20469C15", this);} // tgen
S20469C15 ::S20469C15(){ note_ctor("S20469C15", this);} // tgen

static void Test_S20469C15()
{
  extern Class_Descriptor cd_S20469C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S20469C15, buf);
    S20469C15 *dp, &lv = *(dp=new (buf) S20469C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S20469C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C15)");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(40,20), "S20469C15");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C15");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C15");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C15");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C15");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C15");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), 0, "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C15");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C15");
    check_base_class_offset(lv, (S20469C16*), ABISELECT(32,16), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(56,28), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(72,36), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(72,36), "S20469C15");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(72,36), "S20469C15");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(72,36), "S20469C15");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*), ABISELECT(56,28), "S20469C15");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(56,28), "S20469C15");
    check_base_class_offset(lv, (S20469C17*), 0, "S20469C15");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(84,44), "S20469C15");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(104,56), "S20469C15");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C15");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C15");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(108,60), "S20469C15");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(88,48), "S20469C15");
    check_base_class_offset(lv, (S20469C2*), ABISELECT(16,8), "S20469C15");
    test_class_info(&lv, &cd_S20469C15);
    dp->~S20469C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C15(Test_S20469C15, "S20469C15", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN9S20469C15C1Ev();
extern void _ZN9S20469C15D1Ev();
Name_Map name_map_S20469C15[] = {
  NSPAIR(_ZN9S20469C15C1Ev),
  NSPAIR(_ZN9S20469C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
static Base_Class bases_S20469C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20469C11_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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C5,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(72,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20469C17,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_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
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(108,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
    18, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(88,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C15[];
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C15[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20469C15[];
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C15[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__9S20469C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__9S20469C15[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C15[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C15[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C15[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C15[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C15[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__A1__9S20469C15[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C15[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTT_ENTRY vtt_S20469C15[] = {
  {&(_ZTV9S20469C15[9]),  9,45},
  {&(_tg__ZTV9S20469C17__9S20469C15[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__9S20469C15[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C15[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__9S20469C15[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__9S20469C15[3]),  3,3},
  {&(_ZTV9S20469C15[24]),  24,45},
  {&(_ZTV9S20469C15[29]),  29,45},
  {&(_ZTV9S20469C15[34]),  34,45},
  {&(_ZTV9S20469C15[37]),  37,45},
  {&(_ZTV9S20469C15[17]),  17,45},
  {&(_ZTV9S20469C15[43]),  43,45},
  {&(_tg__ZTV9S20469C16__9S20469C15[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C15[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C15[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__A1__9S20469C15[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C15[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C15 = {  "S20469C15", // class name
  bases_S20469C15, 20,
  &(vtc_S20469C15[0]), // expected_vtbl_contents
  &(vtt_S20469C15[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI9S20469C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20469C15),45, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C15),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C18  : S3423C8_nt , S4228C23 , S20469C16 , virtual S20469C17 , S20469C12 {
  virtual  ~S20469C18(); // _ZN9S20469C18D2Ev
  S20469C18(); // tgen
};
//SIG(-1 S20469C18) C1{ BC2{ m Fi} BC3{ m} BC4{ BC5{ m} BC6{ VBC7{ m} BC5} BC8{ BC7 VBC5 FC7} vd} VBC9{ VBC10{ BC5 VBC7 VBC8 Fp} Fc:8} BC11{ BC10 vd FL[10]} vd}


 S20469C18 ::~S20469C18(){ note_dtor("S20469C18", this);}
S20469C18 ::S20469C18(){ note_ctor("S20469C18", this);} // tgen

static void Test_S20469C18()
{
  extern Class_Descriptor cd_S20469C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,33)];
    init_test(&cd_S20469C18, buf);
    S20469C18 *dp, &lv = *(dp=new (buf) S20469C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,128), "sizeof(S20469C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C18)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(20,12), "S20469C18");
    check_base_class_offset(lv, (S4228C23*), 0, "S20469C18");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(8,4), "S20469C18");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C18");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C18");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), 0, "S20469C18");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), 0, "S20469C18");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(8,4), "S20469C18");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), ABISELECT(120,104), "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(120,104), "S20469C18");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(8,4), "S20469C18");
    check_base_class_offset(lv, (S20469C16*), 0, "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(136,112), "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(152,120), "S20469C18");
    /*is_ambiguous_... S20469C18::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(152,120), "S20469C18");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(152,120), "S20469C18");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(136,112), "S20469C18");
    check_base_class_offset(lv, (S20469C17*), ABISELECT(120,104), "S20469C18");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(24,16), "S20469C18");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(24,16), "S20469C18");
    check_base_class_offset(lv, (S20469C12*), ABISELECT(24,16), "S20469C18");
    test_class_info(&lv, &cd_S20469C18);
    dp->~S20469C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C18(Test_S20469C18, "S20469C18", ABISELECT(168,128));

#else // __cplusplus

extern void _ZN9S20469C18C1Ev();
extern void _ZN9S20469C18D2Ev();
Name_Map name_map_S20469C18[] = {
  NSPAIR(_ZN9S20469C18C1Ev),
  NSPAIR(_ZN9S20469C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
static Base_Class bases_S20469C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    ABISELECT(120,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
    8, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20469C16,    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_S4228C27,    ABISELECT(136,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(152,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
    12, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(152,120), //bcp->offset
    30, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(136,112), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20469C17,    ABISELECT(120,104), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(24,16), //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
    7, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(24,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C18[];
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY vtc_S20469C18[] = {
  ABISELECT(152,120),
  ABISELECT(136,112),
  ABISELECT(120,104),
  ABISELECT(120,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
  ABISELECT(112,100),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  ABISELECT(96,88),
  ABISELECT(128,104),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
  0,
  ABISELECT(32,16),
  ABISELECT(-120,-104),
  ABISELECT(16,8),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-136,-112),
  ABISELECT(-136,-112),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  ABISELECT(-32,-16),
  ABISELECT(-152,-120),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern VTBL_ENTRY _ZTV9S20469C18[];
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C18[] = {
  ABISELECT(120,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18[] = {
  ABISELECT(112,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C18[] = {
  ABISELECT(112,100),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18[] = {
  ABISELECT(96,88),
  ABISELECT(128,104),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__9S20469C18[] = {
  ABISELECT(96,88),
  ABISELECT(128,104),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(-120,-104),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__9S20469C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-136,-112),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-136,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C18[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C18[] = {
  {&(_ZTV9S20469C18[7]),  7,33},
  {&(_tg__ZTV9S20469C16__9S20469C18[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C18[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__9S20469C18[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__9S20469C18[3]),  3,3},
  {&(_ZTV9S20469C18[12]),  12,33},
  {&(_ZTV9S20469C18[25]),  25,33},
  {&(_ZTV9S20469C18[30]),  30,33},
  {&(_ZTV9S20469C18[33]),  33,33},
  {&(_ZTV9S20469C18[17]),  17,33},
  {&(_tg__ZTV9S20469C17__9S20469C18[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__9S20469C18[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C18[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C18[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
Class_Descriptor cd_S20469C18 = {  "S20469C18", // class name
  bases_S20469C18, 18,
  &(vtc_S20469C18[0]), // expected_vtbl_contents
  &(vtt_S20469C18[0]), // expected_vtt_contents
  ABISELECT(168,128), // object size
  NSPAIRA(_ZTI9S20469C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20469C18),33, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C18),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C14  : S20469C15 , virtual S20469C18 {
  ~S20469C14(); // tgen
  S20469C14(); // tgen
};
//SIG(-1 S20469C14) C1{ BC2{ VBC3{ BC4{ m} BC5{ VBC6{ m} BC4} BC7{ BC6 VBC4 FC6} vd} VBC8{ BC4 VBC6 VBC7 Fp} BC9{ VBC8 Fc:8} VBC10{ m Fi} BC11{ VBC12{ BC10 VBC7 BC8 BC4 vd Fc} vd Fi}} VBC13{ BC10 BC14{ m} BC3 VBC9 BC15{ BC8 vd FL[10]} vd}}


S20469C14 ::~S20469C14(){ note_dtor("S20469C14", this);} // tgen
S20469C14 ::S20469C14(){ note_ctor("S20469C14", this);} // tgen

static void Test_S20469C14()
{
  extern Class_Descriptor cd_S20469C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,45)];
    init_test(&cd_S20469C14, buf);
    S20469C14 *dp, &lv = *(dp=new (buf) S20469C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,176), "sizeof(S20469C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C14)");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(40,20), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C14");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*)(S20469C18*), 0, "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*)(S20469C18*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(32,16), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C14");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*)(S20469C18*), 0, "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(40,20), "S20469C14");
    check_base_class_offset(lv, (S20469C16*)(S20469C15*), ABISELECT(32,16), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(56,28), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(72,36), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(72,36), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(72,36), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(72,36), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(72,36), "S20469C14");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C15*), ABISELECT(56,28), "S20469C14");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*)(S20469C15*), ABISELECT(56,28), "S20469C14");
    /*is_ambiguous_... S20469C14::S20469C17 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(56,28), "S20469C14");
    check_base_class_offset(lv, (S20469C17*)(S20469C15*), 0, "S20469C14");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S20469C15*), ABISELECT(84,44), "S20469C14");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(104,56), "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C14");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(88,48), "S20469C14");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(108,60), "S20469C14");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*)(S20469C15*), ABISELECT(88,48), "S20469C14");
    check_base_class_offset(lv, (S20469C2*)(S20469C15*), ABISELECT(16,8), "S20469C14");
    check_base_class_offset(lv, (S20469C15*), 0, "S20469C14");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C18*), ABISELECT(132,76), "S20469C14");
    check_base_class_offset(lv, (S4228C23*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*)(S20469C18*), ABISELECT(120,68), "S20469C14");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(120,68), "S20469C14");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(120,68), "S20469C14");
    check_base_class_offset(lv, (S20469C16*)(S20469C18*), ABISELECT(112,64), "S20469C14");
    check_base_class_offset(lv, (S20469C17*)(S20469C18*), ABISELECT(232,168), "S20469C14");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(136,80), "S20469C14");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(136,80), "S20469C14");
    check_base_class_offset(lv, (S20469C12*)(S20469C18*), ABISELECT(136,80), "S20469C14");
    check_base_class_offset(lv, (S20469C18*), ABISELECT(112,64), "S20469C14");
    test_class_info(&lv, &cd_S20469C14);
    dp->~S20469C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C14(Test_S20469C14, "S20469C14", ABISELECT(248,176));

#else // __cplusplus

extern void _ZN9S20469C14C1Ev();
extern void _ZN9S20469C14D1Ev();
Name_Map name_map_S20469C14[] = {
  NSPAIR(_ZN9S20469C14C1Ev),
  NSPAIR(_ZN9S20469C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S20469C15;
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C18;
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
static Base_Class bases_S20469C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20469C11_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
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C5,    ABISELECT(40,20), //bcp->offset
    28, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(72,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(56,28), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20469C17,    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
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,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, 1},
  {&cd_S3423C8_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
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(108,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
    18, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(88,48), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20469C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(132,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S4228C23,    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
    33, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    28, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    25, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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_S20469C5,    ABISELECT(120,68), //bcp->offset
    57, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20469C16,    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
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C17,    ABISELECT(232,168), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    31, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(136,80), //bcp->offset
    60, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C18,    ABISELECT(112,64), //bcp->offset
    47, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C14[];
extern void _ZN9S20469C14D1Ev();
extern void _ZN9S20469C14D0Ev();
extern void ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev)();
static  VTBL_ENTRY vtc_S20469C14[] = {
  ABISELECT(232,168),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&_ZN9S20469C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev),
  ABISELECT(-232,-168),
  ABISELECT(-160,-132),
  ABISELECT(-232,-168),
  ABISELECT(-176,-140),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern VTBL_ENTRY _ZTV9S20469C14[];
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C15__9S20469C14[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C179S20469C15__9S20469C14[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C179S20469C15__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C179S20469C15__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C15__9S20469C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C29S20469C15__9S20469C14[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C29S20469C15__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C15__9S20469C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C15__9S20469C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C15__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C15__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C15__9S20469C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C15__9S20469C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C14[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C14[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C14[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C14[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__A1__9S20469C14[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C14[] = {
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C169S20469C18__A1__9S20469C14[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C14[] = {
  ABISELECT(-112,-64),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14[] = {
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C14[] = {
  ABISELECT(-120,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C14[] = {
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C14[] = {
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C14[] = {
  ABISELECT(-120,-68),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18__9S20469C14[] = {
  ABISELECT(-232,-168),
  ABISELECT(-160,-132),
  ABISELECT(-232,-168),
  ABISELECT(-176,-140),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18__9S20469C14[] = {
  ABISELECT(-136,-80),
  ABISELECT(-64,-44),
  ABISELECT(-136,-80),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C14[] = {
  ABISELECT(-232,-168),
  ABISELECT(-160,-132),
  ABISELECT(-232,-168),
  ABISELECT(-176,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__A1__9S20469C14[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__A1__9S20469C14[] = {
  ABISELECT(-72,-36),
  ABISELECT(160,132),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTT_ENTRY vtt_S20469C14[] = {
  {&(_ZTV9S20469C14[11]),  11,73},
  {&(_tg__ZTV9S20469C15__9S20469C14[9]),  9,11},
  {&(_tg__ZTV9S20469C179S20469C15__9S20469C14[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C179S20469C15__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C179S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C15__9S20469C14[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C29S20469C15__9S20469C14[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C29S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C16__9S20469C15__9S20469C14[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C15__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C15__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C15__9S20469C14[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C15__9S20469C14[6]),  6,8},
  {&(_ZTV9S20469C14[26]),  26,73},
  {&(_ZTV9S20469C14[31]),  31,73},
  {&(_ZTV9S20469C14[36]),  36,73},
  {&(_ZTV9S20469C14[39]),  39,73},
  {&(_ZTV9S20469C14[19]),  19,73},
  {&(_ZTV9S20469C14[45]),  45,73},
  {&(_ZTV9S20469C14[55]),  55,73},
  {&(_ZTV9S20469C14[60]),  60,73},
  {&(_ZTV9S20469C14[73]),  73,73},
  {&(_ZTV9S20469C14[65]),  65,73},
  {&(_tg__ZTV9S20469C16__9S20469C14[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C14[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__A1__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C18__9S20469C14[7]),  7,9},
  {&(_tg__ZTV9S20469C169S20469C18__A1__9S20469C14[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C14[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C14[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C17__9S20469C18__9S20469C14[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C18__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18__9S20469C14[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18__9S20469C14[5]),  5,7},
  {&(_tg__ZTV9S20469C17__A1__9S20469C14[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__A1__9S20469C14[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__A1__9S20469C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C14[];
extern  VTBL_ENTRY _ZTV9S20469C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C14[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C14 = {  "S20469C14", // class name
  bases_S20469C14, 34,
  &(vtc_S20469C14[0]), // expected_vtbl_contents
  &(vtt_S20469C14[0]), // expected_vtt_contents
  ABISELECT(248,176), // object size
  NSPAIRA(_ZTI9S20469C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20469C14),73, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C14),52, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C20  : virtual S20469C5 , S20469C11_nt {
  void *s20469c20f0;
  ~S20469C20(); // tgen
  S20469C20(); // tgen
};
//SIG(-1 S20469C20) C1{ VBC2{ BC3{ m} VBC4{ m} FC3} BC5{ VBC3 BC4} Fp}


S20469C20 ::~S20469C20(){ note_dtor("S20469C20", this);} // tgen
S20469C20 ::S20469C20(){ note_ctor("S20469C20", this);} // tgen

static void Test_S20469C20()
{
  extern Class_Descriptor cd_S20469C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20469C20, buf);
    S20469C20 *dp, &lv = *(dp=new (buf) S20469C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20469C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C20)");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(16,8), "S20469C20");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(25,13), "S20469C20");
    check_base_class_offset(lv, (S20469C5*), ABISELECT(16,8), "S20469C20");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C20");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C20");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C20");
    check_field_offset(lv, s20469c20f0, ABISELECT(8,4), "S20469C20.s20469c20f0");
    test_class_info(&lv, &cd_S20469C20);
    dp->~S20469C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C20(Test_S20469C20, "S20469C20", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S20469C20C1Ev();
extern void _ZN9S20469C20D1Ev();
Name_Map name_map_S20469C20[] = {
  NSPAIR(_ZN9S20469C20C1Ev),
  NSPAIR(_ZN9S20469C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
static Base_Class bases_S20469C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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
    2, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(16,8), //bcp->offset
    5, //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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C20[];
static  VTBL_ENTRY vtc_S20469C20[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
extern VTBL_ENTRY _ZTV9S20469C20[];
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C20[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C20[] = {
  {&(_ZTV9S20469C20[5]),  5,8},
  {&(_tg__ZTV12S20469C11_nt__9S20469C20[3]),  3,3},
  {&(_ZTV9S20469C20[8]),  8,8},
  {&(_tg__ZTV8S20469C5__9S20469C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
Class_Descriptor cd_S20469C20 = {  "S20469C20", // class name
  bases_S20469C20, 6,
  &(vtc_S20469C20[0]), // expected_vtbl_contents
  &(vtt_S20469C20[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S20469C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20469C20),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C20),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C19  : virtual S20469C11_nt , virtual S4228C27 , S20469C20 {
  int s20469c19f0;
  virtual  ~S20469C19(); // _ZN9S20469C19D2Ev
  S20469C19(); // tgen
};
//SIG(-1 S20469C19) C1{ VBC2{ VBC3{ m} BC4{ m}} VBC4 BC5{ VBC6{ BC3 VBC4 FC3} BC2 Fp} vd Fi}


 S20469C19 ::~S20469C19(){ note_dtor("S20469C19", this);}
S20469C19 ::S20469C19(){ note_ctor("S20469C19", this);} // tgen

static void Test_S20469C19()
{
  extern Class_Descriptor cd_S20469C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S20469C19, buf);
    S20469C19 *dp, &lv = *(dp=new (buf) S20469C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20469C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C19)");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C19");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C20*), 0, "S20469C19");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), ABISELECT(24,12), "S20469C19");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S20469C11_nt*), ABISELECT(24,12), "S20469C19");
    /*is_ambiguous_... S20469C19::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S20469C5*)(S20469C20*), ABISELECT(32,16), "S20469C19");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C20*), 0, "S20469C19");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C20*), 0, "S20469C19");
    check_base_class_offset(lv, (S20469C20*), 0, "S20469C19");
    check_field_offset(lv, s20469c19f0, ABISELECT(16,8), "S20469C19.s20469c19f0");
    test_class_info(&lv, &cd_S20469C19);
    dp->~S20469C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C19(Test_S20469C19, "S20469C19", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S20469C19C1Ev();
extern void _ZN9S20469C19D2Ev();
Name_Map name_map_S20469C19[] = {
  NSPAIR(_ZN9S20469C19C1Ev),
  NSPAIR(_ZN9S20469C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S20469C20;
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
static Base_Class bases_S20469C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(24,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    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_S20469C5,    ABISELECT(32,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //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
    8, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C19[];
extern void _ZN9S20469C19D1Ev();
extern void _ZN9S20469C19D0Ev();
static  VTBL_ENTRY vtc_S20469C19[] = {
  ABISELECT(24,12),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  (VTBL_ENTRY)&_ZN9S20469C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C19D0Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
extern VTBL_ENTRY _ZTV9S20469C19[];
static  VTBL_ENTRY _tg__ZTV9S20469C20__9S20469C19[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C20__A1__9S20469C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C20__9S20469C19[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C19[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTT_ENTRY vtt_S20469C19[] = {
  {&(_ZTV9S20469C19[6]),  6,14},
  {&(_tg__ZTV9S20469C20__9S20469C19[5]),  5,5},
  {&(_tg__ZTV12S20469C11_nt9S20469C20__A1__9S20469C19[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C20__9S20469C19[3]),  3,3},
  {&(_ZTV9S20469C19[11]),  11,14},
  {&(_ZTV9S20469C19[14]),  14,14},
  {&(_tg__ZTV12S20469C11_nt__9S20469C19[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C19[];
extern  VTBL_ENTRY _ZTV9S20469C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C19[];
Class_Descriptor cd_S20469C19 = {  "S20469C19", // class name
  bases_S20469C19, 9,
  &(vtc_S20469C19[0]), // expected_vtbl_contents
  &(vtt_S20469C19[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S20469C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20469C19),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C19),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C22  : virtual S20469C11_nt {
  virtual  ~S20469C22(); // _ZN9S20469C22D2Ev
  S20469C22(); // tgen
};
//SIG(-1 S20469C22) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S20469C22 ::~S20469C22(){ note_dtor("S20469C22", this);}
S20469C22 ::S20469C22(){ note_ctor("S20469C22", this);} // tgen

static void Test_S20469C22()
{
  extern Class_Descriptor cd_S20469C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20469C22, buf);
    S20469C22 *dp, &lv = *(dp=new (buf) S20469C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20469C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C22)");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C22");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C22");
    check_base_class_offset(lv, (S20469C11_nt*), 0, "S20469C22");
    test_class_info(&lv, &cd_S20469C22);
    dp->~S20469C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C22(Test_S20469C22, "S20469C22", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20469C22C1Ev();
extern void _ZN9S20469C22D2Ev();
Name_Map name_map_S20469C22[] = {
  NSPAIR(_ZN9S20469C22C1Ev),
  NSPAIR(_ZN9S20469C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
static Base_Class bases_S20469C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C22[];
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY vtc_S20469C22[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
extern VTBL_ENTRY _ZTV9S20469C22[];
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C22[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTT_ENTRY vtt_S20469C22[] = {
  {&(_ZTV9S20469C22[4]),  4,6},
  {&(_ZTV9S20469C22[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C22[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
Class_Descriptor cd_S20469C22 = {  "S20469C22", // class name
  bases_S20469C22, 3,
  &(vtc_S20469C22[0]), // expected_vtbl_contents
  &(vtt_S20469C22[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20469C22),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20469C22),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C22),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  S20469C21  : virtual S20469C3 , virtual S20469C9 , S20469C22 {
  int s20469c21f0[2];
  ~S20469C21(); // tgen
  S20469C21(); // tgen
};
//SIG(-1 S20469C21) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} VBC8{ VBC9{ m} VBC10{ VBC2 vd Fi} VBC11{ VBC5 BC6} VBC12{ BC7 vd FL[10]} vd} BC13{ VBC11 vd} Fi[2]}


S20469C21 ::~S20469C21(){ note_dtor("S20469C21", this);} // tgen
S20469C21 ::S20469C21(){ note_ctor("S20469C21", this);} // tgen

static void Test_S20469C21()
{
  extern Class_Descriptor cd_S20469C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S20469C21, buf);
    S20469C21 *dp, &lv = *(dp=new (buf) S20469C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S20469C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C21)");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(32,20), "S20469C21");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(40,28), "S20469C21");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*), 0, "S20469C21");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(40,28), "S20469C21");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(40,28), "S20469C21");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(40,28), "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(16,12), "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C21");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C21");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(16,12), "S20469C21");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(36,24), "S20469C21");
    check_base_class_offset(lv, (S20469C3*), ABISELECT(16,12), "S20469C21");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(16,12), "S20469C21");
    check_base_class_offset(lv, (S4228C23*)(S20469C9*), 0, "S20469C21");
    check_base_class_offset(lv, (S20469C2*)(S20469C9*), ABISELECT(64,40), "S20469C21");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), ABISELECT(56,36), "S20469C21");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C9*), ABISELECT(56,36), "S20469C21");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C22*), ABISELECT(56,36), "S20469C21");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(80,48), "S20469C21");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(80,48), "S20469C21");
    check_base_class_offset(lv, (S20469C12*)(S20469C9*), ABISELECT(80,48), "S20469C21");
    check_base_class_offset(lv, (S20469C9*), ABISELECT(56,36), "S20469C21");
    check_base_class_offset(lv, (S20469C22*), 0, "S20469C21");
    check_field_offset(lv, s20469c21f0, ABISELECT(8,4), "S20469C21.s20469c21f0");
    test_class_info(&lv, &cd_S20469C21);
    dp->~S20469C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C21(Test_S20469C21, "S20469C21", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN9S20469C21C1Ev();
extern void _ZN9S20469C21D1Ev();
Name_Map name_map_S20469C21[] = {
  NSPAIR(_ZN9S20469C21C1Ev),
  NSPAIR(_ZN9S20469C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C9;
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
extern Class_Descriptor cd_S20469C22;
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
static Base_Class bases_S20469C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C5,    ABISELECT(40,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C8,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C2,    ABISELECT(64,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20469C9,    ABISELECT(56,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20469C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C21[];
extern void _ZN9S20469C21D1Ev();
extern void _ZN9S20469C21D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn56_N9S20469C21D1Ev,_ZThn36_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn56_N9S20469C21D0Ev,_ZThn36_N9S20469C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn64_N9S20469C21D1Ev,_ZThn40_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn64_N9S20469C21D0Ev,_ZThn40_N9S20469C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20469C21D1Ev,_ZThn48_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn80_N9S20469C21D0Ev,_ZThn48_N9S20469C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C21[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&_ZN9S20469C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C21D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S20469C21[];
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C22__9S20469C21[] = {
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C22__9S20469C21[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__9S20469C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C21[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C21[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9__9S20469C21[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9__9S20469C21[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9__9S20469C21[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C21[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__9S20469C21[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C21[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C21[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__9S20469C21[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__9S20469C21[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTT_ENTRY vtt_S20469C21[] = {
  {&(_ZTV9S20469C21[11]),  11,54},
  {&(_tg__ZTV9S20469C22__9S20469C21[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C22__9S20469C21[3]),  3,3},
  {&(_ZTV9S20469C21[19]),  19,54},
  {&(_ZTV9S20469C21[24]),  24,54},
  {&(_ZTV9S20469C21[35]),  35,54},
  {&(_ZTV9S20469C21[44]),  44,54},
  {&(_ZTV9S20469C21[35]),  35,54},
  {&(_ZTV9S20469C21[52]),  52,54},
  {&(_tg__ZTV8S20469C3__9S20469C21[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__9S20469C21[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21[10]),  10,12},
  {&(_tg__ZTV8S20469C2__8S20469C9__9S20469C21[7]),  7,9},
  {&(_tg__ZTV8S20469C3__8S20469C9__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C9__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21[10]),  10,12},
  {&(_tg__ZTV9S20469C12__8S20469C9__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C2__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__9S20469C21[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__9S20469C21[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__9S20469C21[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C21[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__9S20469C21[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__9S20469C21[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__9S20469C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C21[];
extern  VTBL_ENTRY _ZTV9S20469C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C21[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D0Ev,_ZThn12_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20469C9D1Ev,_ZThn12_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D0Ev,_ZThn4_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20469C9D1Ev,_ZThn4_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20469C21D0Ev,_ZThn40_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20469C21D1Ev,_ZThn40_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20469C21D0Ev,_ZThn36_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20469C21D1Ev,_ZThn36_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C21D0Ev,_ZThn48_N9S20469C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C21D1Ev,_ZThn48_N9S20469C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C21 = {  "S20469C21", // class name
  bases_S20469C21, 18,
  &(vtc_S20469C21[0]), // expected_vtbl_contents
  &(vtt_S20469C21[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI9S20469C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20469C21),54, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C21),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S20469C23_nt  {
  void  mf20469c23(); // _ZN12S20469C23_nt10mf20469c23Ev
};
//SIG(1 S20469C23_nt) U1{ m}

#endif // __cplusplus
#ifdef __cplusplus

struct  S20469C13  : virtual S20469C14 , virtual S4228C23 , virtual S20469C19 , virtual S20469C21 {
  ::S20469C23_nt s20469c13f0;
  virtual  ~S20469C13(); // _ZN9S20469C13D2Ev
  S20469C13(); // tgen
};
//SIG(-1 S20469C13) C1{ VBC2{ BC3{ VBC4{ BC5{ m} BC6{ VBC7{ m} BC5} BC8{ BC7 VBC5 FC7} vd} VBC9{ BC5 VBC7 VBC8 Fp} BC10{ VBC9 Fc:8} VBC11{ m Fi} BC12{ VBC13{ BC11 VBC8 BC9 BC5 vd Fc} vd Fi}} VBC14{ BC11 BC15{ m} BC4 VBC10 BC16{ BC9 vd FL[10]} vd}} VBC15 VBC17{ VBC6 VBC5 BC18{ VBC8 BC6 Fp} vd Fi} VBC19{ VBC13 VBC20{ VBC15 VBC12 VBC6 VBC16 vd} BC21{ VBC6 vd} Fi[2]} vd FU22{ m}}


 S20469C13 ::~S20469C13(){ note_dtor("S20469C13", this);}
S20469C13 ::S20469C13(){ note_ctor("S20469C13", this);} // tgen

static void Test_S20469C13()
{
  extern Class_Descriptor cd_S20469C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(53,77)];
    init_test(&cd_S20469C13, buf);
    S20469C13 *dp, &lv = *(dp=new (buf) S20469C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(416,304), "sizeof(S20469C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C13)");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(56,28), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*)(S20469C18*), 0, "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*)(S20469C18*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C20*)(S20469C19*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(48,24), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(48,24), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(56,28), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), ABISELECT(65,33), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(65,33), "S20469C13");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(65,33), "S20469C13");
    /*is_ambiguous_... S20469C19::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C19*), ABISELECT(65,33), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(56,28), "S20469C13");
    check_base_class_offset(lv, (S20469C16*)(S20469C15*)(S20469C14*), ABISELECT(48,24), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(72,36), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(88,44), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(88,44), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C20*)(S20469C19*), ABISELECT(88,44), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(88,44), "S20469C13");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C15*)(S20469C14*), ABISELECT(72,36), "S20469C13");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(72,36), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C17 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(72,36), "S20469C13");
    check_base_class_offset(lv, (S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(16,8), "S20469C13");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S20469C15*)(S20469C14*), ABISELECT(100,52), "S20469C13");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(120,64), "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(104,56), "S20469C13");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(104,56), "S20469C13");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(124,68), "S20469C13");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(104,56), "S20469C13");
    check_base_class_offset(lv, (S20469C3*)(S20469C21*), ABISELECT(104,56), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C2 */ AMB_check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(104,56), "S20469C13");
    check_base_class_offset(lv, (S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(32,16), "S20469C13");
    check_base_class_offset(lv, (S20469C15*)(S20469C14*), ABISELECT(16,8), "S20469C13");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C18*), ABISELECT(148,84), "S20469C13");
    check_base_class_offset(lv, (S4228C23*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*)(S20469C18*), ABISELECT(136,76), "S20469C13");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(136,76), "S20469C13");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(136,76), "S20469C13");
    check_base_class_offset(lv, (S20469C16*)(S20469C18*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S20469C17*)(S20469C18*), ABISELECT(248,176), "S20469C13");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(152,88), "S20469C13");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(152,88), "S20469C13");
    check_base_class_offset(lv, (S20469C12*)(S20469C18*), ABISELECT(152,88), "S20469C13");
    check_base_class_offset(lv, (S20469C18*)(S20469C14*), ABISELECT(128,72), "S20469C13");
    check_base_class_offset(lv, (S20469C14*), ABISELECT(16,8), "S20469C13");
    /*is_ambiguous_... S20469C13::S4228C23 */ AMB_check_base_class_offset(lv, (S4228C23*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C23*)(S20469C9*), 0, "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C13");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C19*), 0, "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C9*), 0, "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C22*)(S20469C21*), 0, "S20469C13");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C20*)(S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C19*), ABISELECT(264,184), "S20469C13");
    check_base_class_offset(lv, (S20469C2*)(S20469C9*), ABISELECT(304,208), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(320,216), "S20469C13");
    /*is_ambiguous_... S20469C13::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(320,216), "S20469C13");
    check_base_class_offset(lv, (S20469C12*)(S20469C9*), ABISELECT(320,216), "S20469C13");
    check_base_class_offset(lv, (S20469C9*)(S20469C21*), 0, "S20469C13");
    check_base_class_offset(lv, (S20469C22*)(S20469C21*), ABISELECT(288,196), "S20469C13");
    check_base_class_offset(lv, (S20469C21*), ABISELECT(288,196), "S20469C13");
    check_field_offset(lv, s20469c13f0, ABISELECT(8,4), "S20469C13.s20469c13f0");
    test_class_info(&lv, &cd_S20469C13);
    dp->~S20469C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C13(Test_S20469C13, "S20469C13", ABISELECT(416,304));

#else // __cplusplus

extern void _ZN9S20469C13C1Ev();
extern void _ZN9S20469C13D2Ev();
Name_Map name_map_S20469C13[] = {
  NSPAIR(_ZN9S20469C13C1Ev),
  NSPAIR(_ZN9S20469C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S20469C15;
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C18;
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
extern Class_Descriptor cd_S20469C14;
extern VTBL_ENTRY _ZTI9S20469C14[];
extern  VTBL_ENTRY _ZTV9S20469C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C14[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S20469C20;
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
extern Class_Descriptor cd_S20469C19;
extern VTBL_ENTRY _ZTI9S20469C19[];
extern  VTBL_ENTRY _ZTV9S20469C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C19[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C9;
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
extern Class_Descriptor cd_S20469C22;
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
extern Class_Descriptor cd_S20469C21;
extern VTBL_ENTRY _ZTI9S20469C21[];
extern  VTBL_ENTRY _ZTV9S20469C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C21[];
static Base_Class bases_S20469C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    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, 0},
  {&cd_S20469C11_nt,    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
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(65,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_S20469C5,    ABISELECT(56,28), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(48,24), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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_S20469C5,    ABISELECT(88,44), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20469C8,    ABISELECT(72,36), //bcp->offset
    54, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20469C17,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(100,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, 1},
  {&cd_S3423C8_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
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(104,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(124,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(104,56), //bcp->offset
    62, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(32,16), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20469C15,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(148,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_S4228C23,    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
    33, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    28, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    25, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(128,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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_S20469C5,    ABISELECT(136,76), //bcp->offset
    80, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20469C16,    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
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C17,    ABISELECT(248,176), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    31, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(152,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(152,88), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20469C18,    ABISELECT(128,72), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    34, //immediately_derived
  0, 1},
  {&cd_S20469C14,    ABISELECT(16,8), //bcp->offset
    22, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(264,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
    39, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(264,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20469C20,    ABISELECT(264,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20469C19,    ABISELECT(264,184), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20469C2,    ABISELECT(304,208), //bcp->offset
    119, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(320,216), //bcp->offset
    128, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20469C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20469C22,    ABISELECT(288,196), //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
    27, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20469C21,    ABISELECT(288,196), //bcp->offset
    105, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20469C13[];
extern void _ZN9S20469C13D1Ev();
extern void _ZN9S20469C13D0Ev();
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S20469C13D1Ev,_ZThn24_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S20469C13D0Ev,_ZThn24_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn104_N9S20469C13D1Ev,_ZThn56_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn104_N9S20469C13D0Ev,_ZThn56_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S20469C13D1Ev,_ZThn72_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S20469C13D0Ev,_ZThn72_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn264_N9S20469C13D1Ev,_ZThn184_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn264_N9S20469C13D0Ev,_ZThn184_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S20469C13D1Ev,_ZThn196_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S20469C13D0Ev,_ZThn196_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn304_N9S20469C13D1Ev,_ZThn208_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn304_N9S20469C13D0Ev,_ZThn208_N9S20469C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn320_N9S20469C13D1Ev,_ZThn216_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn320_N9S20469C13D0Ev,_ZThn216_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C13[] = {
  0,
  ABISELECT(288,196),
  ABISELECT(264,184),
  ABISELECT(248,176),
  ABISELECT(128,72),
  ABISELECT(100,52),
  ABISELECT(72,36),
  ABISELECT(48,24),
  ABISELECT(16,8),
  0,
  ABISELECT(320,216),
  0,
  ABISELECT(65,33),
  ABISELECT(88,44),
  ABISELECT(104,56),
  ABISELECT(304,208),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&_ZN9S20469C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C13D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(232,168),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev),
  ABISELECT(9,5),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-23,-11),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-104,-56),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev),
  ABISELECT(-71,-43),
  ABISELECT(-136,-76),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev),
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  ABISELECT(-264,-184),
  ABISELECT(-264,-184),
  ABISELECT(-199,-151),
  ABISELECT(-176,-140),
  ABISELECT(-264,-184),
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  ABISELECT(-223,-163),
  ABISELECT(-200,-152),
  ABISELECT(-184,-140),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
  ABISELECT(-304,-208),
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  ABISELECT(-304,-208),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
  ABISELECT(-320,-216),
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20469C13[];
extern void _ZN9S20469C14D1Ev();
extern void _ZN9S20469C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C14__9S20469C13[] = {
  ABISELECT(232,168),
  ABISELECT(112,64),
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&_ZN9S20469C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C14D0Ev,
};
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C179S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(49,25),
  ABISELECT(72,36),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C159S20469C14__9S20469C13[] = {
  ABISELECT(-88,-48),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C14__9S20469C13[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C14__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C14__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C15__9S20469C14__9S20469C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,17),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C14__9S20469C13[] = {
  ABISELECT(-88,-48),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C14__9S20469C13[] = {
  ABISELECT(-112,-64),
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__9S20469C13[] = {
  ABISELECT(-71,-43),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C14__9S20469C13[] = {
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  ABISELECT(-232,-168),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C14__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C13[] = {
  ABISELECT(17,9),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__9S20469C13[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__9S20469C13[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C13[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__A1__9S20469C13[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C13[] = {
  ABISELECT(-40,-28),
  ABISELECT(-56,-36),
  ABISELECT(120,104),
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C169S20469C18__A1__9S20469C13[] = {
  ABISELECT(-63,-39),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C13[] = {
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13[] = {
  ABISELECT(-71,-43),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C13[] = {
  ABISELECT(-71,-43),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C13[] = {
  ABISELECT(-71,-43),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18__9S20469C13[] = {
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18__9S20469C13[] = {
  ABISELECT(-87,-55),
  ABISELECT(-64,-44),
  ABISELECT(-152,-88),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C13[] = {
  ABISELECT(-183,-143),
  ABISELECT(-160,-132),
  ABISELECT(-248,-176),
  ABISELECT(-176,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__A1__9S20469C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-72,-36),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(160,132),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN9S20469C19D1Ev();
extern void _ZN9S20469C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C19__9S20469C13[] = {
  ABISELECT(-264,-184),
  ABISELECT(-199,-151),
  ABISELECT(-176,-140),
  ABISELECT(-264,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  (VTBL_ENTRY)&_ZN9S20469C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C209S20469C19__9S20469C13[] = {
  ABISELECT(-199,-151),
  ABISELECT(-176,-140),
  ABISELECT(-264,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__9S20469C13[] = {
  ABISELECT(-264,-184),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C209S20469C19__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C19__9S20469C13[] = {
  0,
  ABISELECT(264,184),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C19__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(176,140),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__A2__9S20469C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C21D1Ev();
extern void _ZN9S20469C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C21__9S20469C13[] = {
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  ABISELECT(-223,-163),
  ABISELECT(-200,-152),
  ABISELECT(-184,-140),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&_ZN9S20469C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C21D0Ev,
};
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C229S20469C21__9S20469C13[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C229S20469C21__9S20469C13[] = {
  0,
  ABISELECT(288,196),
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C21__9S20469C13[] = {
  ABISELECT(184,140),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(184,140),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C21__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C21__9S20469C13[] = {
  ABISELECT(288,196),
  ABISELECT(320,216),
  0,
  ABISELECT(65,33),
  ABISELECT(88,44),
  ABISELECT(104,56),
  ABISELECT(304,208),
  0,
  0,
  ABISELECT(288,196),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C21__9S20469C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C21D1Ev,_ZThn20_N9S20469C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C21D0Ev,_ZThn20_N9S20469C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C21__9S20469C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C13[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(65,33),
  ABISELECT(88,44),
  ABISELECT(104,56),
  ABISELECT(304,208),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn304_N8S20469C9D1Ev,_ZThn208_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn304_N8S20469C9D0Ev,_ZThn208_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9__9S20469C13[] = {
  ABISELECT(-304,-208),
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  ABISELECT(-304,-208),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S20469C9D1Ev,_ZThn56_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S20469C9D0Ev,_ZThn56_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9__9S20469C13[] = {
  ABISELECT(-104,-56),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn320_N8S20469C9D1Ev,_ZThn216_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn320_N8S20469C9D0Ev,_ZThn216_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9__9S20469C13[] = {
  ABISELECT(-320,-216),
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__A1__9S20469C13[] = {
  ABISELECT(-304,-208),
  ABISELECT(-239,-175),
  ABISELECT(-216,-164),
  ABISELECT(-200,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__A1__9S20469C13[] = {
  ABISELECT(200,152),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-104,-56),
  ABISELECT(200,152),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(216,164),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__A1__9S20469C13[] = {
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A3__9S20469C13[] = {
  ABISELECT(-255,-183),
  ABISELECT(-232,-172),
  ABISELECT(-320,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A3__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(232,172),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__A1__9S20469C13[] = {
  ABISELECT(-23,-11),
  ABISELECT(232,172),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTT_ENTRY vtt_S20469C13[] = {
  {&(_ZTV9S20469C13[20]),  20,136},
  {&(_ZTV9S20469C13[34]),  34,136},
  {&(_ZTV9S20469C13[49]),  49,136},
  {&(_ZTV9S20469C13[54]),  54,136},
  {&(_ZTV9S20469C13[59]),  59,136},
  {&(_ZTV9S20469C13[62]),  62,136},
  {&(_ZTV9S20469C13[42]),  42,136},
  {&(_ZTV9S20469C13[68]),  68,136},
  {&(_ZTV9S20469C13[78]),  78,136},
  {&(_ZTV9S20469C13[83]),  83,136},
  {&(_ZTV9S20469C13[96]),  96,136},
  {&(_ZTV9S20469C13[88]),  88,136},
  {&(_ZTV9S20469C13[103]),  103,136},
  {&(_ZTV9S20469C13[20]),  20,136},
  {&(_ZTV9S20469C13[117]),  117,136},
  {&(_ZTV9S20469C13[20]),  20,136},
  {&(_ZTV9S20469C13[126]),  126,136},
  {&(_ZTV9S20469C13[134]),  134,136},
  {&(_tg__ZTV9S20469C14__9S20469C13[11]),  11,13},
  {&(_tg__ZTV9S20469C159S20469C14__9S20469C13[9]),  9,11},
  {&(_tg__ZTV9S20469C179S20469C159S20469C14__9S20469C13[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C16__9S20469C159S20469C14__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C159S20469C14__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C159S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C159S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV9S20469C16__9S20469C14__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C14__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C15__9S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C14__9S20469C13[6]),  6,8},
  {&(_tg__ZTV9S20469C18__9S20469C14__9S20469C13[8]),  8,10},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C17__A1__9S20469C14__9S20469C13[6]),  6,6},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C14__9S20469C13[5]),  5,7},
  {&(_tg__ZTV9S20469C16__9S20469C13[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__A1__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C18__9S20469C13[7]),  7,9},
  {&(_tg__ZTV9S20469C169S20469C18__A1__9S20469C13[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C169S20469C18__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C169S20469C18__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C129S20469C18__A2__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A2__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C129S20469C18__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C17__9S20469C18__9S20469C13[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C18__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18__9S20469C13[5]),  5,7},
  {&(_tg__ZTV9S20469C17__A1__9S20469C13[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__A1__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C19__9S20469C13[6]),  6,8},
  {&(_tg__ZTV9S20469C209S20469C19__9S20469C13[5]),  5,5},
  {&(_tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C209S20469C19__9S20469C13[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__9S20469C19__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C19__9S20469C13[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__A2__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C21__9S20469C13[11]),  11,13},
  {&(_tg__ZTV9S20469C229S20469C21__9S20469C13[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C229S20469C21__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C21__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__9S20469C21__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21__9S20469C13[11]),  11,13},
  {&(_tg__ZTV8S20469C2__9S20469C21__9S20469C13[7]),  7,9},
  {&(_tg__ZTV8S20469C9__9S20469C21__9S20469C13[11]),  11,13},
  {&(_tg__ZTV9S20469C12__9S20469C21__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C9__9S20469C13[10]),  10,12},
  {&(_tg__ZTV8S20469C2__8S20469C9__9S20469C13[7]),  7,9},
  {&(_tg__ZTV8S20469C3__8S20469C9__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C9__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C13[10]),  10,12},
  {&(_tg__ZTV9S20469C12__8S20469C9__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C2__A1__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__A1__9S20469C13[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__A1__9S20469C13[3]),  3,3},
  {&(_tg__ZTV9S20469C12__A1__9S20469C13[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A3__9S20469C13[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A3__9S20469C13[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__A1__9S20469C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20469C13[];
extern  VTBL_ENTRY _ZTV9S20469C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C13[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20469C9D0Ev,_ZThn216_N8S20469C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20469C9D0Ev,_ZThn56_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20469C9D1Ev,_ZThn216_N8S20469C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20469C9D1Ev,_ZThn56_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20469C9D0Ev,_ZThn208_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20469C9D1Ev,_ZThn208_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C21D0Ev,_ZThn20_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C21D1Ev,_ZThn20_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D0Ev,_ZThn12_N9S20469C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C21D1Ev,_ZThn12_N9S20469C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D0Ev,_ZThn64_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20469C14D1Ev,_ZThn64_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D0Ev,_ZThn48_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C14D1Ev,_ZThn48_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D0Ev,_ZThn48_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20469C15D1Ev,_ZThn48_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D0Ev,_ZThn40_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C2D1Ev,_ZThn40_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20469C13D0Ev,_ZThn208_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S20469C13D0Ev,_ZThn184_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20469C13D1Ev,_ZThn208_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S20469C13D1Ev,_ZThn184_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20469C13D0Ev,_ZThn72_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20469C13D1Ev,_ZThn72_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20469C13D0Ev,_ZThn216_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20469C13D0Ev,_ZThn56_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20469C13D1Ev,_ZThn216_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20469C13D1Ev,_ZThn56_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20469C13D0Ev,_ZThn24_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20469C13D1Ev,_ZThn24_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20469C13D0Ev,_ZThn196_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20469C13D1Ev,_ZThn196_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C13 = {  "S20469C13", // class name
  bases_S20469C13, 49,
  &(vtc_S20469C13[0]), // expected_vtbl_contents
  &(vtt_S20469C13[0]), // expected_vtt_contents
  ABISELECT(416,304), // object size
  NSPAIRA(_ZTI9S20469C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20469C13),136, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20469C13),99, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20469C1  : virtual S20469C2 , virtual S20469C9 , S20469C13 {
  virtual  ~S20469C1(); // _ZN8S20469C1D2Ev
  virtual void  v1(); // _ZN8S20469C12v1Ev
  S20469C1(); // tgen
};
//SIG(1 S20469C1) C1{ VBC2{ VBC3{ BC4{ m Fi} VBC5{ BC6{ m} VBC7{ m} FC6} BC8{ BC7 VBC6 VBC5 Fp} BC7 vd Fc} vd Fi} VBC9{ VBC10{ m} VBC2 VBC11{ VBC6 BC7} VBC12{ BC8 vd FL[10]} vd} BC13{ VBC14{ BC15{ VBC16{ BC7 BC11 BC5 vd} VBC8 BC17{ VBC8 Fc:8} VBC4 BC2} VBC18{ BC4 BC10 BC16 VBC17 BC12 vd}} VBC10 VBC19{ VBC11 VBC7 BC20{ VBC5 BC11 Fp} vd Fi} VBC21{ VBC3 VBC9 BC22{ VBC11 vd} Fi[2]} vd FU23{ m}} vd v1}


 S20469C1 ::~S20469C1(){ note_dtor("S20469C1", this);}
void  S20469C1 ::v1(){vfunc_called(this, "_ZN8S20469C12v1Ev");}
S20469C1 ::S20469C1(){ note_ctor("S20469C1", this);} // tgen

static void Test_S20469C1()
{
  extern Class_Descriptor cd_S20469C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,77)];
    init_test(&cd_S20469C1, buf);
    S20469C1 *dp, &lv = *(dp=new (buf) S20469C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,304), "sizeof(S20469C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20469C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C3*), ABISELECT(48,24), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*), ABISELECT(65,37), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*), ABISELECT(65,37), "S20469C1");
    check_base_class_offset(lv, (S4228C27*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(65,37), "S20469C1");
    /*is_ambiguous_... S20469C19::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C19*), ABISELECT(65,37), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C3*), ABISELECT(56,32), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C3*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C8*), ABISELECT(56,32), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(56,32), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C20*)(S20469C19*), ABISELECT(56,32), "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C3*), ABISELECT(32,16), "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C3*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*), 0, "S20469C1");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C16*)(S20469C18*), 0, "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C8*)(S20469C12*)(S20469C18*), 0, "S20469C1");
    check_base_class_offset(lv, (S4228C37*)(S20469C11_nt*)(S20469C20*)(S20469C19*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C8*)(S20469C3*), ABISELECT(32,16), "S20469C1");
    /*is_ambiguous_... S20469C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C3*), ABISELECT(52,28), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C2 */ AMB_check_base_class_offset(lv, (S20469C3*)(S20469C2*), ABISELECT(32,16), "S20469C1");
    check_base_class_offset(lv, (S20469C3*)(S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(32,16), "S20469C1");
    check_base_class_offset(lv, (S20469C3*)(S20469C21*), ABISELECT(32,16), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C2 */ AMB_check_base_class_offset(lv, (S20469C2*), ABISELECT(16,8), "S20469C1");
    check_base_class_offset(lv, (S20469C2*)(S20469C9*), ABISELECT(16,8), "S20469C1");
    check_base_class_offset(lv, (S4228C23*)(S20469C9*), 0, "S20469C1");
    /*is_ambiguous_... S20469C13::S4228C23 */ AMB_check_base_class_offset(lv, (S4228C23*)(S20469C13*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C11_nt */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C9*), 0, "S20469C1");
    /*is_ambiguous_... S20469C19::S20469C11_nt */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C19*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C22*)(S20469C21*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*), ABISELECT(72,40), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C12 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C12*), ABISELECT(72,40), "S20469C1");
    check_base_class_offset(lv, (S20469C12*)(S20469C9*), ABISELECT(72,40), "S20469C1");
    check_base_class_offset(lv, (S20469C9*), 0, "S20469C1");
    check_base_class_offset(lv, (S20469C9*)(S20469C21*), 0, "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*), ABISELECT(208,148), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*), ABISELECT(200,144), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*), ABISELECT(200,144), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*), ABISELECT(208,148), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C16 */ AMB_check_base_class_offset(lv, (S20469C5*)(S20469C16*), ABISELECT(208,148), "S20469C1");
    check_base_class_offset(lv, (S20469C16*)(S20469C15*)(S20469C14*), ABISELECT(200,144), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*), ABISELECT(224,156), "S20469C1");
    /*is_ambiguous_... S20469C15::S20469C8 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C15*)(S20469C14*), ABISELECT(224,156), "S20469C1");
    check_base_class_offset(lv, (S20469C8*)(S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(224,156), "S20469C1");
    /*is_ambiguous_... S20469C1::S20469C17 */ AMB_check_base_class_offset(lv, (S20469C8*)(S20469C17*), ABISELECT(224,156), "S20469C1");
    check_base_class_offset(lv, (S20469C17*)(S20469C15*)(S20469C14*), ABISELECT(168,128), "S20469C1");
    /*is_ambiguous_... S20469C15::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S20469C15*)(S20469C14*), ABISELECT(240,164), "S20469C1");
    check_base_class_offset(lv, (S20469C2*)(S20469C15*)(S20469C14*), ABISELECT(184,136), "S20469C1");
    check_base_class_offset(lv, (S20469C15*)(S20469C14*), ABISELECT(168,128), "S20469C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S20469C18*), ABISELECT(268,180), "S20469C1");
    check_base_class_offset(lv, (S4228C23*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    /*is_ambiguous_... S20469C16::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C16*)(S20469C18*), ABISELECT(256,172), "S20469C1");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C16*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S4228C37*)(S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(256,172), "S20469C1");
    check_base_class_offset(lv, (S20469C5*)(S20469C16*)(S20469C18*), ABISELECT(256,172), "S20469C1");
    check_base_class_offset(lv, (S20469C16*)(S20469C18*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S20469C17*)(S20469C18*), ABISELECT(368,272), "S20469C1");
    /*is_ambiguous_... S20469C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(272,184), "S20469C1");
    check_base_class_offset(lv, (S20469C8*)(S20469C12*)(S20469C18*), ABISELECT(272,184), "S20469C1");
    check_base_class_offset(lv, (S20469C12*)(S20469C18*), ABISELECT(272,184), "S20469C1");
    check_base_class_offset(lv, (S20469C18*)(S20469C14*), ABISELECT(248,168), "S20469C1");
    check_base_class_offset(lv, (S20469C14*)(S20469C13*), ABISELECT(168,128), "S20469C1");
    check_base_class_offset(lv, (S4228C27*)(S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C11_nt*)(S20469C20*)(S20469C19*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C20*)(S20469C19*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C19*)(S20469C13*), ABISELECT(384,280), "S20469C1");
    check_base_class_offset(lv, (S20469C22*)(S20469C21*), ABISELECT(408,292), "S20469C1");
    check_base_class_offset(lv, (S20469C21*)(S20469C13*), ABISELECT(408,292), "S20469C1");
    check_base_class_offset(lv, (S20469C13*), 0, "S20469C1");
    test_class_info(&lv, &cd_S20469C1);
    dp->~S20469C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20469C1(Test_S20469C1, "S20469C1", ABISELECT(424,304));

#else // __cplusplus

extern void _ZN8S20469C1C1Ev();
extern void _ZN8S20469C1D2Ev();
Name_Map name_map_S20469C1[] = {
  NSPAIR(_ZN8S20469C1C1Ev),
  NSPAIR(_ZN8S20469C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C3;
extern VTBL_ENTRY _ZTI8S20469C3[];
extern  VTBL_ENTRY _ZTV8S20469C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C3[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C9;
extern VTBL_ENTRY _ZTI8S20469C9[];
extern  VTBL_ENTRY _ZTV8S20469C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S20469C2;
extern VTBL_ENTRY _ZTI8S20469C2[];
extern  VTBL_ENTRY _ZTV8S20469C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C2[];
extern Class_Descriptor cd_S20469C15;
extern VTBL_ENTRY _ZTI9S20469C15[];
extern  VTBL_ENTRY _ZTV9S20469C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C15[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20469C5;
extern VTBL_ENTRY _ZTI8S20469C5[];
extern  VTBL_ENTRY _ZTV8S20469C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C5[];
extern Class_Descriptor cd_S20469C16;
extern VTBL_ENTRY _ZTI9S20469C16[];
extern  VTBL_ENTRY _ZTV9S20469C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C16[];
extern Class_Descriptor cd_S20469C17;
extern VTBL_ENTRY _ZTI9S20469C17[];
extern  VTBL_ENTRY _ZTV9S20469C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C17[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C8;
extern VTBL_ENTRY _ZTI8S20469C8[];
extern  VTBL_ENTRY _ZTV8S20469C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C8[];
extern Class_Descriptor cd_S20469C12;
extern VTBL_ENTRY _ZTI9S20469C12[];
extern  VTBL_ENTRY _ZTV9S20469C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C12[];
extern Class_Descriptor cd_S20469C18;
extern VTBL_ENTRY _ZTI9S20469C18[];
extern  VTBL_ENTRY _ZTV9S20469C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C18[];
extern Class_Descriptor cd_S20469C14;
extern VTBL_ENTRY _ZTI9S20469C14[];
extern  VTBL_ENTRY _ZTV9S20469C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C14[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20469C11_nt;
extern VTBL_ENTRY _ZTI12S20469C11_nt[];
extern  VTBL_ENTRY _ZTV12S20469C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20469C11_nt[];
extern Class_Descriptor cd_S20469C20;
extern VTBL_ENTRY _ZTI9S20469C20[];
extern  VTBL_ENTRY _ZTV9S20469C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C20[];
extern Class_Descriptor cd_S20469C19;
extern VTBL_ENTRY _ZTI9S20469C19[];
extern  VTBL_ENTRY _ZTV9S20469C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C19[];
extern Class_Descriptor cd_S20469C22;
extern VTBL_ENTRY _ZTI9S20469C22[];
extern  VTBL_ENTRY _ZTV9S20469C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C22[];
extern Class_Descriptor cd_S20469C21;
extern VTBL_ENTRY _ZTI9S20469C21[];
extern  VTBL_ENTRY _ZTV9S20469C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C21[];
extern Class_Descriptor cd_S20469C13;
extern VTBL_ENTRY _ZTI9S20469C13[];
extern  VTBL_ENTRY _ZTV9S20469C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20469C13[];
static Base_Class bases_S20469C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(65,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
    3, //immediately_derived
  0, 1},
  {&cd_S20469C5,    ABISELECT(56,32), //bcp->offset
    40, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C8,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(52,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20469C3,    ABISELECT(32,16), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20469C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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_S20469C8,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(72,40), //bcp->offset
    43, //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
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20469C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(208,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
    22, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(200,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
    19, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(200,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(208,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(208,148), //bcp->offset
    80, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(200,144), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(224,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(224,156), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20469C17,    ABISELECT(168,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(240,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
    28, //immediately_derived
  0, 1},
  {&cd_S20469C2,    ABISELECT(184,136), //bcp->offset
    65, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20469C15,    ABISELECT(168,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(268,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
    41, //immediately_derived
  0, 0},
  {&cd_S4228C23,    ABISELECT(248,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
    41, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(256,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
    36, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(248,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
    33, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(256,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20469C5,    ABISELECT(256,172), //bcp->offset
    98, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20469C16,    ABISELECT(248,168), //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
    16, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20469C17,    ABISELECT(368,272), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(272,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
    39, //immediately_derived
  0, 0},
  {&cd_S20469C8,    ABISELECT(272,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20469C12,    ABISELECT(272,184), //bcp->offset
    101, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20469C18,    ABISELECT(248,168), //bcp->offset
    88, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20469C14,    ABISELECT(168,128), //bcp->offset
    51, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S4228C27,    ABISELECT(384,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
    44, //immediately_derived
  0, 0},
  {&cd_S20469C11_nt,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20469C20,    ABISELECT(384,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20469C19,    ABISELECT(384,280), //bcp->offset
    114, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S20469C22,    ABISELECT(408,292), //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
    27, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20469C21,    ABISELECT(408,292), //bcp->offset
    123, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S20469C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20469C1[];
extern void _ZN8S20469C1D1Ev();
extern void _ZN8S20469C1D0Ev();
extern void _ZN8S20469C12v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C1D1Ev,_ZThn8_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C1D0Ev,_ZThn8_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20469C1D1Ev,_ZThn16_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20469C1D0Ev,_ZThn16_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C1D1Ev,_ZThn40_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C1D0Ev,_ZThn40_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S20469C1D1Ev,_ZThn128_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S20469C1D0Ev,_ZThn128_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N8S20469C1D1Ev,_ZTvn8_n48_N8S20469C1D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N8S20469C1D0Ev,_ZTvn8_n48_N8S20469C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20469C1D1Ev,_ZTv0_n20_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S20469C1D1Ev,_ZThn144_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20469C1D0Ev,_ZTv0_n20_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S20469C1D0Ev,_ZThn144_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20469C1D1Ev,_ZTv0_n32_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S20469C1D1Ev,_ZThn168_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20469C1D0Ev,_ZTv0_n32_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S20469C1D0Ev,_ZThn168_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn24_n64_N8S20469C1D1Ev,_ZTvn16_n32_N8S20469C1D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N8S20469C1D0Ev,_ZTvn16_n32_N8S20469C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S20469C1D1Ev,_ZThn280_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S20469C1D0Ev,_ZThn280_N8S20469C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev)();
extern void ABISELECT(_ZThn408_N8S20469C1D1Ev,_ZThn292_N8S20469C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev)();
extern void ABISELECT(_ZThn408_N8S20469C1D0Ev,_ZThn292_N8S20469C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20469C1[] = {
  0,
  ABISELECT(408,292),
  ABISELECT(384,280),
  ABISELECT(368,272),
  ABISELECT(248,168),
  ABISELECT(240,164),
  ABISELECT(224,156),
  ABISELECT(200,144),
  ABISELECT(168,128),
  0,
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&_ZN8S20469C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20469C12v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-72,-40),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev),
  ABISELECT(-168,-128),
  ABISELECT(200,144),
  ABISELECT(80,40),
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev),
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-184,-136),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S20469C1D1Ev,_ZTvn8_n48_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S20469C1D0Ev,_ZTvn8_n48_N8S20469C1D0Ev),
  ABISELECT(-200,-144),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20469C1D1Ev,_ZTv0_n20_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20469C1D0Ev,_ZTv0_n20_N8S20469C1D0Ev),
  ABISELECT(-143,-111),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-248,-168),
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20469C1D1Ev,_ZTv0_n32_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20469C1D0Ev,_ZTv0_n32_N8S20469C1D0Ev),
  ABISELECT(-191,-135),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20469C1D1Ev,_ZTvn16_n32_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N8S20469C1D0Ev,_ZTvn16_n32_N8S20469C1D0Ev),
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev),
  ABISELECT(-408,-292),
  ABISELECT(-336,-252),
  ABISELECT(-392,-284),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-343,-255),
  ABISELECT(-352,-260),
  ABISELECT(-376,-276),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI8S20469C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20469C1[];
extern void ABISELECT(_ZTv0_n88_N9S20469C13D1Ev,_ZTv0_n44_N9S20469C13D1Ev)();
extern void _ZN9S20469C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N9S20469C13D0Ev,_ZTv0_n44_N9S20469C13D0Ev)();
extern void _ZN9S20469C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C13__8S20469C1[] = {
  0,
  ABISELECT(408,292),
  ABISELECT(384,280),
  ABISELECT(368,272),
  ABISELECT(248,168),
  ABISELECT(240,164),
  ABISELECT(224,156),
  ABISELECT(200,144),
  ABISELECT(168,128),
  0,
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C13D1Ev,_ZTv0_n44_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C13D0Ev,_ZTv0_n44_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S20469C13D1Ev,_ZThn128_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S20469C13D0Ev,_ZThn128_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C14__9S20469C13__8S20469C1[] = {
  ABISELECT(-168,-128),
  ABISELECT(200,144),
  ABISELECT(80,40),
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  ABISELECT(-168,-128),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn200_N9S20469C13D1Ev,_ZThn144_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn200_N9S20469C13D0Ev,_ZThn144_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C13__8S20469C1[] = {
  ABISELECT(-200,-144),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C13__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C13__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-184,-136),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D1Ev,_ZTvn8_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N9S20469C13D0Ev,_ZTvn8_n48_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C13D1Ev,_ZThn16_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C13D0Ev,_ZThn16_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C13__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn248_N9S20469C13D1Ev,_ZThn168_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn248_N9S20469C13D0Ev,_ZThn168_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C13__8S20469C1[] = {
  ABISELECT(-248,-168),
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
};
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C13__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D1Ev,_ZTvn16_n32_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C13D0Ev,_ZTvn16_n32_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn384_N9S20469C13D1Ev,_ZThn280_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn384_N9S20469C13D0Ev,_ZThn280_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C19__9S20469C13__8S20469C1[] = {
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  ABISELECT(-384,-280),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn408_N9S20469C13D1Ev,_ZThn292_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn408_N9S20469C13D0Ev,_ZThn292_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C21__9S20469C13__8S20469C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-336,-252),
  ABISELECT(-392,-284),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-343,-255),
  ABISELECT(-352,-260),
  ABISELECT(-376,-276),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S20469C13D1Ev,_ZThn40_N9S20469C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S20469C13D0Ev,_ZThn40_N9S20469C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__A1__9S20469C13__8S20469C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20469C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C2__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C2__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void _ZN8S20469C3D1Ev();
extern void _ZN8S20469C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C1[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
  (VTBL_ENTRY)&_ZN8S20469C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C88S20469C3__8S20469C1[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C3__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
extern void _ZN8S20469C9D1Ev();
extern void _ZN8S20469C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C9__8S20469C1[] = {
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&_ZN8S20469C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S20469C9D1Ev,_ZThn8_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S20469C9D0Ev,_ZThn8_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C2__8S20469C9__8S20469C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn32_N8S20469C9D1Ev,_ZThn16_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn32_N8S20469C9D0Ev,_ZThn16_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C9__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C9__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S20469C9D1Ev,_ZThn40_N8S20469C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S20469C9D0Ev,_ZThn40_N8S20469C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C9__8S20469C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S20469C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__8S20469C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C12__8S20469C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C12__A1__8S20469C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C12__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
extern void _ZN9S20469C14D1Ev();
extern void _ZN9S20469C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C14__8S20469C1[] = {
  ABISELECT(200,144),
  ABISELECT(80,40),
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&_ZN9S20469C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C14D0Ev,
};
extern void _ZN9S20469C15D1Ev();
extern void _ZN9S20469C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-136,-112),
  ABISELECT(72,36),
  ABISELECT(32,16),
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&_ZN9S20469C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C179S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-103,-91),
  ABISELECT(-112,-96),
  ABISELECT(-168,-128),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(112,96),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN8S20469C2D1Ev();
extern void _ZN8S20469C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C159S20469C14__A1__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&_ZN8S20469C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20469C2D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__A1__8S20469C1[] = {
  ABISELECT(152,120),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(152,120),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(128,104),
  (VTBL_ENTRY)&(_ZTI8S20469C2[0]),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(112,96),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D1Ev,_ZThn8_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C15D0Ev,_ZThn8_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C159S20469C14__8S20469C1[] = {
  ABISELECT(136,112),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(136,112),
  (VTBL_ENTRY)&(_ZTI9S20469C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D1Ev,_ZTv0_n24_N9S20469C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C15D0Ev,_ZTv0_n24_N9S20469C15D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C16__9S20469C14__8S20469C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C14__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C14__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C14__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(112,96),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C29S20469C15__9S20469C14__8S20469C1[] = {
  ABISELECT(-184,-136),
  ABISELECT(-119,-99),
  ABISELECT(-128,-104),
  ABISELECT(-152,-120),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D1Ev,_ZThn8_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S20469C14D0Ev,_ZThn8_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C14__8S20469C1[] = {
  ABISELECT(136,112),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(136,112),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D1Ev,_ZTv0_n24_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C14D0Ev,_ZTv0_n24_N9S20469C14D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S20469C14D1Ev,_ZThn40_N9S20469C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S20469C14D0Ev,_ZThn40_N9S20469C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20469C18__9S20469C14__8S20469C1[] = {
  ABISELECT(-80,-40),
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__9S20469C14__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
};
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev)();
extern void ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__9S20469C14__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI9S20469C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D1Ev,_ZTvn16_n32_N9S20469C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n64_N9S20469C14D0Ev,_ZTvn16_n32_N9S20469C14D0Ev),
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C16__8S20469C1[] = {
  ABISELECT(-135,-107),
  ABISELECT(-200,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C16__A1__8S20469C1[] = {
  ABISELECT(-200,-144),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__A1__8S20469C1[] = {
  ABISELECT(-143,-111),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C16__8S20469C1[] = {
  ABISELECT(-143,-111),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__A2__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C8__A2__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(168,124),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
extern void _ZN9S20469C18D1Ev();
extern void _ZN9S20469C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C18__8S20469C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-24,-12),
  ABISELECT(120,104),
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&_ZN9S20469C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C18D0Ev,
};
extern void _ZN9S20469C16D1Ev();
extern void _ZN9S20469C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C169S20469C18__A1__8S20469C1[] = {
  ABISELECT(-183,-131),
  ABISELECT(-248,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
  (VTBL_ENTRY)&_ZN9S20469C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C16D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C169S20469C18__A2__8S20469C1[] = {
  ABISELECT(-248,-168),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C169S20469C18__A2__8S20469C1[] = {
  ABISELECT(-191,-135),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C169S20469C18__A1__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C16[0]),
};
extern void _ZN9S20469C12D1Ev();
extern void _ZN9S20469C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C129S20469C18__A1__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
  (VTBL_ENTRY)&_ZN9S20469C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20469C89S20469C129S20469C18__A3__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A3__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(216,152),
  (VTBL_ENTRY)&(_ZTI8S20469C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C129S20469C18__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(216,152),
  (VTBL_ENTRY)&(_ZTI9S20469C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C59S20469C16__9S20469C18__8S20469C1[] = {
  ABISELECT(-191,-135),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__9S20469C18__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C18__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__A1__9S20469C18__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
};
extern void ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev)();
extern void ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C18__8S20469C1[] = {
  ABISELECT(-207,-147),
  ABISELECT(-216,-152),
  ABISELECT(-272,-184),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20469C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D1Ev,_ZThn16_N9S20469C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N9S20469C18D0Ev,_ZThn16_N9S20469C18D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20469C17__A1__8S20469C1[] = {
  ABISELECT(-303,-235),
  ABISELECT(-312,-240),
  ABISELECT(-368,-272),
  ABISELECT(-144,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C8__9S20469C17__A1__8S20469C1[] = {
  ABISELECT(-159,-119),
  ABISELECT(-168,-124),
  ABISELECT(-224,-156),
  ABISELECT(144,116),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C17__A1__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(312,240),
  (VTBL_ENTRY)&(_ZTI9S20469C17[0]),
};
extern void _ZN9S20469C19D1Ev();
extern void _ZN9S20469C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C19__8S20469C1[] = {
  ABISELECT(-384,-280),
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
  (VTBL_ENTRY)&_ZN9S20469C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20469C209S20469C19__8S20469C1[] = {
  ABISELECT(-319,-243),
  ABISELECT(-328,-248),
  ABISELECT(-384,-280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__8S20469C1[] = {
  ABISELECT(-384,-280),
  0,
  (VTBL_ENTRY)&(_ZTI12S20469C11_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C209S20469C19__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(328,248),
  (VTBL_ENTRY)&(_ZTI9S20469C20[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C19__8S20469C1[] = {
  0,
  ABISELECT(384,280),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C19__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(328,248),
  (VTBL_ENTRY)&(_ZTI9S20469C19[0]),
};
extern void _ZN9S20469C21D1Ev();
extern void _ZN9S20469C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C21__8S20469C1[] = {
  ABISELECT(-336,-252),
  ABISELECT(-392,-284),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  ABISELECT(-343,-255),
  ABISELECT(-352,-260),
  ABISELECT(-376,-276),
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&_ZN9S20469C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C21D0Ev,
};
extern void _ZN9S20469C22D1Ev();
extern void _ZN9S20469C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20469C229S20469C21__8S20469C1[] = {
  ABISELECT(-408,-292),
  ABISELECT(-408,-292),
  0,
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
  (VTBL_ENTRY)&_ZN9S20469C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20469C22D0Ev,
};
static  VTBL_ENTRY _tg__ZTV12S20469C11_nt__9S20469C229S20469C21__8S20469C1[] = {
  0,
  ABISELECT(408,292),
  (VTBL_ENTRY)&(_ZTI9S20469C22[0]),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C3__9S20469C21__8S20469C1[] = {
  ABISELECT(376,276),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(376,276),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20469C5__9S20469C21__8S20469C1[] = {
  ABISELECT(9,5),
  ABISELECT(352,260),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
};
extern void ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C9__9S20469C21__8S20469C1[] = {
  ABISELECT(408,292),
  ABISELECT(72,40),
  0,
  ABISELECT(65,37),
  ABISELECT(56,32),
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(408,292),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D1Ev,_ZTv0_n44_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N9S20469C21D0Ev,_ZTv0_n44_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20469C2__9S20469C21__8S20469C1[] = {
  ABISELECT(392,284),
  ABISELECT(-16,-8),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(392,284),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D1Ev,_ZTv0_n28_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20469C21D0Ev,_ZTv0_n28_N9S20469C21D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20469C12__9S20469C21__8S20469C1[] = {
  ABISELECT(336,252),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-40),
  ABISELECT(336,252),
  (VTBL_ENTRY)&(_ZTI9S20469C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D1Ev,_ZTv0_n24_N9S20469C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20469C21D0Ev,_ZTv0_n24_N9S20469C21D0Ev),
};
static  VTT_ENTRY vtt_S20469C1[] = {
  {&(_ZTV8S20469C1[20]),  20,137},
  {&(_tg__ZTV9S20469C13__8S20469C1[20]),  20,22},
  {&(_tg__ZTV9S20469C14__9S20469C13__8S20469C1[12]),  12,14},
  {&(_tg__ZTV9S20469C16__9S20469C13__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C13__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C13__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C13__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C159S20469C14__9S20469C13__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C13__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C18__9S20469C13__8S20469C1[8]),  8,10},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C13__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C17__A1__9S20469C13__8S20469C1[6]),  6,6},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C13__8S20469C1[5]),  5,7},
  {&(_tg__ZTV9S20469C19__9S20469C13__8S20469C1[7]),  7,9},
  {&(_tg__ZTV9S20469C13__8S20469C1[20]),  20,22},
  {&(_tg__ZTV9S20469C21__9S20469C13__8S20469C1[12]),  12,14},
  {&(_tg__ZTV9S20469C13__8S20469C1[20]),  20,22},
  {&(_tg__ZTV8S20469C2__A1__9S20469C13__8S20469C1[7]),  7,9},
  {&(_tg__ZTV9S20469C12__A1__9S20469C13__8S20469C1[6]),  6,8},
  {&(_ZTV8S20469C1[30]),  30,137},
  {&(_ZTV8S20469C1[38]),  38,137},
  {&(_ZTV8S20469C1[43]),  43,137},
  {&(_ZTV8S20469C1[20]),  20,137},
  {&(_ZTV8S20469C1[20]),  20,137},
  {&(_ZTV8S20469C1[49]),  49,137},
  {&(_ZTV8S20469C1[63]),  63,137},
  {&(_ZTV8S20469C1[78]),  78,137},
  {&(_ZTV8S20469C1[83]),  83,137},
  {&(_ZTV8S20469C1[88]),  88,137},
  {&(_ZTV8S20469C1[71]),  71,137},
  {&(_ZTV8S20469C1[96]),  96,137},
  {&(_ZTV8S20469C1[101]),  101,137},
  {&(_ZTV8S20469C1[114]),  114,137},
  {&(_ZTV8S20469C1[106]),  106,137},
  {&(_ZTV8S20469C1[121]),  121,137},
  {&(_ZTV8S20469C1[135]),  135,137},
  {&(_tg__ZTV8S20469C2__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C2__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C3__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C88S20469C3__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C88S20469C3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C9__8S20469C1[10]),  10,12},
  {&(_tg__ZTV8S20469C2__8S20469C9__8S20469C1[7]),  7,9},
  {&(_tg__ZTV8S20469C3__8S20469C9__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C9__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C9__8S20469C1[10]),  10,12},
  {&(_tg__ZTV9S20469C12__8S20469C9__8S20469C1[6]),  6,8},
  {&(_tg__ZTV12S20469C11_nt__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C12__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C12__A1__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C12__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C12__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C14__8S20469C1[11]),  11,13},
  {&(_tg__ZTV9S20469C159S20469C14__8S20469C1[9]),  9,11},
  {&(_tg__ZTV9S20469C179S20469C159S20469C14__8S20469C1[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C179S20469C159S20469C14__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C179S20469C159S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C159S20469C14__A1__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__8S20469C29S20469C159S20469C14__A1__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__8S20469C29S20469C159S20469C14__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C16__9S20469C159S20469C14__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C159S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C159S20469C14__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C159S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C2__9S20469C159S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C159S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C16__9S20469C14__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__9S20469C14__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C29S20469C15__9S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C3__9S20469C14__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C18__9S20469C14__8S20469C1[8]),  8,10},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__9S20469C14__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C17__A1__9S20469C14__8S20469C1[6]),  6,6},
  {&(_tg__ZTV9S20469C129S20469C18__9S20469C14__8S20469C1[5]),  5,7},
  {&(_tg__ZTV9S20469C16__8S20469C1[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C16__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C16__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C8__A2__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C8__A2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C18__8S20469C1[7]),  7,9},
  {&(_tg__ZTV9S20469C169S20469C18__A1__8S20469C1[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt9S20469C169S20469C18__A2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C169S20469C18__A2__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C169S20469C18__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C129S20469C18__A1__8S20469C1[5]),  5,7},
  {&(_tg__ZTV8S20469C89S20469C129S20469C18__A3__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__8S20469C89S20469C129S20469C18__A3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C129S20469C18__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C59S20469C16__9S20469C18__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C17__9S20469C18__8S20469C1[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C18__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__A1__9S20469C18__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C12__9S20469C18__8S20469C1[5]),  5,7},
  {&(_tg__ZTV9S20469C17__A1__8S20469C1[6]),  6,6},
  {&(_tg__ZTV8S20469C8__9S20469C17__A1__8S20469C1[5]),  5,5},
  {&(_tg__ZTV8S20469C5__9S20469C17__A1__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C19__8S20469C1[6]),  6,8},
  {&(_tg__ZTV9S20469C209S20469C19__8S20469C1[5]),  5,5},
  {&(_tg__ZTV12S20469C11_nt9S20469C209S20469C19__A3__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C209S20469C19__8S20469C1[3]),  3,3},
  {&(_tg__ZTV12S20469C11_nt__9S20469C19__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C5__9S20469C19__8S20469C1[3]),  3,3},
  {&(_tg__ZTV9S20469C21__8S20469C1[11]),  11,13},
  {&(_tg__ZTV9S20469C229S20469C21__8S20469C1[4]),  4,6},
  {&(_tg__ZTV12S20469C11_nt__9S20469C229S20469C21__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C3__9S20469C21__8S20469C1[6]),  6,8},
  {&(_tg__ZTV8S20469C5__9S20469C21__8S20469C1[3]),  3,3},
  {&(_tg__ZTV8S20469C9__9S20469C21__8S20469C1[11]),  11,13},
  {&(_tg__ZTV8S20469C2__9S20469C21__8S20469C1[7]),  7,9},
  {&(_tg__ZTV8S20469C9__9S20469C21__8S20469C1[11]),  11,13},
  {&(_tg__ZTV9S20469C12__9S20469C21__8S20469C1[6]),  6,8},
};
extern VTBL_ENTRY _ZTI8S20469C1[];
extern  VTBL_ENTRY _ZTV8S20469C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20469C1[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D0Ev,_ZTv0_n32_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C14D0Ev,_ZThn40_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C14D1Ev,_ZTv0_n32_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20469C14D1Ev,_ZThn40_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D0Ev,_ZTv0_n20_N9S20469C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D0Ev,_ZThn16_N9S20469C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C14D1Ev,_ZTv0_n20_N9S20469C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C14D1Ev,_ZThn16_N9S20469C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D0Ev,_ZTv0_n20_N9S20469C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D0Ev,_ZThn16_N9S20469C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C15D1Ev,_ZTv0_n20_N9S20469C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C15D1Ev,_ZThn16_N9S20469C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D0Ev,_ZTv0_n24_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C9D0Ev,_ZThn40_N8S20469C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C9D0Ev,_ZThn16_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C9D1Ev,_ZTv0_n24_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C9D1Ev,_ZThn40_N8S20469C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C9D1Ev,_ZThn16_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D0Ev,_ZTv0_n28_N8S20469C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C9D0Ev,_ZThn8_N8S20469C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C9D1Ev,_ZTv0_n28_N8S20469C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C9D1Ev,_ZThn8_N8S20469C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D0Ev,_ZTv0_n24_N8S20469C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D0Ev,_ZThn8_N8S20469C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C2D1Ev,_ZTv0_n24_N8S20469C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C2D1Ev,_ZThn8_N8S20469C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D0Ev,_ZTv0_n28_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D0Ev,_ZThn8_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20469C13D0Ev,_ZThn280_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20469C13D1Ev,_ZTv0_n28_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20469C13D1Ev,_ZThn8_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20469C13D1Ev,_ZThn280_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D0Ev,_ZTv0_n32_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20469C13D0Ev,_ZThn168_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20469C13D1Ev,_ZTv0_n32_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20469C13D1Ev,_ZThn168_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D0Ev,_ZTv0_n24_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20469C13D0Ev,_ZThn40_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C13D0Ev,_ZThn16_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20469C13D1Ev,_ZTv0_n24_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S20469C13D1Ev,_ZThn40_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20469C13D1Ev,_ZThn16_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D0Ev,_ZTv0_n20_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20469C13D0Ev,_ZThn144_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20469C13D1Ev,_ZTv0_n20_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20469C13D1Ev,_ZThn144_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D0Ev,_ZTv0_n48_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S20469C13D0Ev,_ZThn292_N9S20469C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20469C13D0Ev,_ZThn128_N9S20469C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20469C13D1Ev,_ZTv0_n48_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S20469C13D1Ev,_ZThn292_N9S20469C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S20469C13D1Ev,_ZThn128_N9S20469C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C13D0Ev,_ZTv0_n44_N9S20469C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20469C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N9S20469C13D1Ev,_ZTv0_n44_N9S20469C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20469C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20469C1D0Ev,_ZTv0_n32_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20469C1D0Ev,_ZThn168_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20469C1D1Ev,_ZTv0_n32_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S20469C1D1Ev,_ZThn168_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20469C1D0Ev,_ZTv0_n20_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20469C1D0Ev,_ZThn144_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20469C1D1Ev,_ZTv0_n20_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20469C1D1Ev,_ZThn144_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20469C1D0Ev,_ZTv0_n48_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S20469C1D0Ev,_ZThn292_N8S20469C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20469C1D0Ev,_ZThn128_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20469C1D1Ev,_ZTv0_n48_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N8S20469C1D1Ev,_ZThn292_N8S20469C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20469C1D1Ev,_ZThn128_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C1D0Ev,_ZTv0_n24_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C1D0Ev,_ZThn40_N8S20469C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C1D0Ev,_ZThn16_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20469C1D1Ev,_ZTv0_n24_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S20469C1D1Ev,_ZThn40_N8S20469C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20469C1D1Ev,_ZThn16_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C1D0Ev,_ZTv0_n28_N8S20469C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20469C1D0Ev,_ZThn280_N8S20469C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C1D0Ev,_ZThn8_N8S20469C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20469C1D1Ev,_ZTv0_n28_N8S20469C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20469C1D1Ev,_ZThn280_N8S20469C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20469C1D1Ev,_ZThn8_N8S20469C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20469C1 = {  "S20469C1", // class name
  bases_S20469C1, 50,
  &(vtc_S20469C1[0]), // expected_vtbl_contents
  &(vtt_S20469C1[0]), // expected_vtt_contents
  ABISELECT(424,304), // object size
  NSPAIRA(_ZTI8S20469C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20469C1),137, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20469C1),117, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C3  : virtual S19676C9 {
  virtual  ~S7864C3(); // _ZN7S7864C3D2Ev
  S7864C3(); // tgen
};
//SIG(-1 S7864C3) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S7864C3 ::~S7864C3(){ note_dtor("S7864C3", this);}
S7864C3 ::S7864C3(){ note_ctor("S7864C3", this);} // tgen

static void Test_S7864C3()
{
  extern Class_Descriptor cd_S7864C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S7864C3, buf);
    S7864C3 *dp, &lv = *(dp=new (buf) S7864C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7864C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C3)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S7864C3");
    test_class_info(&lv, &cd_S7864C3);
    dp->~S7864C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C3(Test_S7864C3, "S7864C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7864C3C1Ev();
extern void _ZN7S7864C3D2Ev();
Name_Map name_map_S7864C3[] = {
  NSPAIR(_ZN7S7864C3C1Ev),
  NSPAIR(_ZN7S7864C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S7864C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C3[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C3[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C3[];
static  VTT_ENTRY vtt_S7864C3[] = {
  {&(_ZTV7S7864C3[3]),  3,10},
  {&(_ZTV7S7864C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C3 = {  "S7864C3", // class name
  bases_S7864C3, 1,
  &(vtc_S7864C3[0]), // expected_vtbl_contents
  &(vtt_S7864C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7864C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7864C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C6  : virtual S19676C9 , S7864C3 {
  void *s7864c6f0[10];
  int s7864c6f1;
  __tsi64 s7864c6f2;
  ~S7864C6(); // tgen
  S7864C6(); // tgen
};
//SIG(-1 S7864C6) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S7864C6 ::~S7864C6(){ note_dtor("S7864C6", this);} // tgen
S7864C6 ::S7864C6(){ note_ctor("S7864C6", this);} // tgen

static void Test_S7864C6()
{
  extern Class_Descriptor cd_S7864C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S7864C6, buf);
    S7864C6 *dp, &lv = *(dp=new (buf) S7864C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S7864C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C6)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S7864C6");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(112,56), "S7864C6");
    check_base_class_offset(lv, (S7864C3*), 0, "S7864C6");
    check_field_offset(lv, s7864c6f0, ABISELECT(8,4), "S7864C6.s7864c6f0");
    check_field_offset(lv, s7864c6f1, ABISELECT(88,44), "S7864C6.s7864c6f1");
    check_field_offset(lv, s7864c6f2, ABISELECT(96,48), "S7864C6.s7864c6f2");
    test_class_info(&lv, &cd_S7864C6);
    dp->~S7864C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C6(Test_S7864C6, "S7864C6", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S7864C6C1Ev();
extern void _ZN7S7864C6D1Ev();
Name_Map name_map_S7864C6[] = {
  NSPAIR(_ZN7S7864C6C1Ev),
  NSPAIR(_ZN7S7864C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C6[];
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C6[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C6[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C6[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C6[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
static  VTT_ENTRY vtt_S7864C6[] = {
  {&(_ZTV7S7864C6[3]),  3,10},
  {&(_tg__ZTV7S7864C3__7S7864C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C6[3]),  3,5},
  {&(_ZTV7S7864C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C6 = {  "S7864C6", // class name
  bases_S7864C6, 2,
  &(vtc_S7864C6[0]), // expected_vtbl_contents
  &(vtt_S7864C6[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S7864C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7864C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C8  : virtual S7864C6 , S7864C3 {
  int s7864c8f0;
  virtual  ~S7864C8(); // _ZN7S7864C8D2Ev
  S7864C8(); // tgen
};
//SIG(-1 S7864C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S7864C8 ::~S7864C8(){ note_dtor("S7864C8", this);}
S7864C8 ::S7864C8(){ note_ctor("S7864C8", this);} // tgen

static void Test_S7864C8()
{
  extern Class_Descriptor cd_S7864C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S7864C8, buf);
    S7864C8 *dp, &lv = *(dp=new (buf) S7864C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S7864C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C8)");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(128,64), "S7864C8");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(128,64), "S7864C8");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(128,64), "S7864C8");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(16,8), "S7864C8");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(16,8), "S7864C8");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C8");
    check_field_offset(lv, s7864c8f0, ABISELECT(8,4), "S7864C8.s7864c8f0");
    test_class_info(&lv, &cd_S7864C8);
    dp->~S7864C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C8(Test_S7864C8, "S7864C8", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S7864C8C1Ev();
extern void _ZN7S7864C8D2Ev();
Name_Map name_map_S7864C8[] = {
  NSPAIR(_ZN7S7864C8C1Ev),
  NSPAIR(_ZN7S7864C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C8[];
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S7864C8D1Ev,_ZThn64_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S7864C8D0Ev,_ZThn64_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C8[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C8[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C8[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S7864C3D1Ev,_ZThn64_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S7864C3D0Ev,_ZThn64_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__7S7864C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__7S7864C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C8[] = {
  {&(_ZTV7S7864C8[4]),  4,17},
  {&(_tg__ZTV7S7864C3__A1__7S7864C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__7S7864C8[3]),  3,5},
  {&(_ZTV7S7864C8[10]),  10,17},
  {&(_ZTV7S7864C8[15]),  15,17},
  {&(_tg__ZTV7S7864C6__7S7864C8[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__7S7864C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C3D0Ev,_ZThn64_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C3D1Ev,_ZThn64_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C8D0Ev,_ZThn64_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7864C8D1Ev,_ZThn64_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C8 = {  "S7864C8", // class name
  bases_S7864C8, 4,
  &(vtc_S7864C8[0]), // expected_vtbl_contents
  &(vtt_S7864C8[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S7864C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7864C8),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C8),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C10  : S19676C9 , virtual S7864C3 , virtual S7864C6 , S7864C8 {
  int s7864c10f0;
  virtual  ~S7864C10(); // _ZN8S7864C10D2Ev
  S7864C10(); // tgen
};
//SIG(-1 S7864C10) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S7864C10 ::~S7864C10(){ note_dtor("S7864C10", this);}
S7864C10 ::S7864C10(){ note_ctor("S7864C10", this);} // tgen

static void Test_S7864C10()
{
  extern Class_Descriptor cd_S7864C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S7864C10, buf);
    S7864C10 *dp, &lv = *(dp=new (buf) S7864C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S7864C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C10)");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S7864C10");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(80,44), "S7864C10");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(80,44), "S7864C10");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(80,44), "S7864C10");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(80,44), "S7864C10");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), ABISELECT(64,40), "S7864C10");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(128,72), "S7864C10");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(128,72), "S7864C10");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(128,72), "S7864C10");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(48,28), "S7864C10");
    check_base_class_offset(lv, (S7864C8*), ABISELECT(48,28), "S7864C10");
    check_field_offset(lv, s7864c10f0, ABISELECT(60,36), "S7864C10.s7864c10f0");
    test_class_info(&lv, &cd_S7864C10);
    dp->~S7864C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C10(Test_S7864C10, "S7864C10", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN8S7864C10C1Ev();
extern void _ZN8S7864C10D2Ev();
Name_Map name_map_S7864C10[] = {
  NSPAIR(_ZN8S7864C10C1Ev),
  NSPAIR(_ZN8S7864C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
static Base_Class bases_S7864C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(128,72), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C10[];
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S7864C10D1Ev,_ZThn72_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S7864C10D0Ev,_ZThn72_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C10[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C10[];
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__8S7864C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn16_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn16_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__8S7864C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S7864C8D1Ev,_ZThn44_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S7864C8D0Ev,_ZThn44_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__8S7864C10[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn16_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn16_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__8S7864C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C10[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C10[] = {
  {&(_ZTV8S7864C10[5]),  5,30},
  {&(_tg__ZTV7S7864C8__8S7864C10[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__8S7864C10[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__8S7864C10[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__8S7864C10[3]),  3,5},
  {&(_ZTV8S7864C10[17]),  17,30},
  {&(_ZTV8S7864C10[22]),  22,30},
  {&(_ZTV8S7864C10[28]),  28,30},
  {&(_ZTV8S7864C10[11]),  11,30},
  {&(_tg__ZTV7S7864C3__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C10[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn16_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn16_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7864C8D0Ev,_ZThn44_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7864C8D1Ev,_ZThn44_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn16_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn16_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C10D0Ev,_ZThn72_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C10D1Ev,_ZThn72_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C10 = {  "S7864C10", // class name
  bases_S7864C10, 7,
  &(vtc_S7864C10[0]), // expected_vtbl_contents
  &(vtt_S7864C10[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI8S7864C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7864C10),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C10),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C11  : virtual S19676C9 , virtual S7864C6 , S7864C3 {
  void *s7864c11f0;
  int s7864c11f1;
  ::S19676C9 s7864c11f2[3];
  int s7864c11f3[7];
  virtual  ~S7864C11(); // _ZN8S7864C11D2Ev
  S7864C11(); // tgen
};
//SIG(-1 S7864C11) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S7864C11 ::~S7864C11(){ note_dtor("S7864C11", this);}
S7864C11 ::S7864C11(){ note_ctor("S7864C11", this);} // tgen

static void Test_S7864C11()
{
  extern Class_Descriptor cd_S7864C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S7864C11, buf);
    S7864C11 *dp, &lv = *(dp=new (buf) S7864C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S7864C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C11)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7864C11");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(208,124), "S7864C11");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(208,124), "S7864C11");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(208,124), "S7864C11");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(256,152), "S7864C11");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(256,152), "S7864C11");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C11");
    check_field_offset(lv, s7864c11f0, ABISELECT(8,4), "S7864C11.s7864c11f0");
    check_field_offset(lv, s7864c11f1, ABISELECT(16,8), "S7864C11.s7864c11f1");
    check_field_offset(lv, s7864c11f2, ABISELECT(32,12), "S7864C11.s7864c11f2");
    check_field_offset(lv, s7864c11f3, ABISELECT(176,96), "S7864C11.s7864c11f3");
    test_class_info(&lv, &cd_S7864C11);
    dp->~S7864C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C11(Test_S7864C11, "S7864C11", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S7864C11C1Ev();
extern void _ZN8S7864C11D2Ev();
Name_Map name_map_S7864C11[] = {
  NSPAIR(_ZN8S7864C11C1Ev),
  NSPAIR(_ZN8S7864C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C11[];
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn124_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn124_N8S7864C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn256_N8S7864C11D1Ev,_ZThn152_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn256_N8S7864C11D0Ev,_ZThn152_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C11[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C11[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__8S7864C11[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn124_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn124_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__8S7864C11[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__8S7864C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__8S7864C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C11[] = {
  {&(_ZTV8S7864C11[4]),  4,17},
  {&(_tg__ZTV7S7864C3__A1__8S7864C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__8S7864C11[3]),  3,5},
  {&(_ZTV8S7864C11[9]),  9,17},
  {&(_ZTV8S7864C11[15]),  15,17},
  {&(_tg__ZTV7S7864C6__8S7864C11[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__8S7864C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__8S7864C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn124_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn124_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7864C11D0Ev,_ZThn152_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7864C11D1Ev,_ZThn152_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn124_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn124_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C11 = {  "S7864C11", // class name
  bases_S7864C11, 4,
  &(vtc_S7864C11[0]), // expected_vtbl_contents
  &(vtt_S7864C11[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S7864C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7864C11),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C11),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C9  : virtual S7864C6 , virtual S7864C10 , S7864C11 , S19676C9 , S7864C3 {
  virtual  ~S7864C9(); // _ZN7S7864C9D2Ev
  S7864C9(); // tgen
};
//SIG(-1 S7864C9) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S7864C9 ::~S7864C9(){ note_dtor("S7864C9", this);}
S7864C9 ::S7864C9(){ note_ctor("S7864C9", this);} // tgen

static void Test_S7864C9()
{
  extern Class_Descriptor cd_S7864C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S7864C9, buf);
    S7864C9 *dp, &lv = *(dp=new (buf) S7864C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S7864C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C9)");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(368,212), "S7864C9");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(368,212), "S7864C9");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(368,212), "S7864C9");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(368,212), "S7864C9");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(264,156), "S7864C9");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(264,156), "S7864C9");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(416,240), "S7864C9");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(480,280), "S7864C9");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(464,268), "S7864C9");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(464,268), "S7864C9");
    check_base_class_offset(lv, (S7864C10*), ABISELECT(416,240), "S7864C9");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), 0, "S7864C9");
    check_base_class_offset(lv, (S7864C11*), 0, "S7864C9");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7864C9");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), ABISELECT(256,152), "S7864C9");
    test_class_info(&lv, &cd_S7864C9);
    dp->~S7864C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C9(Test_S7864C9, "S7864C9", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN7S7864C9C1Ev();
extern void _ZN7S7864C9D2Ev();
Name_Map name_map_S7864C9[] = {
  NSPAIR(_ZN7S7864C9C1Ev),
  NSPAIR(_ZN7S7864C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
static Base_Class bases_S7864C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7864C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7864C3,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C9[];
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
extern void ABISELECT(_ZThn208_N7S7864C9D1Ev,_ZThn124_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn208_N7S7864C9D0Ev,_ZThn124_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn264_N7S7864C9D1Ev,_ZThn156_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn264_N7S7864C9D0Ev,_ZThn156_N7S7864C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C9D1Ev,_ZThn280_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C9D0Ev,_ZThn280_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C9[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7864C9D1Ev,_ZThn124_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7864C9D0Ev,_ZThn124_N7S7864C9D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C9[];
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__7S7864C9[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A3__7S7864C9[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C3D1Ev,_ZThn212_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C3D0Ev,_ZThn212_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A3__7S7864C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn368_N8S7864C11D1Ev,_ZThn212_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn368_N8S7864C11D0Ev,_ZThn212_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__7S7864C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn264_N8S7864C11D1Ev,_ZThn156_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn264_N8S7864C11D0Ev,_ZThn156_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__7S7864C9[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A__7S7864C9[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__7S7864C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__7S7864C9[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__7S7864C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__7S7864C9[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__7S7864C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C9[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C9[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__7S7864C9[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
static  VTT_ENTRY vtt_S7864C9[] = {
  {&(_ZTV7S7864C9[6]),  6,48},
  {&(_tg__ZTV8S7864C11__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A3__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A3__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A__7S7864C9[3]),  3,5},
  {&(_ZTV7S7864C9[21]),  21,48},
  {&(_ZTV7S7864C9[26]),  26,48},
  {&(_ZTV7S7864C9[34]),  34,48},
  {&(_ZTV7S7864C9[46]),  46,48},
  {&(_ZTV7S7864C9[40]),  40,48},
  {&(_ZTV7S7864C9[15]),  15,48},
  {&(_tg__ZTV7S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C9[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C9[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__7S7864C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7864C11D0Ev,_ZThn156_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7864C11D1Ev,_ZThn156_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7864C11D0Ev,_ZThn212_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7864C11D1Ev,_ZThn212_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C3D0Ev,_ZThn212_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C3D1Ev,_ZThn212_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C9D0Ev,_ZThn280_N7S7864C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7864C9D0Ev,_ZThn156_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C9D1Ev,_ZThn280_N7S7864C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7864C9D1Ev,_ZThn156_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C9 = {  "S7864C9", // class name
  bases_S7864C9, 12,
  &(vtc_S7864C9[0]), // expected_vtbl_contents
  &(vtt_S7864C9[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI7S7864C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7864C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C9),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C7  : virtual S7864C3 , virtual S7864C8 , S7864C6 , S7864C9 , S7864C10 {
  short s7864c7f0;
  virtual  ~S7864C7(); // _ZN7S7864C7D2Ev
  S7864C7(); // tgen
};
//SIG(-1 S7864C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S7864C7 ::~S7864C7(){ note_dtor("S7864C7", this);}
S7864C7 ::S7864C7(){ note_ctor("S7864C7", this);} // tgen

static void Test_S7864C7()
{
  extern Class_Descriptor cd_S7864C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S7864C7, buf);
    S7864C7 *dp, &lv = *(dp=new (buf) S7864C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S7864C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C7)");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(464,260), "S7864C7");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(464,260), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), ABISELECT(456,256), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(456,256), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(456,256), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(528,296), "S7864C7");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(528,296), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(512,288), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*), ABISELECT(512,288), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), 0, "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*), 0, "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(640,352), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(688,380), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(688,380), "S7864C7");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(640,352), "S7864C7");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(112,56), "S7864C7");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(112,56), "S7864C7");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(320,180), "S7864C7");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(368,208), "S7864C7");
    check_base_class_offset(lv, (S7864C9*), ABISELECT(112,56), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(384,212), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(432,240), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(432,240), "S7864C7");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*), ABISELECT(384,212), "S7864C7");
    check_field_offset(lv, s7864c7f0, ABISELECT(448,252), "S7864C7.s7864c7f0");
    test_class_info(&lv, &cd_S7864C7);
    dp->~S7864C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C7(Test_S7864C7, "S7864C7", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN7S7864C7C1Ev();
extern void _ZN7S7864C7D2Ev();
Name_Map name_map_S7864C7[] = {
  NSPAIR(_ZN7S7864C7C1Ev),
  NSPAIR(_ZN7S7864C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
static Base_Class bases_S7864C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(528,296), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C7[];
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C7D1Ev,_ZThn180_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C7D0Ev,_ZThn180_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn512_N7S7864C7D1Ev,_ZThn288_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn512_N7S7864C7D0Ev,_ZThn288_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn528_N7S7864C7D1Ev,_ZThn296_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn528_N7S7864C7D0Ev,_ZThn296_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn640_N7S7864C7D1Ev,_ZThn352_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn640_N7S7864C7D0Ev,_ZThn352_N7S7864C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY vtc_S7864C7[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7864C7D1Ev,_ZThn180_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7864C7D0Ev,_ZThn180_N7S7864C7D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C7[];
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__A__7S7864C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A3__7S7864C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C3D1Ev,_ZThn260_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C3D0Ev,_ZThn260_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A3__7S7864C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C6D1Ev,_ZThn260_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C6D0Ev,_ZThn260_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__A__7S7864C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__7S7864C7[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A5__7S7864C7[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn352_N7S7864C3D1Ev,_ZThn204_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn352_N7S7864C3D0Ev,_ZThn204_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A5__7S7864C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn352_N8S7864C11D1Ev,_ZThn204_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn352_N8S7864C11D0Ev,_ZThn204_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__7S7864C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn416_N8S7864C11D1Ev,_ZThn240_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn416_N8S7864C11D0Ev,_ZThn240_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__7S7864C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S7864C3D1Ev,_ZThn52_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S7864C3D0Ev,_ZThn52_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A6__7S7864C7[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__7S7864C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn352_N7S7864C9D1Ev,_ZThn204_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn352_N7S7864C9D0Ev,_ZThn204_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__7S7864C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn528_N7S7864C9D1Ev,_ZThn296_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn528_N7S7864C9D0Ev,_ZThn296_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__7S7864C7[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__7S7864C7[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__7S7864C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__7S7864C7[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A7__7S7864C7[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn20_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn20_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A7__7S7864C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn96_N7S7864C8D1Ev,_ZThn56_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn96_N7S7864C8D0Ev,_ZThn56_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A2__7S7864C7[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn20_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn20_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A2__7S7864C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__A__7S7864C7[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn48_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn48_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S7864C10D1Ev,_ZThn84_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S7864C10D0Ev,_ZThn84_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__A__7S7864C7[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__A__7S7864C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__7S7864C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C7[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C7[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C7[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C7[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C7[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
static  VTT_ENTRY vtt_S7864C7[] = {
  {&(_ZTV7S7864C7[7]),  7,77},
  {&(_tg__ZTV7S7864C6__A__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__A__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C9__7S7864C7[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A5__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A5__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__7S7864C7[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A7__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A7__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A2__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A2__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__A__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__A__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__A__7S7864C7[4]),  4,6},
  {&(_ZTV7S7864C7[43]),  43,77},
  {&(_ZTV7S7864C7[48]),  48,77},
  {&(_ZTV7S7864C7[55]),  55,77},
  {&(_ZTV7S7864C7[61]),  61,77},
  {&(_ZTV7S7864C7[15]),  15,77},
  {&(_ZTV7S7864C7[69]),  69,77},
  {&(_ZTV7S7864C7[75]),  75,77},
  {&(_ZTV7S7864C7[24]),  24,77},
  {&(_ZTV7S7864C7[31]),  31,77},
  {&(_ZTV7S7864C7[37]),  37,77},
  {&(_tg__ZTV7S7864C3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C7[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C7[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C7[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D0Ev,_ZThn48_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7864C10D1Ev,_ZThn48_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7864C10D0Ev,_ZThn84_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7864C10D1Ev,_ZThn84_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D0Ev,_ZThn20_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C8D1Ev,_ZThn20_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn8_N7S7864C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C8D0Ev,_ZThn56_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn8_N7S7864C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C8D1Ev,_ZThn56_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C9D0Ev,_ZThn296_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C9D1Ev,_ZThn296_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C9D0Ev,_ZThn204_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C9D1Ev,_ZThn204_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D0Ev,_ZThn240_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7864C9D1Ev,_ZThn240_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7864C11D0Ev,_ZThn240_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7864C11D1Ev,_ZThn240_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7864C11D0Ev,_ZThn204_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7864C11D1Ev,_ZThn204_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C6D0Ev,_ZThn260_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C6D1Ev,_ZThn260_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7864C3D0Ev,_ZThn4_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D0Ev,_ZThn20_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C3D0Ev,_ZThn52_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C3D0Ev,_ZThn204_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C3D0Ev,_ZThn260_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7864C3D1Ev,_ZThn4_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7864C3D1Ev,_ZThn20_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7864C3D1Ev,_ZThn52_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C3D1Ev,_ZThn204_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C3D1Ev,_ZThn260_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7864C7D0Ev,_ZThn352_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7864C7D1Ev,_ZThn352_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7864C7D0Ev,_ZThn288_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7864C7D1Ev,_ZThn288_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C7D0Ev,_ZThn296_N7S7864C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7864C7D1Ev,_ZThn296_N7S7864C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C7 = {  "S7864C7", // class name
  bases_S7864C7, 21,
  &(vtc_S7864C7[0]), // expected_vtbl_contents
  &(vtt_S7864C7[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI7S7864C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7864C7),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C7),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C5  : virtual S7864C6 , virtual S7864C7 , virtual S7864C9 , virtual S19676C2 , S7864C10 {
  short s7864c5f0;
  void *s7864c5f1[2];
  ~S7864C5(); // tgen
  S7864C5(); // tgen
};
//SIG(-1 S7864C5) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S7864C5 ::~S7864C5(){ note_dtor("S7864C5", this);} // tgen
S7864C5 ::S7864C5(){ note_ctor("S7864C5", this);} // tgen

static void Test_S7864C5()
{
  extern Class_Descriptor cd_S7864C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S7864C5, buf);
    S7864C5 *dp, &lv = *(dp=new (buf) S7864C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S7864C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C5)");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(192,108), "S7864C5");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(192,108), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(88,52), "S7864C5");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(88,52), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C7*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C7*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(696,392), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(704,396), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C7*), ABISELECT(704,396), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(240,136), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C7*), ABISELECT(240,136), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(720,404), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(768,432), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(768,432), "S7864C5");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*)(S7864C7*), ABISELECT(720,404), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(720,404), "S7864C5");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(352,192), "S7864C5");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(352,192), "S7864C5");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*)(S7864C7*), ABISELECT(560,316), "S7864C5");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(608,344), "S7864C5");
    check_base_class_offset(lv, (S7864C9*)(S7864C7*), ABISELECT(352,192), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C7*), ABISELECT(624,348), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(672,376), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(672,376), "S7864C5");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C7*), ABISELECT(624,348), "S7864C5");
    check_base_class_offset(lv, (S7864C7*), ABISELECT(240,136), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(784,444), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(784,444), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(992,568), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(1040,596), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C9*), ABISELECT(784,444), "S7864C5");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), 0, "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(48,28), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(48,28), "S7864C5");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*), 0, "S7864C5");
    check_field_offset(lv, s7864c5f0, ABISELECT(64,40), "S7864C5.s7864c5f0");
    check_field_offset(lv, s7864c5f1, ABISELECT(72,44), "S7864C5.s7864c5f1");
    test_class_info(&lv, &cd_S7864C5);
    dp->~S7864C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C5(Test_S7864C5, "S7864C5", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN7S7864C5C1Ev();
extern void _ZN7S7864C5D1Ev();
Name_Map name_map_S7864C5[] = {
  NSPAIR(_ZN7S7864C5C1Ev),
  NSPAIR(_ZN7S7864C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C7;
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
static Base_Class bases_S7864C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7864C3,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    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
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7864C7,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(784,444), //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
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C10,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C5[];
extern void _ZN7S7864C5D1Ev();
extern void _ZN7S7864C5D0Ev();
extern void ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn240_N7S7864C5D1Ev,_ZThn136_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn240_N7S7864C5D0Ev,_ZThn136_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn696_N7S7864C5D1Ev,_ZThn392_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn696_N7S7864C5D0Ev,_ZThn392_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn704_N7S7864C5D1Ev,_ZThn396_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn704_N7S7864C5D0Ev,_ZThn396_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn720_N7S7864C5D1Ev,_ZThn404_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn720_N7S7864C5D0Ev,_ZThn404_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn784_N7S7864C5D1Ev,_ZThn444_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn784_N7S7864C5D0Ev,_ZThn444_N7S7864C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY vtc_S7864C5[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&_ZN7S7864C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C5D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C5[];
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C5[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A3__7S7864C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A10__7S7864C5[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S7864C3D1Ev,_ZThn80_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S7864C3D0Ev,_ZThn80_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A10__7S7864C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A3__7S7864C5[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn144_N7S7864C8D1Ev,_ZThn80_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn144_N7S7864C8D0Ev,_ZThn80_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A3__7S7864C5[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn696_N8S7864C10D1Ev,_ZThn392_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn696_N8S7864C10D0Ev,_ZThn392_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__A__7S7864C5[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn192_N8S7864C10D1Ev,_ZThn108_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn192_N8S7864C10D0Ev,_ZThn108_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C5[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__A__7S7864C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__A__7S7864C5[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__7S7864C5[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C5[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C5[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C67S7864C7__A1__7S7864C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C5[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C5[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C5[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C5[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7__7S7864C5[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C7__7S7864C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7__7S7864C5[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7__7S7864C5[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7__7S7864C5[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn268_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn268_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7__7S7864C5[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C5[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7__7S7864C5[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C5[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C5[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__A1__7S7864C5[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C5[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C5[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C5[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C5[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C5[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C5[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C5[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C5[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C5[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C5[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C5[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C5[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C5[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C5[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__A1__7S7864C5[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C5[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C5[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C5[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C5[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C5[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C5[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C5[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
static  VTT_ENTRY vtt_S7864C5[] = {
  {&(_ZTV7S7864C5[10]),  10,114},
  {&(_tg__ZTV8S7864C10__A__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A3__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A10__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A10__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A3__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A3__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__A__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__A__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__A__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__A__7S7864C5[4]),  4,6},
  {&(_ZTV7S7864C5[22]),  22,114},
  {&(_ZTV7S7864C5[27]),  27,114},
  {&(_ZTV7S7864C5[37]),  37,114},
  {&(_ZTV7S7864C5[73]),  73,114},
  {&(_ZTV7S7864C5[80]),  80,114},
  {&(_ZTV7S7864C5[45]),  45,114},
  {&(_ZTV7S7864C5[88]),  88,114},
  {&(_ZTV7S7864C5[94]),  94,114},
  {&(_ZTV7S7864C5[49]),  49,114},
  {&(_ZTV7S7864C5[54]),  54,114},
  {&(_ZTV7S7864C5[61]),  61,114},
  {&(_ZTV7S7864C5[67]),  67,114},
  {&(_ZTV7S7864C5[103]),  103,114},
  {&(_ZTV7S7864C5[107]),  107,114},
  {&(_ZTV7S7864C5[112]),  112,114},
  {&(_ZTV7S7864C5[16]),  16,114},
  {&(_tg__ZTV7S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C5[7]),  7,9},
  {&(_tg__ZTV7S7864C67S7864C7__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C6__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C9__7S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C7__7S7864C5[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C5[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C5[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C5[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__A1__7S7864C5[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__A1__7S7864C5[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C5[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7864C5[];
extern  VTBL_ENTRY _ZTV7S7864C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C5[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn268_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn268_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D0Ev,_ZThn260_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7864C7D1Ev,_ZThn260_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D0Ev,_ZThn200_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7864C9D1Ev,_ZThn200_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn212_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn212_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D0Ev,_ZThn56_N7S7864C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C6D1Ev,_ZThn56_N7S7864C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7864C10D0Ev,_ZThn108_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S7864C10D1Ev,_ZThn108_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D0Ev,_ZThn44_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S7864C10D0Ev,_ZThn392_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7864C10D1Ev,_ZThn44_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S7864C10D1Ev,_ZThn392_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C8D0Ev,_ZThn80_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C8D1Ev,_ZThn80_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D0Ev,_ZThn56_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C3D0Ev,_ZThn80_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7864C3D1Ev,_ZThn56_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7864C3D1Ev,_ZThn80_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7864C5D0Ev,_ZThn444_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7864C5D1Ev,_ZThn444_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7864C5D0Ev,_ZThn404_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7864C5D1Ev,_ZThn404_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7864C5D0Ev,_ZThn396_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7864C5D1Ev,_ZThn396_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7864C5D0Ev,_ZThn136_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7864C5D1Ev,_ZThn136_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7864C5D0Ev,_ZThn392_N7S7864C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7864C5D1Ev,_ZThn392_N7S7864C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C5 = {  "S7864C5", // class name
  bases_S7864C5, 32,
  &(vtc_S7864C5[0]), // expected_vtbl_contents
  &(vtt_S7864C5[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI7S7864C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7864C5),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C5),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C15  : virtual S7864C3 , virtual S7864C10 , virtual S19676C2 {
  int s7864c15f0;
  virtual  ~S7864C15(); // _ZN8S7864C15D2Ev
  S7864C15(); // tgen
};
//SIG(-1 S7864C15) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S7864C15 ::~S7864C15(){ note_dtor("S7864C15", this);}
S7864C15 ::S7864C15(){ note_ctor("S7864C15", this);} // tgen

static void Test_S7864C15()
{
  extern Class_Descriptor cd_S7864C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S7864C15, buf);
    S7864C15 *dp, &lv = *(dp=new (buf) S7864C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S7864C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C15)");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(16,8), "S7864C15");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(16,8), "S7864C15");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(16,8), "S7864C15");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(16,8), "S7864C15");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C15");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C15");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(64,36), "S7864C15");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(128,76), "S7864C15");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(128,76), "S7864C15");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(128,76), "S7864C15");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(112,64), "S7864C15");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(112,64), "S7864C15");
    check_base_class_offset(lv, (S7864C10*), ABISELECT(64,36), "S7864C15");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S7864C15");
    check_field_offset(lv, s7864c15f0, ABISELECT(8,4), "S7864C15.s7864c15f0");
    test_class_info(&lv, &cd_S7864C15);
    dp->~S7864C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C15(Test_S7864C15, "S7864C15", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN8S7864C15C1Ev();
extern void _ZN8S7864C15D2Ev();
Name_Map name_map_S7864C15[] = {
  NSPAIR(_ZN8S7864C15C1Ev),
  NSPAIR(_ZN8S7864C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S7864C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //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_S7864C3,    0, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(128,76), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C15[];
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C15[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C15[];
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C15[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C15[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C15[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C15[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__8S7864C15[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__8S7864C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__8S7864C15[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__8S7864C15[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C15[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C15[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C15[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C15[] = {
  {&(_ZTV8S7864C15[8]),  8,35},
  {&(_ZTV8S7864C15[8]),  8,35},
  {&(_ZTV8S7864C15[13]),  13,35},
  {&(_ZTV8S7864C15[21]),  21,35},
  {&(_ZTV8S7864C15[33]),  33,35},
  {&(_ZTV8S7864C15[27]),  27,35},
  {&(_tg__ZTV7S7864C3__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__8S7864C15[4]),  4,6},
  {&(_tg__ZTV7S7864C6__8S7864C15[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C15 = {  "S7864C15", // class name
  bases_S7864C15, 9,
  &(vtc_S7864C15[0]), // expected_vtbl_contents
  &(vtt_S7864C15[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI8S7864C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7864C15),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C15),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C14  : S19676C2 , S7864C15 {
  ::S7864C3 s7864c14f0;
  int s7864c14f1;
  ~S7864C14(); // tgen
  S7864C14(); // tgen
};
//SIG(-1 S7864C14) C1{ BC2{ m FC3{} Fi[3]} BC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} vd} VBC7{ BC6 VBC5 VBC8{ VBC6 BC5 Fp[10] Fi FL} BC9{ VBC8 BC5 vd Fi} vd Fi} VBC2 vd Fi} FC5 Fi}


S7864C14 ::~S7864C14(){ note_dtor("S7864C14", this);} // tgen
S7864C14 ::S7864C14(){ note_ctor("S7864C14", this);} // tgen

static void Test_S7864C14()
{
  extern Class_Descriptor cd_S7864C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,51)];
    init_test(&cd_S7864C14, buf);
    S7864C14 *dp, &lv = *(dp=new (buf) S7864C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,200), "sizeof(S7864C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C14)");
    /*is_ambiguous_... S7864C14::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*), ABISELECT(12,8), "S7864C14");
    /*is_ambiguous_... S7864C14::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(112,60), "S7864C14");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(112,60), "S7864C14");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(112,60), "S7864C14");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(112,60), "S7864C14");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*), 0, "S7864C14");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C14");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(160,88), "S7864C14");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(224,128), "S7864C14");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(224,128), "S7864C14");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(224,128), "S7864C14");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(208,116), "S7864C14");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(208,116), "S7864C14");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*), ABISELECT(160,88), "S7864C14");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*), ABISELECT(328,184), "S7864C14");
    check_base_class_offset(lv, (S7864C15*), 0, "S7864C14");
    check_field_offset(lv, s7864c14f0, ABISELECT(32,24), "S7864C14.s7864c14f0");
    check_field_offset(lv, s7864c14f1, ABISELECT(96,56), "S7864C14.s7864c14f1");
    test_class_info(&lv, &cd_S7864C14);
    dp->~S7864C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C14(Test_S7864C14, "S7864C14", ABISELECT(352,200));

#else // __cplusplus

extern void _ZN8S7864C14C1Ev();
extern void _ZN8S7864C14D1Ev();
Name_Map name_map_S7864C14[] = {
  NSPAIR(_ZN8S7864C14C1Ev),
  NSPAIR(_ZN8S7864C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
static Base_Class bases_S7864C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(224,128), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(224,128), //bcp->offset
    29, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(208,116), //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(208,116), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(160,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7864C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C14[];
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void _ZN8S7864C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void _ZN8S7864C14D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn160_N8S7864C14D1Ev,_ZThn88_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn160_N8S7864C14D0Ev,_ZThn88_N8S7864C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C14D1Ev,_ZThn128_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C14D0Ev,_ZThn128_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C14[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev),
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C14[];
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__8S7864C14[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C15__8S7864C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S7864C15D1Ev,_ZThn88_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S7864C15D0Ev,_ZThn88_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15__8S7864C14[] = {
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C15D1Ev,_ZThn128_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C15D0Ev,_ZThn128_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15__8S7864C14[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C14[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C14[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C14[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C14[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C14[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__8S7864C14[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__8S7864C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__8S7864C14[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__8S7864C14[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C14[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C14[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C14[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C14[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C14[] = {
  {&(_ZTV8S7864C14[8]),  8,35},
  {&(_tg__ZTV8S7864C15__8S7864C14[8]),  8,10},
  {&(_tg__ZTV8S7864C15__8S7864C14[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C15__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15__8S7864C14[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C15__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C14[4]),  4,6},
  {&(_ZTV8S7864C14[8]),  8,35},
  {&(_ZTV8S7864C14[13]),  13,35},
  {&(_ZTV8S7864C14[21]),  21,35},
  {&(_ZTV8S7864C14[33]),  33,35},
  {&(_ZTV8S7864C14[27]),  27,35},
  {&(_tg__ZTV7S7864C3__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C14[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__8S7864C14[4]),  4,6},
  {&(_tg__ZTV7S7864C6__8S7864C14[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C14[];
extern  VTBL_ENTRY _ZTV8S7864C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C14[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C15D0Ev,_ZThn88_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C15D1Ev,_ZThn88_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C15D0Ev,_ZThn128_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C15D1Ev,_ZThn128_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C14D0Ev,_ZThn88_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7864C14D1Ev,_ZThn88_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C14D0Ev,_ZThn128_N8S7864C14D0Ev),
  (VTBL_ENTRY)_ZN8S7864C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C14D1Ev,_ZThn128_N8S7864C14D1Ev),
  (VTBL_ENTRY)_ZN8S7864C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C14 = {  "S7864C14", // class name
  bases_S7864C14, 11,
  &(vtc_S7864C14[0]), // expected_vtbl_contents
  &(vtt_S7864C14[0]), // expected_vtt_contents
  ABISELECT(352,200), // object size
  NSPAIRA(_ZTI8S7864C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7864C14),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C14),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C2  : virtual S7864C3 , virtual S7864C5 , virtual S7864C11 , S7864C14 {
  virtual  ~S7864C2(); // _ZN7S7864C2D2Ev
  S7864C2(); // tgen
};
//SIG(-1 S7864C2) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} VBC6{ VBC2 VBC7{ VBC5 BC2 vd Fi} BC5 BC8{ VBC5 VBC9{ BC3 VBC2 VBC5 BC7 vd Fi} BC10{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC9 vd Fs} VBC8 VBC11{ m FC12{} Fi[3]} BC9 Fs Fp[2]} VBC10 BC13{ BC11 BC14{ VBC2 VBC9 VBC11 vd Fi} FC2 Fi} vd}


 S7864C2 ::~S7864C2(){ note_dtor("S7864C2", this);}
S7864C2 ::S7864C2(){ note_ctor("S7864C2", this);} // tgen

static void Test_S7864C2()
{
  extern Class_Descriptor cd_S7864C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,200)];
    init_test(&cd_S7864C2, buf);
    S7864C2 *dp, &lv = *(dp=new (buf) S7864C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,796), "sizeof(S7864C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C2)");
    /*is_ambiguous_... S7864C2::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(112,60), "S7864C2");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(112,60), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*), 0, "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C7*), 0, "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C7*), 0, "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C5*), 0, "S7864C2");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*)(S7864C14*), 0, "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C5*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(248,140), "S7864C2");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(248,140), "S7864C2");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C5*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(248,140), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(808,452), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C7*), ABISELECT(808,452), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(352,196), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C7*), ABISELECT(352,196), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(832,460), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(880,488), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(880,488), "S7864C2");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*)(S7864C7*), ABISELECT(832,460), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(832,460), "S7864C2");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*)(S7864C14*), ABISELECT(832,460), "S7864C2");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(464,252), "S7864C2");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(464,252), "S7864C2");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*)(S7864C7*), ABISELECT(672,376), "S7864C2");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(720,404), "S7864C2");
    check_base_class_offset(lv, (S7864C9*)(S7864C7*), ABISELECT(464,252), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C7*), ABISELECT(736,408), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(784,436), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(784,436), "S7864C2");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C7*), ABISELECT(736,408), "S7864C2");
    check_base_class_offset(lv, (S7864C7*)(S7864C5*), ABISELECT(352,196), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(896,500), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(896,500), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(1104,624), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(1152,652), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C9*)(S7864C5*), ABISELECT(896,500), "S7864C2");
    check_base_class_offset(lv, (S19676C2*)(S7864C5*), ABISELECT(1160,656), "S7864C2");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*)(S7864C14*), ABISELECT(1160,656), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C5*), ABISELECT(160,88), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(208,116), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(208,116), "S7864C2");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C5*), ABISELECT(160,88), "S7864C2");
    check_base_class_offset(lv, (S7864C5*), ABISELECT(160,88), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), ABISELECT(1184,672), "S7864C2");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C11*), ABISELECT(1184,672), "S7864C2");
    /*is_ambiguous_... S7864C14::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S7864C14*), ABISELECT(12,8), "S7864C2");
    check_base_class_offset(lv, (S7864C15*)(S7864C14*), 0, "S7864C2");
    check_base_class_offset(lv, (S7864C14*), 0, "S7864C2");
    test_class_info(&lv, &cd_S7864C2);
    dp->~S7864C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C2(Test_S7864C2, "S7864C2", ABISELECT(1392,796));

#else // __cplusplus

extern void _ZN7S7864C2C1Ev();
extern void _ZN7S7864C2D2Ev();
Name_Map name_map_S7864C2[] = {
  NSPAIR(_ZN7S7864C2C1Ev),
  NSPAIR(_ZN7S7864C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C7;
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C5;
extern VTBL_ENTRY _ZTI7S7864C5[];
extern  VTBL_ENTRY _ZTV7S7864C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C5[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C14;
extern VTBL_ENTRY _ZTI8S7864C14[];
extern  VTBL_ENTRY _ZTV8S7864C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C14[];
static Base_Class bases_S7864C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(248,140), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(248,140), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(808,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(808,452), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(352,196), //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
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(832,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(880,488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(880,488), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(832,460), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(720,404), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(464,252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(736,408), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(784,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(784,436), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(736,408), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7864C7,    ABISELECT(352,196), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1104,624), //bcp->offset
    115, //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
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1152,652), //bcp->offset
    119, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(896,500), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1160,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
    32, //immediately_derived
  0, 1},
  {&cd_S19676C9,    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
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(208,116), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7864C5,    ABISELECT(160,88), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    ABISELECT(1184,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(1184,672), //bcp->offset
    124, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7864C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7864C14,    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
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C2[];
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void _ZN7S7864C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void _ZN7S7864C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C2D1Ev,_ZThn60_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C2D0Ev,_ZThn60_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S7864C2D1Ev,_ZThn88_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S7864C2D0Ev,_ZThn88_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S7864C2D1Ev,_ZThn140_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S7864C2D0Ev,_ZThn140_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S7864C2D1Ev,_ZThn196_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S7864C2D0Ev,_ZThn196_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn808_N7S7864C2D1Ev,_ZThn452_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn808_N7S7864C2D0Ev,_ZThn452_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn832_N7S7864C2D1Ev,_ZThn460_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn832_N7S7864C2D0Ev,_ZThn460_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn896_N7S7864C2D1Ev,_ZThn500_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn896_N7S7864C2D0Ev,_ZThn500_N7S7864C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1184_N7S7864C2D1Ev,_ZThn672_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1184_N7S7864C2D0Ev,_ZThn672_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C2[] = {
  ABISELECT(1184,672),
  ABISELECT(896,500),
  ABISELECT(808,452),
  ABISELECT(352,196),
  ABISELECT(160,88),
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev),
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev),
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
  ABISELECT(-352,-196),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev),
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev),
  ABISELECT(-608,-344),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev),
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev),
  ABISELECT(-808,-452),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-808,-452),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev),
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev),
  ABISELECT(-896,-500),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-896,-500),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev),
  ABISELECT(-1104,-624),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev),
  ABISELECT(-1040,-592),
  ABISELECT(-1152,-652),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev),
  ABISELECT(-1184,-672),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1184,-672),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C2[];
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void _ZN8S7864C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void _ZN8S7864C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C14__7S7864C2[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn832_N8S7864C15D1Ev,_ZThn460_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn832_N8S7864C15D0Ev,_ZThn460_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn248_N8S7864C15D1Ev,_ZThn140_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn248_N8S7864C15D0Ev,_ZThn140_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C158S7864C14__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C14__7S7864C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn832_N8S7864C14D1Ev,_ZThn460_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn832_N8S7864C14D0Ev,_ZThn460_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C14__7S7864C2[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn248_N8S7864C14D1Ev,_ZThn140_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn248_N8S7864C14D0Ev,_ZThn140_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C14__7S7864C2[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C14__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C2[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C5D1Ev();
extern void _ZN7S7864C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C5__7S7864C2[] = {
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&_ZN7S7864C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C5D0Ev,
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-136,-80),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C2[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C5__7S7864C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C5__7S7864C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C5__7S7864C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C5__7S7864C2[] = {
  ABISELECT(-648,-364),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C2[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C5__7S7864C2[] = {
  ABISELECT(-672,-372),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C2[] = {
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C2[] = {
  ABISELECT(-608,-344),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-576,-320),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C5__7S7864C2[] = {
  ABISELECT(-736,-412),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-736,-412),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C2[] = {
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C2[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C2[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C2[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__7S7864C2[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C2[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C2[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C2[] = {
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C67S7864C7__A1__7S7864C2[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C2[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[] = {
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2[] = {
  ABISELECT(-608,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C2[] = {
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-368,-208),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(464,252),
  ABISELECT(112,60),
  ABISELECT(464,252),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C2[] = {
  ABISELECT(-608,-344),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[] = {
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C2[] = {
  ABISELECT(536,296),
  ABISELECT(-136,-80),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C2[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(736,408),
  ABISELECT(112,60),
  ABISELECT(736,408),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(624,348),
  ABISELECT(624,348),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(488,268),
  ABISELECT(-136,-80),
  ABISELECT(488,268),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7__7S7864C2[] = {
  ABISELECT(352,196),
  ABISELECT(112,60),
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C7__7S7864C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7__7S7864C2[] = {
  ABISELECT(-456,-256),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7__7S7864C2[] = {
  ABISELECT(104,56),
  ABISELECT(-136,-80),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7__7S7864C2[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7__7S7864C2[] = {
  ABISELECT(-480,-264),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C2[] = {
  ABISELECT(-608,-344),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7__7S7864C2[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C2[] = {
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C2[] = {
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C2[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C2[] = {
  ABISELECT(560,312),
  ABISELECT(-136,-80),
  ABISELECT(560,312),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C2[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C2[] = {
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C2[] = {
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C2[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C2[] = {
  ABISELECT(632,348),
  ABISELECT(-136,-80),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C2[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C2[] = {
  ABISELECT(832,460),
  ABISELECT(112,60),
  ABISELECT(832,460),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C2[] = {
  ABISELECT(720,400),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C2[] = {
  ABISELECT(584,320),
  ABISELECT(-136,-80),
  ABISELECT(584,320),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C2[] = {
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__A1__7S7864C2[] = {
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C2[] = {
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C2[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C2[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C2[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C2[] = {
  ABISELECT(-1040,-592),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C2[] = {
  ABISELECT(1040,592),
  ABISELECT(1040,592),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(64,40),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(896,500),
  ABISELECT(112,60),
  ABISELECT(896,500),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C2[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__A2__7S7864C2[] = {
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A11__7S7864C2[] = {
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C2[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__A2__7S7864C2[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__A2__7S7864C2[] = {
  ABISELECT(936,532),
  ABISELECT(-136,-80),
  ABISELECT(936,532),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
static  VTT_ENTRY vtt_S7864C2[] = {
  {&(_ZTV7S7864C2[13]),  13,131},
  {&(_tg__ZTV8S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C158S7864C14__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C158S7864C14__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C158S7864C14__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C158S7864C14__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S7864C14__7S7864C2[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C14__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C14__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C14__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C14__7S7864C2[4]),  4,6},
  {&(_ZTV7S7864C2[13]),  13,131},
  {&(_ZTV7S7864C2[18]),  18,131},
  {&(_ZTV7S7864C2[31]),  31,131},
  {&(_ZTV7S7864C2[43]),  43,131},
  {&(_ZTV7S7864C2[53]),  53,131},
  {&(_ZTV7S7864C2[90]),  90,131},
  {&(_ZTV7S7864C2[61]),  61,131},
  {&(_ZTV7S7864C2[98]),  98,131},
  {&(_ZTV7S7864C2[104]),  104,131},
  {&(_ZTV7S7864C2[65]),  65,131},
  {&(_ZTV7S7864C2[70]),  70,131},
  {&(_ZTV7S7864C2[77]),  77,131},
  {&(_ZTV7S7864C2[83]),  83,131},
  {&(_ZTV7S7864C2[113]),  113,131},
  {&(_ZTV7S7864C2[117]),  117,131},
  {&(_ZTV7S7864C2[122]),  122,131},
  {&(_ZTV7S7864C2[37]),  37,131},
  {&(_ZTV7S7864C2[129]),  129,131},
  {&(_tg__ZTV7S7864C3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C5__7S7864C2[10]),  10,12},
  {&(_tg__ZTV8S7864C107S7864C5__A2__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C5__7S7864C2[8]),  8,10},
  {&(_tg__ZTV7S7864C3__A1__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C5__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C5__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C2[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C5__7S7864C2[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C2[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C2[7]),  7,9},
  {&(_tg__ZTV7S7864C67S7864C7__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C3__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C6__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C9__7S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C7__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C2[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C2[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__A1__7S7864C2[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S7864C11__A2__7S7864C2[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A11__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__A2__7S7864C2[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__A2__7S7864C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7864C2[];
extern  VTBL_ENTRY _ZTV7S7864C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C2[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D0Ev,_ZThn60_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C3D1Ev,_ZThn60_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C14D0Ev,_ZThn460_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C14D1Ev,_ZThn460_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D0Ev,_ZThn60_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C14D1Ev,_ZThn60_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C15D0Ev,_ZThn460_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S7864C15D1Ev,_ZThn460_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D0Ev,_ZThn60_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S7864C15D1Ev,_ZThn60_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C15D0Ev,_ZThn140_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C15D1Ev,_ZThn140_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C14D0Ev,_ZThn140_N8S7864C14D0Ev),
  (VTBL_ENTRY)_ZN8S7864C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S7864C14D1Ev,_ZThn140_N8S7864C14D1Ev),
  (VTBL_ENTRY)_ZN8S7864C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S7864C2D0Ev,_ZThn500_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N7S7864C2D1Ev,_ZThn500_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S7864C2D0Ev,_ZThn460_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S7864C2D1Ev,_ZThn460_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N7S7864C2D0Ev,_ZThn672_N7S7864C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N7S7864C2D0Ev,_ZThn452_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N7S7864C2D1Ev,_ZThn672_N7S7864C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N7S7864C2D1Ev,_ZThn452_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C2D0Ev,_ZThn196_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7864C2D1Ev,_ZThn196_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7864C2D0Ev,_ZThn88_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7864C2D1Ev,_ZThn88_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C2D0Ev,_ZThn60_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7864C2D1Ev,_ZThn60_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7864C2D0Ev,_ZThn140_N7S7864C2D0Ev),
  (VTBL_ENTRY)_ZN7S7864C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S7864C2D1Ev,_ZThn140_N7S7864C2D1Ev),
  (VTBL_ENTRY)_ZN7S7864C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C2 = {  "S7864C2", // class name
  bases_S7864C2, 38,
  &(vtc_S7864C2[0]), // expected_vtbl_contents
  &(vtt_S7864C2[0]), // expected_vtt_contents
  ABISELECT(1392,796), // object size
  NSPAIRA(_ZTI7S7864C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7864C2),131, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C2),137, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C16  : virtual S7864C15 , S7864C11 {
  virtual  ~S7864C16(); // _ZN8S7864C16D2Ev
  S7864C16(); // tgen
};
//SIG(-1 S7864C16) C1{ VBC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} vd} VBC5{ BC4 VBC3 VBC6{ VBC4 BC3 Fp[10] Fi FL} BC7{ VBC6 BC3 vd Fi} vd Fi} VBC8{ m FC9{} Fi[3]} vd Fi} BC10{ VBC4 VBC6 BC3 vd Fp Fi FC4[3] Fi[7]} vd}


 S7864C16 ::~S7864C16(){ note_dtor("S7864C16", this);}
S7864C16 ::S7864C16(){ note_ctor("S7864C16", this);} // tgen

static void Test_S7864C16()
{
  extern Class_Descriptor cd_S7864C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,69)];
    init_test(&cd_S7864C16, buf);
    S7864C16 *dp, &lv = *(dp=new (buf) S7864C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,272), "sizeof(S7864C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C16)");
    /*is_ambiguous_... S7864C16::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(224,132), "S7864C16");
    check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(224,132), "S7864C16");
    check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(224,132), "S7864C16");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(224,132), "S7864C16");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(224,132), "S7864C16");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(224,132), "S7864C16");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*), ABISELECT(208,124), "S7864C16");
    /*is_ambiguous_... S7864C10::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), ABISELECT(208,124), "S7864C16");
    /*is_ambiguous_... S7864C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(272,160), "S7864C16");
    check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(336,200), "S7864C16");
    check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(336,200), "S7864C16");
    check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(336,200), "S7864C16");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(336,200), "S7864C16");
    /*is_ambiguous_... S7864C8::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(320,188), "S7864C16");
    check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(320,188), "S7864C16");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*), ABISELECT(272,160), "S7864C16");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*), ABISELECT(440,256), "S7864C16");
    check_base_class_offset(lv, (S7864C15*), ABISELECT(208,124), "S7864C16");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), 0, "S7864C16");
    check_base_class_offset(lv, (S7864C11*), 0, "S7864C16");
    test_class_info(&lv, &cd_S7864C16);
    dp->~S7864C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C16(Test_S7864C16, "S7864C16", ABISELECT(464,272));

#else // __cplusplus

extern void _ZN8S7864C16C1Ev();
extern void _ZN8S7864C16D2Ev();
Name_Map name_map_S7864C16[] = {
  NSPAIR(_ZN8S7864C16C1Ev),
  NSPAIR(_ZN8S7864C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
static Base_Class bases_S7864C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(224,132), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(336,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    4, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(336,200), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(320,188), //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(320,188), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(272,160), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(440,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
    9, //immediately_derived
  0, 1},
  {&cd_S7864C15,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7864C3,    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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C11,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7864C16[];
extern void _ZN8S7864C16D1Ev();
extern void _ZN8S7864C16D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn124_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn124_N8S7864C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C16D1Ev,_ZThn132_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C16D0Ev,_ZThn132_N8S7864C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn272_N8S7864C16D1Ev,_ZThn160_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn272_N8S7864C16D0Ev,_ZThn160_N8S7864C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn336_N8S7864C16D1Ev,_ZThn200_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn336_N8S7864C16D0Ev,_ZThn200_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C16[] = {
  ABISELECT(440,256),
  ABISELECT(272,160),
  ABISELECT(208,124),
  ABISELECT(208,124),
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&_ZN8S7864C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C16D0Ev,
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  ABISELECT(-208,-124),
  ABISELECT(16,8),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev),
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S7864C16[];
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__8S7864C16[] = {
  ABISELECT(336,200),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A3__8S7864C16[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn224_N7S7864C3D1Ev,_ZThn132_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn224_N7S7864C3D0Ev,_ZThn132_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A3__8S7864C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn224_N8S7864C11D1Ev,_ZThn132_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn224_N8S7864C11D0Ev,_ZThn132_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__8S7864C16[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn336_N8S7864C11D1Ev,_ZThn200_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn336_N8S7864C11D0Ev,_ZThn200_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__8S7864C16[] = {
  ABISELECT(-336,-200),
  ABISELECT(-112,-68),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__8S7864C16[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C15__8S7864C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15__8S7864C16[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15__8S7864C16[] = {
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C16[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__8S7864C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C16[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C16[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C16[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C16[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__8S7864C16[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__8S7864C16[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__8S7864C16[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__8S7864C16[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__8S7864C16[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__8S7864C16[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
static  VTT_ENTRY vtt_S7864C16[] = {
  {&(_ZTV8S7864C16[8]),  8,45},
  {&(_tg__ZTV8S7864C11__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__8S7864C16[4]),  4,6},
  {&(_ZTV8S7864C16[18]),  18,45},
  {&(_ZTV8S7864C16[18]),  18,45},
  {&(_ZTV8S7864C16[23]),  23,45},
  {&(_ZTV8S7864C16[31]),  31,45},
  {&(_ZTV8S7864C16[43]),  43,45},
  {&(_ZTV8S7864C16[37]),  37,45},
  {&(_tg__ZTV8S7864C15__8S7864C16[8]),  8,10},
  {&(_tg__ZTV8S7864C15__8S7864C16[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C15__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15__8S7864C16[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C15__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C16[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A2__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A2__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__8S7864C16[4]),  4,6},
  {&(_tg__ZTV7S7864C6__8S7864C16[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__8S7864C16[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__8S7864C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7864C16[];
extern  VTBL_ENTRY _ZTV8S7864C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C16[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D0Ev,_ZThn40_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C10D1Ev,_ZThn40_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D0Ev,_ZThn12_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C8D1Ev,_ZThn12_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D0Ev,_ZThn36_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7864C15D1Ev,_ZThn36_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D0Ev,_ZThn8_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7864C15D1Ev,_ZThn8_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D0Ev,_ZThn76_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7864C15D1Ev,_ZThn76_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C11D0Ev,_ZThn200_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C11D1Ev,_ZThn200_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C11D0Ev,_ZThn132_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C11D1Ev,_ZThn132_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D0Ev,_ZThn8_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7864C3D0Ev,_ZThn132_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7864C3D1Ev,_ZThn8_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S7864C3D1Ev,_ZThn132_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7864C16D0Ev,_ZThn160_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S7864C16D1Ev,_ZThn160_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C16D0Ev,_ZThn132_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S7864C16D1Ev,_ZThn132_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C16D0Ev,_ZThn200_N8S7864C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn124_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S7864C16D1Ev,_ZThn200_N8S7864C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn124_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C16 = {  "S7864C16", // class name
  bases_S7864C16, 12,
  &(vtc_S7864C16[0]), // expected_vtbl_contents
  &(vtt_S7864C16[0]), // expected_vtt_contents
  ABISELECT(464,272), // object size
  NSPAIRA(_ZTI8S7864C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7864C16),45, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7864C16),34, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7864C1  : S7864C2 , S7864C16 , S4228C37 {
  short s7864c1f0:16;
  ~S7864C1(); // tgen
  S7864C1(); // tgen
};
//SIG(1 S7864C1) C1{ BC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} vd} VBC5{ VBC6{ VBC4 BC3 Fp[10] Fi FL} VBC7{ VBC3 VBC8{ VBC6 BC3 vd Fi} BC6 BC9{ VBC6 VBC10{ BC4 VBC3 VBC6 BC8 vd Fi} BC11{ VBC4 VBC6 BC3 vd Fp Fi FC4[3] Fi[7]} BC4 BC3 vd} BC10 vd Fs} VBC9 VBC12{ m FC13{} Fi[3]} BC10 Fs Fp[2]} VBC11 BC14{ BC12 BC15{ VBC3 VBC10 VBC12 vd Fi} FC3 Fi} vd} BC16{ VBC15 BC11 vd} BC17{ m} Fs:16}


S7864C1 ::~S7864C1(){ note_dtor("S7864C1", this);} // tgen
S7864C1 ::S7864C1(){ note_ctor("S7864C1", this);} // tgen

static void Test_S7864C1()
{
  extern Class_Descriptor cd_S7864C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(102,234)];
    init_test(&cd_S7864C1, buf);
    S7864C1 *dp, &lv = *(dp=new (buf) S7864C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1616,932), "sizeof(S7864C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7864C1)");
    /*is_ambiguous_... S7864C1::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C6*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(320,188), "S7864C1");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C9*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C9*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C11*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*), ABISELECT(320,188), "S7864C1");
    check_base_class_offset(lv, (S19676C9*)(S7864C11*)(S7864C16*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C3*)(S7864C11*)(S7864C16*), ABISELECT(320,188), "S7864C1");
    /*is_ambiguous_... S7864C2::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C2*), 0, "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C7*), 0, "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*), 0, "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C7*), 0, "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C10*)(S7864C5*), 0, "S7864C1");
    /*is_ambiguous_... S7864C15::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*)(S7864C14*)(S7864C2*), 0, "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C15 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C15*), 0, "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C5*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*), ABISELECT(456,268), "S7864C1");
    check_base_class_offset(lv, (S7864C6*)(S7864C9*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*), ABISELECT(456,268), "S7864C1");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C9*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C9*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C10*)(S7864C5*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C11*), ABISELECT(456,268), "S7864C1");
    check_base_class_offset(lv, (S7864C6*)(S7864C11*)(S7864C16*), ABISELECT(456,268), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*), ABISELECT(1016,580), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C8 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C7*), ABISELECT(1016,580), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C6*)(S7864C7*), ABISELECT(560,324), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C6 */ AMB_check_base_class_offset(lv, (S7864C6*)(S7864C7*), ABISELECT(560,324), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*), ABISELECT(1088,616), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*), ABISELECT(1088,616), "S7864C1");
    check_base_class_offset(lv, (S7864C10*)(S7864C9*)(S7864C7*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C9*), ABISELECT(1040,588), "S7864C1");
    check_base_class_offset(lv, (S7864C10*)(S7864C15*)(S7864C14*)(S7864C2*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C15 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C15*), ABISELECT(1040,588), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(672,380), "S7864C1");
    check_base_class_offset(lv, (S7864C11*)(S7864C9*)(S7864C7*), ABISELECT(672,380), "S7864C1");
    /*is_ambiguous_... S7864C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*)(S7864C7*), ABISELECT(880,504), "S7864C1");
    /*is_ambiguous_... S7864C9::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*)(S7864C7*), ABISELECT(928,532), "S7864C1");
    check_base_class_offset(lv, (S7864C9*)(S7864C7*), ABISELECT(672,380), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C7*), ABISELECT(944,536), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(992,564), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C7*), ABISELECT(992,564), "S7864C1");
    /*is_ambiguous_... S7864C7::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C7*), ABISELECT(944,536), "S7864C1");
    check_base_class_offset(lv, (S7864C7*)(S7864C5*), ABISELECT(560,324), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C9*), ABISELECT(1104,628), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C9*), ABISELECT(1104,628), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C9*), ABISELECT(1312,752), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C9*), ABISELECT(1360,780), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C9 */ AMB_check_base_class_offset(lv, (S7864C9*)(S7864C5*), ABISELECT(1104,628), "S7864C1");
    check_base_class_offset(lv, (S19676C2*)(S7864C5*), ABISELECT(1368,784), "S7864C1");
    check_base_class_offset(lv, (S19676C2*)(S7864C15*)(S7864C14*)(S7864C2*), ABISELECT(1368,784), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C15 */ AMB_check_base_class_offset(lv, (S19676C2*)(S7864C15*), ABISELECT(1368,784), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7864C10*)(S7864C5*), ABISELECT(368,216), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(416,244), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C8*)(S7864C10*)(S7864C5*), ABISELECT(416,244), "S7864C1");
    /*is_ambiguous_... S7864C5::S7864C10 */ AMB_check_base_class_offset(lv, (S7864C10*)(S7864C5*), ABISELECT(368,216), "S7864C1");
    check_base_class_offset(lv, (S7864C5*)(S7864C2*), ABISELECT(368,216), "S7864C1");
    /*is_ambiguous_... S7864C1::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*), ABISELECT(1392,800), "S7864C1");
    /*is_ambiguous_... S7864C2::S7864C11 */ AMB_check_base_class_offset(lv, (S7864C11*)(S7864C2*), ABISELECT(1392,800), "S7864C1");
    /*is_ambiguous_... S7864C14::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S7864C14*)(S7864C2*), ABISELECT(12,8), "S7864C1");
    check_base_class_offset(lv, (S7864C15*)(S7864C14*)(S7864C2*), 0, "S7864C1");
    check_base_class_offset(lv, (S7864C14*)(S7864C2*), 0, "S7864C1");
    check_base_class_offset(lv, (S7864C2*), 0, "S7864C1");
    check_base_class_offset(lv, (S7864C15*)(S7864C16*), ABISELECT(1600,924), "S7864C1");
    /*is_ambiguous_... S7864C11::S7864C3 */ AMB_check_base_class_offset(lv, (S7864C3*)(S7864C11*)(S7864C16*), ABISELECT(112,60), "S7864C1");
    check_base_class_offset(lv, (S7864C11*)(S7864C16*), ABISELECT(112,60), "S7864C1");
    check_base_class_offset(lv, (S7864C16*), ABISELECT(112,60), "S7864C1");
    check_base_class_offset(lv, (S4228C37*), 0, "S7864C1");
    set_bf_and_test(lv, s7864c1f0, ABISELECT(316,184), 0, 16, 1, "S7864C1");
    set_bf_and_test(lv, s7864c1f0, ABISELECT(316,184), 0, 16, hide_sll(1LL<<15), "S7864C1");
    test_class_info(&lv, &cd_S7864C1);
    dp->~S7864C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7864C1(Test_S7864C1, "S7864C1", ABISELECT(1616,932));

#else // __cplusplus

extern void _ZN7S7864C1C1Ev();
extern void _ZN7S7864C1D1Ev();
Name_Map name_map_S7864C1[] = {
  NSPAIR(_ZN7S7864C1C1Ev),
  NSPAIR(_ZN7S7864C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C6;
extern VTBL_ENTRY _ZTI7S7864C6[];
extern  VTBL_ENTRY _ZTV7S7864C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C7;
extern VTBL_ENTRY _ZTI7S7864C7[];
extern  VTBL_ENTRY _ZTV7S7864C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C7[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C9;
extern VTBL_ENTRY _ZTI7S7864C9[];
extern  VTBL_ENTRY _ZTV7S7864C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C8;
extern VTBL_ENTRY _ZTI7S7864C8[];
extern  VTBL_ENTRY _ZTV7S7864C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C8[];
extern Class_Descriptor cd_S7864C10;
extern VTBL_ENTRY _ZTI8S7864C10[];
extern  VTBL_ENTRY _ZTV8S7864C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C10[];
extern Class_Descriptor cd_S7864C5;
extern VTBL_ENTRY _ZTI7S7864C5[];
extern  VTBL_ENTRY _ZTV7S7864C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C5[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C14;
extern VTBL_ENTRY _ZTI8S7864C14[];
extern  VTBL_ENTRY _ZTV8S7864C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C14[];
extern Class_Descriptor cd_S7864C2;
extern VTBL_ENTRY _ZTI7S7864C2[];
extern  VTBL_ENTRY _ZTV7S7864C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C2[];
extern Class_Descriptor cd_S7864C15;
extern VTBL_ENTRY _ZTI8S7864C15[];
extern  VTBL_ENTRY _ZTV8S7864C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C15[];
extern Class_Descriptor cd_S7864C3;
extern VTBL_ENTRY _ZTI7S7864C3[];
extern  VTBL_ENTRY _ZTV7S7864C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C3[];
extern Class_Descriptor cd_S7864C11;
extern VTBL_ENTRY _ZTI8S7864C11[];
extern  VTBL_ENTRY _ZTV8S7864C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C11[];
extern Class_Descriptor cd_S7864C16;
extern VTBL_ENTRY _ZTI8S7864C16[];
extern  VTBL_ENTRY _ZTV8S7864C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7864C16[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7864C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(320,188), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7864C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(456,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(456,268), //bcp->offset
    50, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(1016,580), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(1016,580), //bcp->offset
    96, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(560,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7864C6,    ABISELECT(560,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1040,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1088,616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(1088,616), //bcp->offset
    111, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(1040,588), //bcp->offset
    103, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(672,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(672,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(880,504), //bcp->offset
    74, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(928,532), //bcp->offset
    78, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(672,380), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(944,536), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(992,564), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(992,564), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(944,536), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7864C7,    ABISELECT(560,324), //bcp->offset
    56, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(1104,628), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    154, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(1104,628), //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
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1312,752), //bcp->offset
    126, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(1360,780), //bcp->offset
    130, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7864C9,    ABISELECT(1104,628), //bcp->offset
    117, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1368,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19676C9,    ABISELECT(368,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
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C3,    ABISELECT(416,244), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7864C8,    ABISELECT(416,244), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7864C10,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7864C5,    ABISELECT(368,216), //bcp->offset
    31, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(1392,800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7864C11,    ABISELECT(1392,800), //bcp->offset
    135, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19676C2,    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
    37, //immediately_derived
  0, 0},
  {&cd_S7864C15,    0, //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
    36, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S7864C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7864C2,    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
    38, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7864C15,    ABISELECT(1600,924), //bcp->offset
    142, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S7864C3,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7864C11,    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
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7864C16,    ABISELECT(112,60), //bcp->offset
    16, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7864C1[];
extern void ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev)();
extern void _ZN7S7864C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev)();
extern void _ZN7S7864C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn112_N7S7864C1D1Ev,_ZThn60_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C1D0Ev,_ZThn60_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C1D1Ev,_ZTv0_n12_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C1D1Ev,_ZThn188_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C1D0Ev,_ZTv0_n12_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C1D0Ev,_ZThn188_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C1D1Ev,_ZTv0_n44_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C1D1Ev,_ZThn216_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C1D0Ev,_ZTv0_n44_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C1D0Ev,_ZThn216_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N7S7864C1D1Ev,_ZTvn28_n44_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S7864C1D0Ev,_ZTvn28_n44_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C1D1Ev,_ZThn268_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C1D0Ev,_ZThn268_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C1D1Ev,_ZTv0_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn560_N7S7864C1D1Ev,_ZThn324_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C1D0Ev,_ZTv0_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn560_N7S7864C1D0Ev,_ZThn324_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7864C1D1Ev,_ZTvn56_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C1D0Ev,_ZTvn56_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C1D1Ev,_ZTvn180_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C1D0Ev,_ZTvn180_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C1D1Ev,_ZTvn208_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C1D0Ev,_ZTvn208_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C1D1Ev,_ZTvn212_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C1D0Ev,_ZTvn212_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C1D1Ev,_ZTvn240_n32_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C1D0Ev,_ZTvn240_n32_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C1D1Ev,_ZThn580_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C1D0Ev,_ZThn580_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C1D1Ev,_ZTv0_n24_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C1D1Ev,_ZThn588_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C1D0Ev,_ZTv0_n24_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C1D0Ev,_ZThn588_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7864C1D1Ev,_ZTvn28_n24_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C1D0Ev,_ZTvn28_n24_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7864C1D1Ev,_ZTv0_n28_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C1D1Ev,_ZThn628_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C1D0Ev,_ZTv0_n28_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C1D0Ev,_ZThn628_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7864C1D1Ev,_ZTvn124_n28_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C1D0Ev,_ZTvn124_n28_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C1D1Ev,_ZTvn152_n28_N7S7864C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C1D0Ev,_ZTvn152_n28_N7S7864C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C1D1Ev,_ZThn800_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C1D0Ev,_ZThn800_N7S7864C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev)();
extern void ABISELECT(_ZThn1600_N7S7864C1D1Ev,_ZThn924_N7S7864C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev)();
extern void ABISELECT(_ZThn1600_N7S7864C1D0Ev,_ZThn924_N7S7864C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7864C1[] = {
  ABISELECT(1600,924),
  ABISELECT(1392,800),
  ABISELECT(1104,628),
  ABISELECT(1016,580),
  ABISELECT(560,324),
  ABISELECT(368,216),
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev),
  ABISELECT(1256,724),
  ABISELECT(928,528),
  ABISELECT(-112,-60),
  ABISELECT(1488,864),
  ABISELECT(344,208),
  ABISELECT(208,128),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C1D1Ev,_ZThn60_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C1D0Ev,_ZThn60_N7S7864C1D0Ev),
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C1D1Ev,_ZTv0_n12_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C1D0Ev,_ZTv0_n12_N7S7864C1D0Ev),
  ABISELECT(-368,-216),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C1D1Ev,_ZTv0_n44_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C1D0Ev,_ZTv0_n44_N7S7864C1D0Ev),
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C1D1Ev,_ZTvn28_n44_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C1D0Ev,_ZTvn28_n44_N7S7864C1D0Ev),
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev),
  ABISELECT(-560,-324),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C1D1Ev,_ZTv0_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C1D0Ev,_ZTv0_n32_N7S7864C1D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C1D1Ev,_ZTvn56_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C1D0Ev,_ZTvn56_n32_N7S7864C1D0Ev),
  ABISELECT(-880,-504),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C1D1Ev,_ZTvn180_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C1D0Ev,_ZTvn180_n32_N7S7864C1D0Ev),
  ABISELECT(-608,-344),
  ABISELECT(-928,-532),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C1D1Ev,_ZTvn208_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C1D0Ev,_ZTvn208_n32_N7S7864C1D0Ev),
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C1D1Ev,_ZTvn212_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C1D0Ev,_ZTvn212_n32_N7S7864C1D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C1D1Ev,_ZTvn240_n32_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C1D0Ev,_ZTvn240_n32_N7S7864C1D0Ev),
  ABISELECT(-1016,-580),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-1016,-580),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev),
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C1D1Ev,_ZTv0_n24_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C1D0Ev,_ZTv0_n24_N7S7864C1D0Ev),
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C1D1Ev,_ZTvn28_n24_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C1D0Ev,_ZTvn28_n24_N7S7864C1D0Ev),
  ABISELECT(-1104,-628),
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C1D1Ev,_ZTv0_n28_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C1D0Ev,_ZTv0_n28_N7S7864C1D0Ev),
  ABISELECT(-1312,-752),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C1D1Ev,_ZTvn124_n28_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C1D0Ev,_ZTvn124_n28_N7S7864C1D0Ev),
  ABISELECT(-1040,-592),
  ABISELECT(-1360,-780),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C1D1Ev,_ZTvn152_n28_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C1D0Ev,_ZTvn152_n28_N7S7864C1D0Ev),
  ABISELECT(-1392,-800),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1392,-800),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev),
  ABISELECT(-232,-140),
  ABISELECT(-1144,-656),
  ABISELECT(-560,-336),
  ABISELECT(-1600,-924),
  ABISELECT(-1600,-924),
  ABISELECT(-1280,-736),
  ABISELECT(-1600,-924),
  (VTBL_ENTRY)&(_ZTI7S7864C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7864C1[];
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void _ZN7S7864C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void _ZN7S7864C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C2__7S7864C1[] = {
  ABISELECT(1392,800),
  ABISELECT(1104,628),
  ABISELECT(1016,580),
  ABISELECT(560,324),
  ABISELECT(368,216),
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void _ZN8S7864C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void _ZN8S7864C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(1368,784),
  ABISELECT(456,268),
  ABISELECT(1040,588),
  0,
  0,
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn320_N8S7864C15D1Ev,_ZThn188_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn320_N8S7864C15D0Ev,_ZThn188_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C15D1Ev,_ZThn588_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C15D0Ev,_ZThn588_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZThn456_N8S7864C15D1Ev,_ZThn268_N8S7864C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void ABISELECT(_ZThn456_N8S7864C15D0Ev,_ZThn268_N8S7864C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn320_N8S7864C14D1Ev,_ZThn188_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn320_N8S7864C14D0Ev,_ZThn188_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C14D1Ev,_ZThn588_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn1040_N8S7864C14D0Ev,_ZThn588_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev)();
extern void ABISELECT(_ZThn456_N8S7864C14D1Ev,_ZThn268_N8S7864C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev)();
extern void ABISELECT(_ZThn456_N8S7864C14D0Ev,_ZThn268_N8S7864C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C147S7864C2__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI8S7864C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D1Ev,_ZTvn28_n24_N8S7864C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C14D0Ev,_ZTvn28_n24_N8S7864C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C2D1Ev,_ZThn188_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C2D0Ev,_ZThn188_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C2__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C2D1Ev,_ZThn216_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C2D0Ev,_ZThn216_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C5__7S7864C2__7S7864C1[] = {
  ABISELECT(-368,-216),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C2D1Ev,_ZThn268_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C2D0Ev,_ZThn268_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C2__7S7864C1[] = {
  ABISELECT(-456,-268),
  ABISELECT(-136,-80),
  ABISELECT(-456,-268),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn560_N7S7864C2D1Ev,_ZThn324_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn560_N7S7864C2D0Ev,_ZThn324_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C2__7S7864C1[] = {
  ABISELECT(-560,-324),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C2D1Ev,_ZThn580_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1016_N7S7864C2D0Ev,_ZThn580_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C2__7S7864C1[] = {
  ABISELECT(-1016,-580),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-1016,-580),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C2__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D1Ev,_ZTvn56_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C2D0Ev,_ZTvn56_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C2D1Ev,_ZThn588_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1040_N7S7864C2D0Ev,_ZThn588_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-588),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-1040,-588),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C2__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-1088,-616),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D1Ev,_ZTvn28_n24_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C2D0Ev,_ZTvn28_n24_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C2__7S7864C1[] = {
  ABISELECT(-880,-504),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D1Ev,_ZTvn180_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C2D0Ev,_ZTvn180_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-928,-532),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D1Ev,_ZTvn208_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C2D0Ev,_ZTvn208_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C2__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D1Ev,_ZTvn212_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C2D0Ev,_ZTvn212_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D1Ev,_ZTvn240_n32_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C2D0Ev,_ZTvn240_n32_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C2D1Ev,_ZThn628_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1104_N7S7864C2D0Ev,_ZThn628_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C2__7S7864C1[] = {
  ABISELECT(-1104,-628),
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C9__A4__7S7864C2__7S7864C1[] = {
  ABISELECT(-1312,-752),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D1Ev,_ZTvn124_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C2D0Ev,_ZTvn124_n28_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C2__7S7864C1[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-1360,-780),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D1Ev,_ZTvn152_n28_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C2D0Ev,_ZTvn152_n28_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-416,-244),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D1Ev,_ZTvn28_n44_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S7864C2D0Ev,_ZTvn28_n44_N7S7864C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C2D1Ev,_ZThn800_N7S7864C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev)();
extern void ABISELECT(_ZThn1392_N7S7864C2D0Ev,_ZThn800_N7S7864C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C11__A2__7S7864C2__7S7864C1[] = {
  ABISELECT(-1392,-800),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1392,-800),
  (VTBL_ENTRY)&(_ZTI7S7864C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev),
};
extern void _ZN8S7864C16D1Ev();
extern void _ZN8S7864C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C16__7S7864C1[] = {
  ABISELECT(1256,724),
  ABISELECT(928,528),
  ABISELECT(-112,-60),
  ABISELECT(1488,864),
  ABISELECT(344,208),
  ABISELECT(208,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&_ZN8S7864C16D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C16D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C118S7864C16__A3__7S7864C1[] = {
  ABISELECT(344,208),
  ABISELECT(208,128),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C118S7864C16__A12__7S7864C1[] = {
  ABISELECT(208,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn128_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn128_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C118S7864C16__A12__7S7864C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn128_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn128_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C118S7864C16__A3__7S7864C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZThn344_N8S7864C11D1Ev,_ZThn208_N8S7864C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
extern void ABISELECT(_ZThn344_N8S7864C11D0Ev,_ZThn208_N8S7864C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C118S7864C16__A3__7S7864C1[] = {
  ABISELECT(-344,-208),
  ABISELECT(-136,-80),
  ABISELECT(-344,-208),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn1488_N8S7864C16D1Ev,_ZThn864_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn1488_N8S7864C16D0Ev,_ZThn864_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__8S7864C16__7S7864C1[] = {
  ABISELECT(-232,-140),
  ABISELECT(-1144,-656),
  ABISELECT(-560,-336),
  ABISELECT(-1600,-924),
  ABISELECT(-1488,-864),
  ABISELECT(-1280,-736),
  ABISELECT(-1488,-864),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C16__7S7864C1[] = {
  ABISELECT(112,60),
  ABISELECT(320,188),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn128_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn128_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C16__7S7864C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn928_N8S7864C16D1Ev,_ZThn528_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn928_N8S7864C16D0Ev,_ZThn528_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C16__7S7864C1[] = {
  ABISELECT(-928,-528),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-928,-528),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev)();
extern void ABISELECT(_ZThn344_N8S7864C16D1Ev,_ZThn208_N8S7864C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev)();
extern void ABISELECT(_ZThn344_N8S7864C16D0Ev,_ZThn208_N8S7864C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C16__7S7864C1[] = {
  ABISELECT(-344,-208),
  ABISELECT(-136,-80),
  ABISELECT(-344,-208),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C16__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-976,-556),
  (VTBL_ENTRY)&(_ZTI8S7864C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D1Ev,_ZTvn28_n24_N8S7864C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C16D0Ev,_ZTvn28_n24_N8S7864C16D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C1[] = {
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZThn320_N7S7864C3D1Ev,_ZThn188_N7S7864C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
extern void ABISELECT(_ZThn320_N7S7864C3D0Ev,_ZThn188_N7S7864C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C3__7S7864C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void _ZN7S7864C5D1Ev();
extern void _ZN7S7864C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C5__7S7864C1[] = {
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&_ZN7S7864C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C5D0Ev,
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
extern void ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-136,-80),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(368,216),
  ABISELECT(320,188),
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
extern void ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C5__7S7864C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C5__7S7864C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D1Ev,_ZTv0_n12_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C5D0Ev,_ZTv0_n12_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C5__7S7864C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(368,216),
  ABISELECT(320,188),
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C5__7S7864C1[] = {
  ABISELECT(-648,-364),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D1Ev,_ZTvn56_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7864C5D0Ev,_ZTvn56_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C5__7S7864C1[] = {
  ABISELECT(-672,-372),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D1Ev,_ZTvn28_n24_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C5D0Ev,_ZTvn28_n24_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C1[] = {
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D1Ev,_ZTvn180_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7864C5D0Ev,_ZTvn180_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D1Ev,_ZTvn208_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7864C5D0Ev,_ZTvn208_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-576,-320),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D1Ev,_ZTvn212_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7864C5D0Ev,_ZTvn212_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D1Ev,_ZTvn240_n32_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7864C5D0Ev,_ZTvn240_n32_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev)();
extern void ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C5__7S7864C1[] = {
  ABISELECT(-736,-412),
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-736,-412),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C1[] = {
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D1Ev,_ZTvn124_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7864C5D0Ev,_ZTvn124_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C1[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D1Ev,_ZTvn152_n28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7864C5D0Ev,_ZTvn152_n28_N7S7864C5D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C1[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7864C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D1Ev,_ZThn28_N7S7864C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7864C5D0Ev,_ZThn28_N7S7864C5D0Ev),
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C6__A1__7S7864C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C1[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C6__7S7864C1[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C7D1Ev();
extern void _ZN7S7864C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C7__7S7864C1[] = {
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-560,-324),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&_ZN7S7864C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C7D0Ev,
};
extern void _ZN7S7864C6D1Ev();
extern void _ZN7S7864C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C67S7864C7__A1__7S7864C1[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&_ZN7S7864C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C6D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C1[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D1Ev,_ZTv0_n12_N7S7864C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C6D0Ev,_ZTv0_n12_N7S7864C6D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[] = {
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C1[] = {
  ABISELECT(-608,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C1[] = {
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
extern void ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-368,-208),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(672,380),
  ABISELECT(320,188),
  ABISELECT(672,380),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[] = {
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C1[] = {
  ABISELECT(536,296),
  ABISELECT(-136,-80),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C1[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(944,536),
  ABISELECT(320,188),
  ABISELECT(944,536),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(624,348),
  ABISELECT(624,348),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(488,268),
  ABISELECT(-136,-80),
  ABISELECT(488,268),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__7S7864C7__7S7864C1[] = {
  ABISELECT(560,324),
  ABISELECT(320,188),
  ABISELECT(560,324),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C7__7S7864C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D1Ev,_ZTv0_n12_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C7D0Ev,_ZTv0_n12_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C7__7S7864C1[] = {
  ABISELECT(-456,-256),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C7__7S7864C1[] = {
  ABISELECT(104,56),
  ABISELECT(-136,-80),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D1Ev,_ZTv0_n16_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C7D0Ev,_ZTv0_n16_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C9__7S7864C7__7S7864C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D1Ev,_ZThn56_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7864C7D0Ev,_ZThn56_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev)();
extern void ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C7__7S7864C1[] = {
  ABISELECT(-480,-264),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D1Ev,_ZTvn28_n24_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C7D0Ev,_ZTvn28_n24_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C1[] = {
  ABISELECT(-608,-344),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D1Ev,_ZThn208_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7864C7D0Ev,_ZThn208_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__A__7S7864C7__7S7864C1[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-944,-536),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D1Ev,_ZThn212_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7864C7D0Ev,_ZThn212_N7S7864C7D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7864C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D1Ev,_ZThn240_N7S7864C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7864C7D0Ev,_ZThn240_N7S7864C7D0Ev),
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C8__7S7864C1[] = {
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C8__A2__7S7864C1[] = {
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C1[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C8__7S7864C1[] = {
  ABISELECT(560,312),
  ABISELECT(-136,-80),
  ABISELECT(560,312),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C8__7S7864C1[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void _ZN8S7864C10D1Ev();
extern void _ZN8S7864C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C1[] = {
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&_ZN8S7864C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C10D0Ev,
};
extern void _ZN7S7864C8D1Ev();
extern void _ZN7S7864C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__A1__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&_ZN7S7864C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C8D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C1[] = {
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C1[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C1[] = {
  ABISELECT(632,348),
  ABISELECT(-136,-80),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C1[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S7864C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D1Ev,_ZTv0_n12_N7S7864C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C8D0Ev,_ZTv0_n12_N7S7864C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C10__7S7864C1[] = {
  ABISELECT(1040,588),
  ABISELECT(320,188),
  ABISELECT(1040,588),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S7864C10__7S7864C1[] = {
  ABISELECT(720,400),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D1Ev,_ZTv0_n12_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C10D0Ev,_ZTv0_n12_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C10__7S7864C1[] = {
  ABISELECT(584,320),
  ABISELECT(-136,-80),
  ABISELECT(584,320),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev),
};
extern void ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C8__8S7864C10__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7864C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D1Ev,_ZThn28_N8S7864C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S7864C10D0Ev,_ZThn28_N8S7864C10D0Ev),
};
extern void _ZN7S7864C9D1Ev();
extern void _ZN7S7864C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C9__A1__7S7864C1[] = {
  ABISELECT(-1104,-628),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&_ZN7S7864C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C9D0Ev,
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C117S7864C9__A1__7S7864C1[] = {
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C1[] = {
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C1[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C1[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C1[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C37S7864C9__A9__7S7864C1[] = {
  ABISELECT(-1040,-592),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C1[] = {
  ABISELECT(1040,592),
  ABISELECT(1040,592),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D1Ev,_ZTv0_n12_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C9D0Ev,_ZTv0_n12_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(64,40),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(1104,628),
  ABISELECT(320,188),
  ABISELECT(1104,628),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D1Ev,_ZTv0_n16_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7864C9D0Ev,_ZTv0_n16_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D1Ev,_ZTvn28_n24_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7864C9D0Ev,_ZTvn28_n24_N7S7864C9D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C1[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7864C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D1Ev,_ZThn152_N7S7864C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7864C9D0Ev,_ZThn152_N7S7864C9D0Ev),
};
extern void _ZN8S7864C11D1Ev();
extern void _ZN8S7864C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7864C11__A2__7S7864C1[] = {
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&_ZN8S7864C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7864C11D0Ev,
};
extern void _ZN7S7864C3D1Ev();
extern void _ZN7S7864C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7864C38S7864C11__A11__7S7864C1[] = {
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&_ZN7S7864C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7864C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C1[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI7S7864C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C11__A2__7S7864C1[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C11__A2__7S7864C1[] = {
  ABISELECT(936,532),
  ABISELECT(-136,-80),
  ABISELECT(936,532),
  (VTBL_ENTRY)&(_ZTI8S7864C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void _ZN8S7864C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
extern void _ZN8S7864C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7864C15__A1__7S7864C1[] = {
  ABISELECT(-232,-140),
  ABISELECT(-1144,-656),
  ABISELECT(-560,-336),
  ABISELECT(-1600,-924),
  0,
  ABISELECT(-1280,-736),
  0,
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C3__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(1600,924),
  ABISELECT(320,188),
  ABISELECT(1600,924),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(1280,736),
  ABISELECT(1280,736),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7864C10__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(560,336),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-1040,-588),
  ABISELECT(560,336),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C6__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(1144,656),
  ABISELECT(-136,-80),
  ABISELECT(1144,656),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7864C88S7864C10__8S7864C15__A1__7S7864C1[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(512,308),
  (VTBL_ENTRY)&(_ZTI8S7864C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D1Ev,_ZTvn28_n24_N8S7864C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S7864C15D0Ev,_ZTvn28_n24_N8S7864C15D0Ev),
};
static  VTT_ENTRY vtt_S7864C1[] = {
  {&(_ZTV7S7864C1[14]),  14,152},
  {&(_tg__ZTV7S7864C2__7S7864C1[13]),  13,15},
  {&(_tg__ZTV8S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S7864C158S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C158S7864C147S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C158S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C158S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C147S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S7864C147S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C147S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C147S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C2__7S7864C1[13]),  13,15},
  {&(_tg__ZTV8S19676C9__7S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C5__7S7864C2__7S7864C1[11]),  11,13},
  {&(_tg__ZTV7S7864C6__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C7__7S7864C2__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C8__7S7864C2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C2__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C2__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C2__7S7864C1[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7864C9__A4__7S7864C2__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C11__A2__7S7864C2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV8S7864C16__7S7864C1[8]),  8,10},
  {&(_tg__ZTV8S7864C118S7864C16__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C118S7864C16__A12__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C118S7864C16__A12__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C118S7864C16__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C118S7864C16__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C15__8S7864C16__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C3__8S7864C16__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S7864C16__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C16__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C16__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C16__7S7864C1[4]),  4,6},
  {&(_ZTV7S7864C1[14]),  14,152},
  {&(_ZTV7S7864C1[29]),  29,152},
  {&(_ZTV7S7864C1[42]),  42,152},
  {&(_ZTV7S7864C1[54]),  54,152},
  {&(_ZTV7S7864C1[64]),  64,152},
  {&(_ZTV7S7864C1[101]),  101,152},
  {&(_ZTV7S7864C1[72]),  72,152},
  {&(_ZTV7S7864C1[109]),  109,152},
  {&(_ZTV7S7864C1[115]),  115,152},
  {&(_ZTV7S7864C1[76]),  76,152},
  {&(_ZTV7S7864C1[81]),  81,152},
  {&(_ZTV7S7864C1[88]),  88,152},
  {&(_ZTV7S7864C1[94]),  94,152},
  {&(_ZTV7S7864C1[124]),  124,152},
  {&(_ZTV7S7864C1[128]),  128,152},
  {&(_ZTV7S7864C1[133]),  133,152},
  {&(_ZTV7S7864C1[48]),  48,152},
  {&(_ZTV7S7864C1[140]),  140,152},
  {&(_ZTV7S7864C1[24]),  24,152},
  {&(_ZTV7S7864C1[150]),  150,152},
  {&(_tg__ZTV7S7864C3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C5__7S7864C1[10]),  10,12},
  {&(_tg__ZTV8S7864C107S7864C5__A2__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C5__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C5__A10__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C5__A3__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C5__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C5__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C5__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C5__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C5__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C5__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C3__A1__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C5__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C5__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C5__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7864C97S7864C7__A2__7S7864C5__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C5__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C5__7S7864C1[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7864C9__A4__7S7864C5__7S7864C1[2]),  2,4},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C88S7864C10__A3__7S7864C5__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C6__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C6__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C7__7S7864C1[7]),  7,9},
  {&(_tg__ZTV7S7864C67S7864C7__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C37S7864C67S7864C7__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C67S7864C7__A3__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C67S7864C7__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C97S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C97S7864C7__A5__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C97S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C97S7864C7__A6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C97S7864C7__A6__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C97S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C97S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C97S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C97S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C107S7864C7__A1__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C107S7864C7__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C107S7864C7__A7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C107S7864C7__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C107S7864C7__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C107S7864C7__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C107S7864C7__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C107S7864C7__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C107S7864C7__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C3__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C8__7S7864C7__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C6__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__7S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C10__7S7864C7__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A6__7S7864C7__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__A__7S7864C7__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A2__7S7864C7__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C8__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C8__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C8__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C8__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C1[5]),  5,7},
  {&(_tg__ZTV7S7864C88S7864C10__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C88S7864C10__A4__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C88S7864C10__A4__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C88S7864C10__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C88S7864C10__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C3__8S7864C10__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S7864C10__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C10__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C8__8S7864C10__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C9__A1__7S7864C1[6]),  6,8},
  {&(_tg__ZTV8S7864C117S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C117S7864C9__A8__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C117S7864C9__A8__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C117S7864C9__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C117S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C37S7864C9__A9__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C37S7864C9__A9__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__7S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7864C9__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__7S7864C9__A1__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C3__A1__7S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__7S7864C9__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C3__A__7S7864C9__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C11__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C38S7864C11__A11__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7864C38S7864C11__A11__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7864C11__A2__7S7864C1[3]),  3,5},
  {&(_tg__ZTV7S7864C6__8S7864C11__A2__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S7864C15__A1__7S7864C1[8]),  8,10},
  {&(_tg__ZTV7S7864C3__8S7864C15__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S7864C15__A1__7S7864C1[3]),  3,5},
  {&(_tg__ZTV8S7864C10__8S7864C15__A1__7S7864C1[6]),  6,8},
  {&(_tg__ZTV7S7864C6__8S7864C15__A1__7S7864C1[4]),  4,6},
  {&(_tg__ZTV7S7864C88S7864C10__8S7864C15__A1__7S7864C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7864C1[];
extern  VTBL_ENTRY _ZTV7S7864C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7864C1[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D0Ev,_ZTv0_n24_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D0Ev,_ZThn264_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C7D1Ev,_ZTv0_n24_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7864C7D1Ev,_ZThn264_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D0Ev,_ZTv0_n20_N7S7864C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D0Ev,_ZThn256_N7S7864C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C7D1Ev,_ZTv0_n20_N7S7864C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C7D1Ev,_ZThn256_N7S7864C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D0Ev,_ZTv0_n24_N7S7864C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D0Ev,_ZThn208_N7S7864C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C9D1Ev,_ZTv0_n24_N7S7864C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C9D1Ev,_ZThn208_N7S7864C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D0Ev,_ZTv0_n28_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D0Ev,_ZThn412_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C5D1Ev,_ZTv0_n28_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N7S7864C5D1Ev,_ZThn412_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D0Ev,_ZTv0_n24_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D0Ev,_ZThn372_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C5D1Ev,_ZTv0_n24_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S7864C5D1Ev,_ZThn372_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D0Ev,_ZTv0_n20_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D0Ev,_ZThn364_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C5D1Ev,_ZTv0_n20_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N7S7864C5D1Ev,_ZThn364_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D0Ev,_ZTv0_n32_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D0Ev,_ZThn108_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C5D1Ev,_ZTv0_n32_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7864C5D1Ev,_ZThn108_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D0Ev,_ZTv0_n16_N7S7864C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D0Ev,_ZThn52_N7S7864C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C5D1Ev,_ZTv0_n16_N7S7864C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7864C5D1Ev,_ZThn52_N7S7864C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D0Ev,_ZTv0_n16_N8S7864C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D0Ev,_ZThn52_N8S7864C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C10D1Ev,_ZTv0_n16_N8S7864C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S7864C10D1Ev,_ZThn52_N8S7864C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D0Ev,_ZTv0_n16_N7S7864C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D0Ev,_ZThn24_N7S7864C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C8D1Ev,_ZTv0_n16_N7S7864C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7864C8D1Ev,_ZThn24_N7S7864C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D0Ev,_ZTv0_n24_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S7864C16D0Ev,_ZThn528_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C16D1Ev,_ZTv0_n24_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S7864C16D1Ev,_ZThn528_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D0Ev,_ZTv0_n12_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D0Ev,_ZThn128_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C16D1Ev,_ZTv0_n12_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C16D1Ev,_ZThn128_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D0Ev,_ZTv0_n16_N8S7864C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C16D0Ev,_ZThn208_N8S7864C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S7864C16D0Ev,_ZThn864_N8S7864C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C16D1Ev,_ZTv0_n16_N8S7864C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C16D1Ev,_ZThn208_N8S7864C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S7864C16D1Ev,_ZThn864_N8S7864C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D0Ev,_ZTv0_n16_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C11D0Ev,_ZThn208_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C11D1Ev,_ZTv0_n16_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S7864C11D1Ev,_ZThn208_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D0Ev,_ZTv0_n12_N8S7864C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D0Ev,_ZThn128_N8S7864C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C11D1Ev,_ZTv0_n12_N8S7864C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7864C11D1Ev,_ZThn128_N8S7864C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D0Ev,_ZTv0_n12_N7S7864C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C3D0Ev,_ZThn188_N7S7864C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D0Ev,_ZThn128_N7S7864C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C3D1Ev,_ZTv0_n12_N7S7864C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C3D1Ev,_ZThn188_N7S7864C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7864C3D1Ev,_ZThn128_N7S7864C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D0Ev,_ZTv0_n28_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C2D0Ev,_ZThn628_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C2D1Ev,_ZTv0_n28_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C2D1Ev,_ZThn628_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D0Ev,_ZTv0_n24_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C2D0Ev,_ZThn588_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C2D1Ev,_ZTv0_n24_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C2D1Ev,_ZThn588_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D0Ev,_ZTv0_n20_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C2D0Ev,_ZThn800_N7S7864C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C2D0Ev,_ZThn580_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C2D1Ev,_ZTv0_n20_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C2D1Ev,_ZThn800_N7S7864C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C2D1Ev,_ZThn580_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D0Ev,_ZTv0_n32_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C2D0Ev,_ZThn324_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C2D1Ev,_ZTv0_n32_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C2D1Ev,_ZThn324_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D0Ev,_ZTv0_n44_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C2D0Ev,_ZThn216_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C2D1Ev,_ZTv0_n44_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C2D1Ev,_ZThn216_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D0Ev,_ZTv0_n12_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C2D0Ev,_ZThn188_N7S7864C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C2D1Ev,_ZTv0_n12_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C2D1Ev,_ZThn188_N7S7864C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D0Ev,_ZTv0_n24_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C14D0Ev,_ZThn588_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C14D1Ev,_ZTv0_n24_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C14D1Ev,_ZThn588_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D0Ev,_ZTv0_n12_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C14D0Ev,_ZThn188_N8S7864C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C14D1Ev,_ZTv0_n12_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C14D1Ev,_ZThn188_N8S7864C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D0Ev,_ZTv0_n24_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C15D0Ev,_ZThn588_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7864C15D1Ev,_ZTv0_n24_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S7864C15D1Ev,_ZThn588_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D0Ev,_ZTv0_n12_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C15D0Ev,_ZThn188_N8S7864C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7864C15D1Ev,_ZTv0_n12_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S7864C15D1Ev,_ZThn188_N8S7864C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D0Ev,_ZTv0_n16_N8S7864C15D0Ev), // 
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C15D0Ev,_ZThn268_N8S7864C15D0Ev),
  (VTBL_ENTRY)_ZN8S7864C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C15D1Ev,_ZTv0_n16_N8S7864C15D1Ev), // 
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C15D1Ev,_ZThn268_N8S7864C15D1Ev),
  (VTBL_ENTRY)_ZN8S7864C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D0Ev,_ZTv0_n16_N8S7864C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C14D0Ev,_ZThn268_N8S7864C14D0Ev),
  (VTBL_ENTRY)_ZN8S7864C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7864C14D1Ev,_ZTv0_n16_N8S7864C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S7864C14D1Ev,_ZThn268_N8S7864C14D1Ev),
  (VTBL_ENTRY)_ZN8S7864C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D0Ev,_ZTv0_n16_N7S7864C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C2D0Ev,_ZThn268_N7S7864C2D0Ev),
  (VTBL_ENTRY)_ZN7S7864C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C2D1Ev,_ZTv0_n16_N7S7864C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C2D1Ev,_ZThn268_N7S7864C2D1Ev),
  (VTBL_ENTRY)_ZN7S7864C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C1D0Ev,_ZTv0_n28_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C1D0Ev,_ZThn628_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7864C1D1Ev,_ZTv0_n28_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1104_N7S7864C1D1Ev,_ZThn628_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C1D0Ev,_ZTv0_n24_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C1D0Ev,_ZThn588_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7864C1D1Ev,_ZTv0_n24_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N7S7864C1D1Ev,_ZThn588_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C1D0Ev,_ZTv0_n20_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C1D0Ev,_ZThn800_N7S7864C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C1D0Ev,_ZThn580_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7864C1D1Ev,_ZTv0_n20_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7864C1D1Ev,_ZThn800_N7S7864C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N7S7864C1D1Ev,_ZThn580_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C1D0Ev,_ZTv0_n32_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C1D0Ev,_ZThn324_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7864C1D1Ev,_ZTv0_n32_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N7S7864C1D1Ev,_ZThn324_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C1D0Ev,_ZTv0_n44_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C1D0Ev,_ZThn216_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7864C1D1Ev,_ZTv0_n44_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7864C1D1Ev,_ZThn216_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C1D0Ev,_ZTv0_n12_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C1D0Ev,_ZThn188_N7S7864C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7864C1D1Ev,_ZTv0_n12_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7864C1D1Ev,_ZThn188_N7S7864C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C1D0Ev,_ZTv0_n16_N7S7864C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N7S7864C1D0Ev,_ZThn924_N7S7864C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C1D0Ev,_ZThn268_N7S7864C1D0Ev),
  (VTBL_ENTRY)_ZN7S7864C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7864C1D1Ev,_ZTv0_n16_N7S7864C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1600_N7S7864C1D1Ev,_ZThn924_N7S7864C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7864C1D1Ev,_ZThn268_N7S7864C1D1Ev),
  (VTBL_ENTRY)_ZN7S7864C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7864C1 = {  "S7864C1", // class name
  bases_S7864C1, 44,
  &(vtc_S7864C1[0]), // expected_vtbl_contents
  &(vtt_S7864C1[0]), // expected_vtt_contents
  ABISELECT(1616,932), // object size
  NSPAIRA(_ZTI7S7864C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7864C1),152, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7864C1),176, //virtual table table var
  41, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C3_nt  : S3423C8_nt {
};
//SIG(-1 S1022C3_nt) C1{ BC2{ m Fi}}



//skip512 S1022C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S1022C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1022C3_nt[];
VTBL_ENTRY *P__ZTI10S1022C3_nt = _ZTI10S1022C3_nt; 
Class_Descriptor cd_S1022C3_nt = {  "S1022C3_nt", // class name
  bases_S1022C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1022C3_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  S1022C2  : S1022C3_nt {
  ::S4161C4_nt s1022c2f0;
  void *s1022c2f1;
  virtual  ~S1022C2(); // _ZN7S1022C2D1Ev
  virtual void  v17(); // _ZN7S1022C23v17Ev
  virtual void  v18(); // _ZN7S1022C23v18Ev
  virtual void  v19(); // _ZN7S1022C23v19Ev
  virtual void  v20(); // _ZN7S1022C23v20Ev
  virtual void  v21(); // _ZN7S1022C23v21Ev
  virtual void  v22(); // _ZN7S1022C23v22Ev
  virtual void  v23(); // _ZN7S1022C23v23Ev
  virtual void  v24(); // _ZN7S1022C23v24Ev
  virtual void  v25(); // _ZN7S1022C23v25Ev
  virtual void  v26(); // _ZN7S1022C23v26Ev
  virtual void  v27(); // _ZN7S1022C23v27Ev
  virtual void  v28(); // _ZN7S1022C23v28Ev
  virtual void  v29(); // _ZN7S1022C23v29Ev
  virtual void  v30(); // _ZN7S1022C23v30Ev
  virtual void  v31(); // _ZN7S1022C23v31Ev
  virtual void  v32(); // _ZN7S1022C23v32Ev
  virtual void  v33(); // _ZN7S1022C23v33Ev
  virtual void  v34(); // _ZN7S1022C23v34Ev
  virtual void  v35(); // _ZN7S1022C23v35Ev
  virtual void  v36(); // _ZN7S1022C23v36Ev
  virtual void  v37(); // _ZN7S1022C23v37Ev
  virtual void  v38(); // _ZN7S1022C23v38Ev
  virtual void  v39(); // _ZN7S1022C23v39Ev
  S1022C2(); // tgen
};
//SIG(-1 S1022C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC4{ m Fp} Fp}


 S1022C2 ::~S1022C2(){ note_dtor("S1022C2", this);}
void  S1022C2 ::v17(){vfunc_called(this, "_ZN7S1022C23v17Ev");}
void  S1022C2 ::v18(){vfunc_called(this, "_ZN7S1022C23v18Ev");}
void  S1022C2 ::v19(){vfunc_called(this, "_ZN7S1022C23v19Ev");}
void  S1022C2 ::v20(){vfunc_called(this, "_ZN7S1022C23v20Ev");}
void  S1022C2 ::v21(){vfunc_called(this, "_ZN7S1022C23v21Ev");}
void  S1022C2 ::v22(){vfunc_called(this, "_ZN7S1022C23v22Ev");}
void  S1022C2 ::v23(){vfunc_called(this, "_ZN7S1022C23v23Ev");}
void  S1022C2 ::v24(){vfunc_called(this, "_ZN7S1022C23v24Ev");}
void  S1022C2 ::v25(){vfunc_called(this, "_ZN7S1022C23v25Ev");}
void  S1022C2 ::v26(){vfunc_called(this, "_ZN7S1022C23v26Ev");}
void  S1022C2 ::v27(){vfunc_called(this, "_ZN7S1022C23v27Ev");}
void  S1022C2 ::v28(){vfunc_called(this, "_ZN7S1022C23v28Ev");}
void  S1022C2 ::v29(){vfunc_called(this, "_ZN7S1022C23v29Ev");}
void  S1022C2 ::v30(){vfunc_called(this, "_ZN7S1022C23v30Ev");}
void  S1022C2 ::v31(){vfunc_called(this, "_ZN7S1022C23v31Ev");}
void  S1022C2 ::v32(){vfunc_called(this, "_ZN7S1022C23v32Ev");}
void  S1022C2 ::v33(){vfunc_called(this, "_ZN7S1022C23v33Ev");}
void  S1022C2 ::v34(){vfunc_called(this, "_ZN7S1022C23v34Ev");}
void  S1022C2 ::v35(){vfunc_called(this, "_ZN7S1022C23v35Ev");}
void  S1022C2 ::v36(){vfunc_called(this, "_ZN7S1022C23v36Ev");}
void  S1022C2 ::v37(){vfunc_called(this, "_ZN7S1022C23v37Ev");}
void  S1022C2 ::v38(){vfunc_called(this, "_ZN7S1022C23v38Ev");}
void  S1022C2 ::v39(){vfunc_called(this, "_ZN7S1022C23v39Ev");}
S1022C2 ::S1022C2(){ note_ctor("S1022C2", this);} // tgen

static void Test_S1022C2()
{
  extern Class_Descriptor cd_S1022C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S1022C2, buf);
    S1022C2 *dp, &lv = *(dp=new (buf) S1022C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S1022C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1022C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S1022C3_nt*), ABISELECT(8,4), "S1022C2");
    check_base_class_offset(lv, (S1022C3_nt*), ABISELECT(8,4), "S1022C2");
    check_field_offset(lv, s1022c2f0, ABISELECT(16,8), "S1022C2.s1022c2f0");
    check_field_offset(lv, s1022c2f1, ABISELECT(24,12), "S1022C2.s1022c2f1");
    test_class_info(&lv, &cd_S1022C2);
    dp->~S1022C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1022C2(Test_S1022C2, "S1022C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S1022C2C1Ev();
extern void _ZN7S1022C2D1Ev();
Name_Map name_map_S1022C2[] = {
  NSPAIR(_ZN7S1022C2C1Ev),
  NSPAIR(_ZN7S1022C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S1022C3_nt;
extern VTBL_ENTRY _ZTI10S1022C3_nt[];
static Base_Class bases_S1022C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S1022C3_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 _ZTI7S1022C2[];
extern void _ZN7S1022C2D1Ev();
extern void _ZN7S1022C2D0Ev();
extern void _ZN7S1022C23v17Ev();
extern void _ZN7S1022C23v18Ev();
extern void _ZN7S1022C23v19Ev();
extern void _ZN7S1022C23v20Ev();
extern void _ZN7S1022C23v21Ev();
extern void _ZN7S1022C23v22Ev();
extern void _ZN7S1022C23v23Ev();
extern void _ZN7S1022C23v24Ev();
extern void _ZN7S1022C23v25Ev();
extern void _ZN7S1022C23v26Ev();
extern void _ZN7S1022C23v27Ev();
extern void _ZN7S1022C23v28Ev();
extern void _ZN7S1022C23v29Ev();
extern void _ZN7S1022C23v30Ev();
extern void _ZN7S1022C23v31Ev();
extern void _ZN7S1022C23v32Ev();
extern void _ZN7S1022C23v33Ev();
extern void _ZN7S1022C23v34Ev();
extern void _ZN7S1022C23v35Ev();
extern void _ZN7S1022C23v36Ev();
extern void _ZN7S1022C23v37Ev();
extern void _ZN7S1022C23v38Ev();
extern void _ZN7S1022C23v39Ev();
static  VTBL_ENTRY vtc_S1022C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1022C2[0]),
  (VTBL_ENTRY)&_ZN7S1022C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1022C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v39Ev,
};
extern VTBL_ENTRY _ZTI7S1022C2[];
extern  VTBL_ENTRY _ZTV7S1022C2[];
Class_Descriptor cd_S1022C2 = {  "S1022C2", // class name
  bases_S1022C2, 2,
  &(vtc_S1022C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S1022C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1022C2),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C10_nt  {
  void *s1022c10f0;
  int s1022c10f1;
  void  mf1022c10(); // _ZN11S1022C10_nt9mf1022c10Ev
};
//SIG(-1 S1022C10_nt) C1{ m Fp Fi}


void  S1022C10_nt ::mf1022c10(){}

//skip512 S1022C10_nt

#else // __cplusplus

Class_Descriptor cd_S1022C10_nt = {  "S1022C10_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  S1022C9_nt  : S1022C10_nt {
};
//SIG(-1 S1022C9_nt) C1{ BC2{ m Fp Fi}}



//skip512 S1022C9_nt

#else // __cplusplus

extern Class_Descriptor cd_S1022C10_nt;
static Base_Class bases_S1022C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1022C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1022C8_nt  {
  int s1022c8f0;
  ::S1022C9_nt s1022c8f1;
  void  mf1022c8(); // _ZN10S1022C8_nt8mf1022c8Ev
};
//SIG(-1 S1022C8_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S1022C8_nt ::mf1022c8(){}

//skip512 S1022C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1022C1  : S1022C2 {
  ::S3423C7_nt s1022c1f0;
  ::S3423C4_nt s1022c1f1;
  ::S3423C4_nt s1022c1f2;
  int s1022c1f3;
  ::S1022C8_nt s1022c1f4;
  void *s1022c1f5;
  int s1022c1f6[3];
  __tsi64 s1022c1f7;
  ::S1532C12_nt s1022c1f8;
  int s1022c1f9[3];
  unsigned char s1022c1f10:1;
  unsigned char s1022c1f11:1;
  unsigned char s1022c1f12:1;
  unsigned char s1022c1f13:1;
  unsigned char s1022c1f14:1;
  unsigned char s1022c1f15:1;
  unsigned char s1022c1f16:1;
  unsigned char s1022c1f17:1;
  virtual  ~S1022C1(); // _ZN7S1022C1D1Ev
  virtual void  v1(); // _ZN7S1022C12v1Ev
  virtual void  v2(); // _ZN7S1022C12v2Ev
  virtual void  v3(); // _ZN7S1022C12v3Ev
  virtual void  v4(); // _ZN7S1022C12v4Ev
  virtual void  v5(); // _ZN7S1022C12v5Ev
  virtual void  v6(); // _ZN7S1022C12v6Ev
  virtual void  v7(); // _ZN7S1022C12v7Ev
  virtual void  v8(); // _ZN7S1022C12v8Ev
  virtual void  v9(); // _ZN7S1022C12v9Ev
  virtual void  v10(); // _ZN7S1022C13v10Ev
  virtual void  v11(); // _ZN7S1022C13v11Ev
  virtual void  v12(); // _ZN7S1022C13v12Ev
  virtual void  v13(); // _ZN7S1022C13v13Ev
  virtual void  v14(); // _ZN7S1022C13v14Ev
  virtual void  v15(); // _ZN7S1022C13v15Ev
  virtual void  v16(); // _ZN7S1022C13v16Ev
  S1022C1(); // tgen
};
//SIG(1 S1022C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 FC5{ m Fp} Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 FC6{ m Fp Fi[2]} FC7{ m Fi[2]} FC7 Fi FC8{ m Fi FC9{ BC10{ m Fp Fi}}} Fp Fi[3] FL FC11{ m Fi Fc} Fi[3] Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1}


 S1022C1 ::~S1022C1(){ note_dtor("S1022C1", this);}
void  S1022C1 ::v1(){vfunc_called(this, "_ZN7S1022C12v1Ev");}
void  S1022C1 ::v2(){vfunc_called(this, "_ZN7S1022C12v2Ev");}
void  S1022C1 ::v3(){vfunc_called(this, "_ZN7S1022C12v3Ev");}
void  S1022C1 ::v4(){vfunc_called(this, "_ZN7S1022C12v4Ev");}
void  S1022C1 ::v5(){vfunc_called(this, "_ZN7S1022C12v5Ev");}
void  S1022C1 ::v6(){vfunc_called(this, "_ZN7S1022C12v6Ev");}
void  S1022C1 ::v7(){vfunc_called(this, "_ZN7S1022C12v7Ev");}
void  S1022C1 ::v8(){vfunc_called(this, "_ZN7S1022C12v8Ev");}
void  S1022C1 ::v9(){vfunc_called(this, "_ZN7S1022C12v9Ev");}
void  S1022C1 ::v10(){vfunc_called(this, "_ZN7S1022C13v10Ev");}
void  S1022C1 ::v11(){vfunc_called(this, "_ZN7S1022C13v11Ev");}
void  S1022C1 ::v12(){vfunc_called(this, "_ZN7S1022C13v12Ev");}
void  S1022C1 ::v13(){vfunc_called(this, "_ZN7S1022C13v13Ev");}
void  S1022C1 ::v14(){vfunc_called(this, "_ZN7S1022C13v14Ev");}
void  S1022C1 ::v15(){vfunc_called(this, "_ZN7S1022C13v15Ev");}
void  S1022C1 ::v16(){vfunc_called(this, "_ZN7S1022C13v16Ev");}
S1022C1 ::S1022C1(){ note_ctor("S1022C1", this);} // tgen

static void Test_S1022C1()
{
  extern Class_Descriptor cd_S1022C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S1022C1, buf);
    S1022C1 *dp, &lv = *(dp=new (buf) S1022C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S1022C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1022C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S1022C3_nt*)(S1022C2*), ABISELECT(8,4), "S1022C1");
    check_base_class_offset(lv, (S1022C3_nt*)(S1022C2*), ABISELECT(8,4), "S1022C1");
    check_base_class_offset(lv, (S1022C2*), 0, "S1022C1");
    check_field_offset(lv, s1022c1f0, ABISELECT(32,16), "S1022C1.s1022c1f0");
    check_field_offset(lv, s1022c1f1, ABISELECT(48,28), "S1022C1.s1022c1f1");
    check_field_offset(lv, s1022c1f2, ABISELECT(56,36), "S1022C1.s1022c1f2");
    check_field_offset(lv, s1022c1f3, ABISELECT(64,44), "S1022C1.s1022c1f3");
    check_field_offset(lv, s1022c1f4, ABISELECT(72,48), "S1022C1.s1022c1f4");
    check_field_offset(lv, s1022c1f5, ABISELECT(96,60), "S1022C1.s1022c1f5");
    check_field_offset(lv, s1022c1f6, ABISELECT(104,64), "S1022C1.s1022c1f6");
    check_field_offset(lv, s1022c1f7, ABISELECT(120,76), "S1022C1.s1022c1f7");
    check_field_offset(lv, s1022c1f8, ABISELECT(128,84), "S1022C1.s1022c1f8");
    check_field_offset(lv, s1022c1f9, ABISELECT(136,92), "S1022C1.s1022c1f9");
    set_bf_and_test(lv, s1022c1f10, ABISELECT(148,104), 0, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f11, ABISELECT(148,104), 1, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f12, ABISELECT(148,104), 2, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f13, ABISELECT(148,104), 3, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f14, ABISELECT(148,104), 4, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f15, ABISELECT(148,104), 5, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f16, ABISELECT(148,104), 6, 1, 1, "S1022C1");
    set_bf_and_test(lv, s1022c1f17, ABISELECT(148,104), 7, 1, 1, "S1022C1");
    test_class_info(&lv, &cd_S1022C1);
    dp->~S1022C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1022C1(Test_S1022C1, "S1022C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S1022C1C1Ev();
extern void _ZN7S1022C1D1Ev();
Name_Map name_map_S1022C1[] = {
  NSPAIR(_ZN7S1022C1C1Ev),
  NSPAIR(_ZN7S1022C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S1022C3_nt;
extern VTBL_ENTRY _ZTI10S1022C3_nt[];
extern Class_Descriptor cd_S1022C2;
extern VTBL_ENTRY _ZTI7S1022C2[];
extern  VTBL_ENTRY _ZTV7S1022C2[];
static Base_Class bases_S1022C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S1022C3_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_S1022C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1022C1[];
extern void _ZN7S1022C1D1Ev();
extern void _ZN7S1022C1D0Ev();
extern void _ZN7S1022C23v17Ev();
extern void _ZN7S1022C23v18Ev();
extern void _ZN7S1022C23v19Ev();
extern void _ZN7S1022C23v20Ev();
extern void _ZN7S1022C23v21Ev();
extern void _ZN7S1022C23v22Ev();
extern void _ZN7S1022C23v23Ev();
extern void _ZN7S1022C23v24Ev();
extern void _ZN7S1022C23v25Ev();
extern void _ZN7S1022C23v26Ev();
extern void _ZN7S1022C23v27Ev();
extern void _ZN7S1022C23v28Ev();
extern void _ZN7S1022C23v29Ev();
extern void _ZN7S1022C23v30Ev();
extern void _ZN7S1022C23v31Ev();
extern void _ZN7S1022C23v32Ev();
extern void _ZN7S1022C23v33Ev();
extern void _ZN7S1022C23v34Ev();
extern void _ZN7S1022C23v35Ev();
extern void _ZN7S1022C23v36Ev();
extern void _ZN7S1022C23v37Ev();
extern void _ZN7S1022C23v38Ev();
extern void _ZN7S1022C23v39Ev();
extern void _ZN7S1022C12v1Ev();
extern void _ZN7S1022C12v2Ev();
extern void _ZN7S1022C12v3Ev();
extern void _ZN7S1022C12v4Ev();
extern void _ZN7S1022C12v5Ev();
extern void _ZN7S1022C12v6Ev();
extern void _ZN7S1022C12v7Ev();
extern void _ZN7S1022C12v8Ev();
extern void _ZN7S1022C12v9Ev();
extern void _ZN7S1022C13v10Ev();
extern void _ZN7S1022C13v11Ev();
extern void _ZN7S1022C13v12Ev();
extern void _ZN7S1022C13v13Ev();
extern void _ZN7S1022C13v14Ev();
extern void _ZN7S1022C13v15Ev();
extern void _ZN7S1022C13v16Ev();
static  VTBL_ENTRY vtc_S1022C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1022C1[0]),
  (VTBL_ENTRY)&_ZN7S1022C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1022C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v19Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v20Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v21Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v22Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v23Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v24Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v25Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v26Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v27Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v28Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v29Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v30Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v31Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v32Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v33Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v34Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v35Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v36Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v37Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v38Ev,
  (VTBL_ENTRY)&_ZN7S1022C23v39Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1022C12v9Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v10Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v11Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v12Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v13Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v14Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v15Ev,
  (VTBL_ENTRY)&_ZN7S1022C13v16Ev,
};
extern VTBL_ENTRY _ZTI7S1022C1[];
extern  VTBL_ENTRY _ZTV7S1022C1[];
Class_Descriptor cd_S1022C1 = {  "S1022C1", // class name
  bases_S1022C1, 3,
  &(vtc_S1022C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S1022C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1022C1),43, //virtual function table var
  2, // 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  S6730C2  {
  int s6730c2f0;
  __tsi64 s6730c2f1;
  void *s6730c2f2[4];
  int s6730c2f3[2];
  void *s6730c2f4;
  ::S3423C4_nt s6730c2f5;
  void *s6730c2f6[2];
  virtual  ~S6730C2(); // _ZN7S6730C2D1Ev
  virtual void  v3(); // _ZN7S6730C22v3Ev
  virtual void  v4(); // _ZN7S6730C22v4Ev
  virtual void  v5(); // _ZN7S6730C22v5Ev
  virtual void  v6(); // _ZN7S6730C22v6Ev
  virtual void  v7(); // _ZN7S6730C22v7Ev
  virtual void  v8(); // _ZN7S6730C22v8Ev
  virtual void  v9(); // _ZN7S6730C22v9Ev
  virtual void  v10(); // _ZN7S6730C23v10Ev
  virtual void  v11(); // _ZN7S6730C23v11Ev
  virtual void  v12(); // _ZN7S6730C23v12Ev
  virtual void  v13(); // _ZN7S6730C23v13Ev
  virtual void  v14(); // _ZN7S6730C23v14Ev
  virtual void  v15(); // _ZN7S6730C23v15Ev
  virtual void  v16(); // _ZN7S6730C23v16Ev
  virtual void  v17(); // _ZN7S6730C23v17Ev
  virtual void  v18(); // _ZN7S6730C23v18Ev
  virtual void  v19(); // _ZN7S6730C23v19Ev
  virtual void  v20(); // _ZN7S6730C23v20Ev
  virtual void  v21(); // _ZN7S6730C23v21Ev
  virtual void  v22(); // _ZN7S6730C23v22Ev
  virtual void  v23(); // _ZN7S6730C23v23Ev
  virtual void  v24(); // _ZN7S6730C23v24Ev
  virtual void  v25(); // _ZN7S6730C23v25Ev
  virtual void  v26(); // _ZN7S6730C23v26Ev
  virtual void  v27(); // _ZN7S6730C23v27Ev
  virtual void  v28(); // _ZN7S6730C23v28Ev
  virtual void  v29(); // _ZN7S6730C23v29Ev
  virtual void  v30(); // _ZN7S6730C23v30Ev
  virtual void  v31(); // _ZN7S6730C23v31Ev
  virtual void  v32(); // _ZN7S6730C23v32Ev
  virtual void  v33(); // _ZN7S6730C23v33Ev
  virtual void  v34(); // _ZN7S6730C23v34Ev
  virtual void  v35(); // _ZN7S6730C23v35Ev
  virtual void  v36(); // _ZN7S6730C23v36Ev
  virtual void  v37(); // _ZN7S6730C23v37Ev
  virtual void  v38(); // _ZN7S6730C23v38Ev
  virtual void  v39(); // _ZN7S6730C23v39Ev
  virtual void  v40(); // _ZN7S6730C23v40Ev
  virtual void  v41(); // _ZN7S6730C23v41Ev
  virtual void  v42(); // _ZN7S6730C23v42Ev
  virtual void  v43(); // _ZN7S6730C23v43Ev
  virtual void  v44(); // _ZN7S6730C23v44Ev
  virtual void  v45(); // _ZN7S6730C23v45Ev
  virtual void  v46(); // _ZN7S6730C23v46Ev
  virtual void  v47(); // _ZN7S6730C23v47Ev
  virtual void  v48(); // _ZN7S6730C23v48Ev
  virtual void  v49(); // _ZN7S6730C23v49Ev
  virtual void  v50(); // _ZN7S6730C23v50Ev
  virtual void  v51(); // _ZN7S6730C23v51Ev
  virtual void  v52(); // _ZN7S6730C23v52Ev
  virtual void  v53(); // _ZN7S6730C23v53Ev
  virtual void  v54(); // _ZN7S6730C23v54Ev
  virtual void  v55(); // _ZN7S6730C23v55Ev
  virtual void  v56(); // _ZN7S6730C23v56Ev
  virtual void  v57(); // _ZN7S6730C23v57Ev
  virtual void  v58(); // _ZN7S6730C23v58Ev
  virtual void  v59(); // _ZN7S6730C23v59Ev
  virtual void  v60(); // _ZN7S6730C23v60Ev
  virtual void  v61(); // _ZN7S6730C23v61Ev
  virtual void  v62(); // _ZN7S6730C23v62Ev
  virtual void  v63(); // _ZN7S6730C23v63Ev
  virtual void  v64(); // _ZN7S6730C23v64Ev
  virtual void  v65(); // _ZN7S6730C23v65Ev
  virtual void  v66(); // _ZN7S6730C23v66Ev
  S6730C2(); // tgen
};
//SIG(-1 S6730C2) 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]}


 S6730C2 ::~S6730C2(){ note_dtor("S6730C2", this);}
void  S6730C2 ::v3(){vfunc_called(this, "_ZN7S6730C22v3Ev");}
void  S6730C2 ::v4(){vfunc_called(this, "_ZN7S6730C22v4Ev");}
void  S6730C2 ::v5(){vfunc_called(this, "_ZN7S6730C22v5Ev");}
void  S6730C2 ::v6(){vfunc_called(this, "_ZN7S6730C22v6Ev");}
void  S6730C2 ::v7(){vfunc_called(this, "_ZN7S6730C22v7Ev");}
void  S6730C2 ::v8(){vfunc_called(this, "_ZN7S6730C22v8Ev");}
void  S6730C2 ::v9(){vfunc_called(this, "_ZN7S6730C22v9Ev");}
void  S6730C2 ::v10(){vfunc_called(this, "_ZN7S6730C23v10Ev");}
void  S6730C2 ::v11(){vfunc_called(this, "_ZN7S6730C23v11Ev");}
void  S6730C2 ::v12(){vfunc_called(this, "_ZN7S6730C23v12Ev");}
void  S6730C2 ::v13(){vfunc_called(this, "_ZN7S6730C23v13Ev");}
void  S6730C2 ::v14(){vfunc_called(this, "_ZN7S6730C23v14Ev");}
void  S6730C2 ::v15(){vfunc_called(this, "_ZN7S6730C23v15Ev");}
void  S6730C2 ::v16(){vfunc_called(this, "_ZN7S6730C23v16Ev");}
void  S6730C2 ::v17(){vfunc_called(this, "_ZN7S6730C23v17Ev");}
void  S6730C2 ::v18(){vfunc_called(this, "_ZN7S6730C23v18Ev");}
void  S6730C2 ::v19(){vfunc_called(this, "_ZN7S6730C23v19Ev");}
void  S6730C2 ::v20(){vfunc_called(this, "_ZN7S6730C23v20Ev");}
void  S6730C2 ::v21(){vfunc_called(this, "_ZN7S6730C23v21Ev");}
void  S6730C2 ::v22(){vfunc_called(this, "_ZN7S6730C23v22Ev");}
void  S6730C2 ::v23(){vfunc_called(this, "_ZN7S6730C23v23Ev");}
void  S6730C2 ::v24(){vfunc_called(this, "_ZN7S6730C23v24Ev");}
void  S6730C2 ::v25(){vfunc_called(this, "_ZN7S6730C23v25Ev");}
void  S6730C2 ::v26(){vfunc_called(this, "_ZN7S6730C23v26Ev");}
void  S6730C2 ::v27(){vfunc_called(this, "_ZN7S6730C23v27Ev");}
void  S6730C2 ::v28(){vfunc_called(this, "_ZN7S6730C23v28Ev");}
void  S6730C2 ::v29(){vfunc_called(this, "_ZN7S6730C23v29Ev");}
void  S6730C2 ::v30(){vfunc_called(this, "_ZN7S6730C23v30Ev");}
void  S6730C2 ::v31(){vfunc_called(this, "_ZN7S6730C23v31Ev");}
void  S6730C2 ::v32(){vfunc_called(this, "_ZN7S6730C23v32Ev");}
void  S6730C2 ::v33(){vfunc_called(this, "_ZN7S6730C23v33Ev");}
void  S6730C2 ::v34(){vfunc_called(this, "_ZN7S6730C23v34Ev");}
void  S6730C2 ::v35(){vfunc_called(this, "_ZN7S6730C23v35Ev");}
void  S6730C2 ::v36(){vfunc_called(this, "_ZN7S6730C23v36Ev");}
void  S6730C2 ::v37(){vfunc_called(this, "_ZN7S6730C23v37Ev");}
void  S6730C2 ::v38(){vfunc_called(this, "_ZN7S6730C23v38Ev");}
void  S6730C2 ::v39(){vfunc_called(this, "_ZN7S6730C23v39Ev");}
void  S6730C2 ::v40(){vfunc_called(this, "_ZN7S6730C23v40Ev");}
void  S6730C2 ::v41(){vfunc_called(this, "_ZN7S6730C23v41Ev");}
void  S6730C2 ::v42(){vfunc_called(this, "_ZN7S6730C23v42Ev");}
void  S6730C2 ::v43(){vfunc_called(this, "_ZN7S6730C23v43Ev");}
void  S6730C2 ::v44(){vfunc_called(this, "_ZN7S6730C23v44Ev");}
void  S6730C2 ::v45(){vfunc_called(this, "_ZN7S6730C23v45Ev");}
void  S6730C2 ::v46(){vfunc_called(this, "_ZN7S6730C23v46Ev");}
void  S6730C2 ::v47(){vfunc_called(this, "_ZN7S6730C23v47Ev");}
void  S6730C2 ::v48(){vfunc_called(this, "_ZN7S6730C23v48Ev");}
void  S6730C2 ::v49(){vfunc_called(this, "_ZN7S6730C23v49Ev");}
void  S6730C2 ::v50(){vfunc_called(this, "_ZN7S6730C23v50Ev");}
void  S6730C2 ::v51(){vfunc_called(this, "_ZN7S6730C23v51Ev");}
void  S6730C2 ::v52(){vfunc_called(this, "_ZN7S6730C23v52Ev");}
void  S6730C2 ::v53(){vfunc_called(this, "_ZN7S6730C23v53Ev");}
void  S6730C2 ::v54(){vfunc_called(this, "_ZN7S6730C23v54Ev");}
void  S6730C2 ::v55(){vfunc_called(this, "_ZN7S6730C23v55Ev");}
void  S6730C2 ::v56(){vfunc_called(this, "_ZN7S6730C23v56Ev");}
void  S6730C2 ::v57(){vfunc_called(this, "_ZN7S6730C23v57Ev");}
void  S6730C2 ::v58(){vfunc_called(this, "_ZN7S6730C23v58Ev");}
void  S6730C2 ::v59(){vfunc_called(this, "_ZN7S6730C23v59Ev");}
void  S6730C2 ::v60(){vfunc_called(this, "_ZN7S6730C23v60Ev");}
void  S6730C2 ::v61(){vfunc_called(this, "_ZN7S6730C23v61Ev");}
void  S6730C2 ::v62(){vfunc_called(this, "_ZN7S6730C23v62Ev");}
void  S6730C2 ::v63(){vfunc_called(this, "_ZN7S6730C23v63Ev");}
void  S6730C2 ::v64(){vfunc_called(this, "_ZN7S6730C23v64Ev");}
void  S6730C2 ::v65(){vfunc_called(this, "_ZN7S6730C23v65Ev");}
void  S6730C2 ::v66(){vfunc_called(this, "_ZN7S6730C23v66Ev");}
S6730C2 ::S6730C2(){ note_ctor("S6730C2", this);} // tgen

static void Test_S6730C2()
{
  extern Class_Descriptor cd_S6730C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6730C2, buf);
    S6730C2 *dp, &lv = *(dp=new (buf) S6730C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6730C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6730C2)");
    check_field_offset(lv, s6730c2f0, ABISELECT(8,4), "S6730C2.s6730c2f0");
    check_field_offset(lv, s6730c2f1, ABISELECT(16,8), "S6730C2.s6730c2f1");
    check_field_offset(lv, s6730c2f2, ABISELECT(24,16), "S6730C2.s6730c2f2");
    check_field_offset(lv, s6730c2f3, ABISELECT(56,32), "S6730C2.s6730c2f3");
    check_field_offset(lv, s6730c2f4, ABISELECT(64,40), "S6730C2.s6730c2f4");
    check_field_offset(lv, s6730c2f5, ABISELECT(72,44), "S6730C2.s6730c2f5");
    check_field_offset(lv, s6730c2f6, ABISELECT(80,52), "S6730C2.s6730c2f6");
    test_class_info(&lv, &cd_S6730C2);
    dp->~S6730C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6730C2(Test_S6730C2, "S6730C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6730C2C1Ev();
extern void _ZN7S6730C2D1Ev();
Name_Map name_map_S6730C2[] = {
  NSPAIR(_ZN7S6730C2C1Ev),
  NSPAIR(_ZN7S6730C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6730C2[];
extern void _ZN7S6730C2D1Ev();
extern void _ZN7S6730C2D0Ev();
extern void _ZN7S6730C22v3Ev();
extern void _ZN7S6730C22v4Ev();
extern void _ZN7S6730C22v5Ev();
extern void _ZN7S6730C22v6Ev();
extern void _ZN7S6730C22v7Ev();
extern void _ZN7S6730C22v8Ev();
extern void _ZN7S6730C22v9Ev();
extern void _ZN7S6730C23v10Ev();
extern void _ZN7S6730C23v11Ev();
extern void _ZN7S6730C23v12Ev();
extern void _ZN7S6730C23v13Ev();
extern void _ZN7S6730C23v14Ev();
extern void _ZN7S6730C23v15Ev();
extern void _ZN7S6730C23v16Ev();
extern void _ZN7S6730C23v17Ev();
extern void _ZN7S6730C23v18Ev();
extern void _ZN7S6730C23v19Ev();
extern void _ZN7S6730C23v20Ev();
extern void _ZN7S6730C23v21Ev();
extern void _ZN7S6730C23v22Ev();
extern void _ZN7S6730C23v23Ev();
extern void _ZN7S6730C23v24Ev();
extern void _ZN7S6730C23v25Ev();
extern void _ZN7S6730C23v26Ev();
extern void _ZN7S6730C23v27Ev();
extern void _ZN7S6730C23v28Ev();
extern void _ZN7S6730C23v29Ev();
extern void _ZN7S6730C23v30Ev();
extern void _ZN7S6730C23v31Ev();
extern void _ZN7S6730C23v32Ev();
extern void _ZN7S6730C23v33Ev();
extern void _ZN7S6730C23v34Ev();
extern void _ZN7S6730C23v35Ev();
extern void _ZN7S6730C23v36Ev();
extern void _ZN7S6730C23v37Ev();
extern void _ZN7S6730C23v38Ev();
extern void _ZN7S6730C23v39Ev();
extern void _ZN7S6730C23v40Ev();
extern void _ZN7S6730C23v41Ev();
extern void _ZN7S6730C23v42Ev();
extern void _ZN7S6730C23v43Ev();
extern void _ZN7S6730C23v44Ev();
extern void _ZN7S6730C23v45Ev();
extern void _ZN7S6730C23v46Ev();
extern void _ZN7S6730C23v47Ev();
extern void _ZN7S6730C23v48Ev();
extern void _ZN7S6730C23v49Ev();
extern void _ZN7S6730C23v50Ev();
extern void _ZN7S6730C23v51Ev();
extern void _ZN7S6730C23v52Ev();
extern void _ZN7S6730C23v53Ev();
extern void _ZN7S6730C23v54Ev();
extern void _ZN7S6730C23v55Ev();
extern void _ZN7S6730C23v56Ev();
extern void _ZN7S6730C23v57Ev();
extern void _ZN7S6730C23v58Ev();
extern void _ZN7S6730C23v59Ev();
extern void _ZN7S6730C23v60Ev();
extern void _ZN7S6730C23v61Ev();
extern void _ZN7S6730C23v62Ev();
extern void _ZN7S6730C23v63Ev();
extern void _ZN7S6730C23v64Ev();
extern void _ZN7S6730C23v65Ev();
extern void _ZN7S6730C23v66Ev();
static  VTBL_ENTRY vtc_S6730C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6730C2[0]),
  (VTBL_ENTRY)&_ZN7S6730C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6730C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v66Ev,
};
extern VTBL_ENTRY _ZTI7S6730C2[];
extern  VTBL_ENTRY _ZTV7S6730C2[];
Class_Descriptor cd_S6730C2 = {  "S6730C2", // class name
  0,0,//no base classes
  &(vtc_S6730C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6730C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6730C2),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  S6730C1  : S6730C2 {
  void *s6730c1f0;
  int s6730c1f1;
  virtual  ~S6730C1(); // _ZN7S6730C1D1Ev
  virtual void  v1(); // _ZN7S6730C12v1Ev
  virtual void  v2(); // _ZN7S6730C12v2Ev
  S6730C1(); // tgen
};
//SIG(1 S6730C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 Fp Fi}


 S6730C1 ::~S6730C1(){ note_dtor("S6730C1", this);}
void  S6730C1 ::v1(){vfunc_called(this, "_ZN7S6730C12v1Ev");}
void  S6730C1 ::v2(){vfunc_called(this, "_ZN7S6730C12v2Ev");}
S6730C1 ::S6730C1(){ note_ctor("S6730C1", this);} // tgen

static void Test_S6730C1()
{
  extern Class_Descriptor cd_S6730C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S6730C1, buf);
    S6730C1 *dp, &lv = *(dp=new (buf) S6730C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S6730C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6730C1)");
    check_base_class_offset(lv, (S6730C2*), 0, "S6730C1");
    check_field_offset(lv, s6730c1f0, ABISELECT(96,60), "S6730C1.s6730c1f0");
    check_field_offset(lv, s6730c1f1, ABISELECT(104,64), "S6730C1.s6730c1f1");
    test_class_info(&lv, &cd_S6730C1);
    dp->~S6730C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6730C1(Test_S6730C1, "S6730C1", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S6730C1C1Ev();
extern void _ZN7S6730C1D1Ev();
Name_Map name_map_S6730C1[] = {
  NSPAIR(_ZN7S6730C1C1Ev),
  NSPAIR(_ZN7S6730C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6730C2;
extern VTBL_ENTRY _ZTI7S6730C2[];
extern  VTBL_ENTRY _ZTV7S6730C2[];
static Base_Class bases_S6730C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6730C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6730C1[];
extern void _ZN7S6730C1D1Ev();
extern void _ZN7S6730C1D0Ev();
extern void _ZN7S6730C22v3Ev();
extern void _ZN7S6730C22v4Ev();
extern void _ZN7S6730C22v5Ev();
extern void _ZN7S6730C22v6Ev();
extern void _ZN7S6730C22v7Ev();
extern void _ZN7S6730C22v8Ev();
extern void _ZN7S6730C22v9Ev();
extern void _ZN7S6730C23v10Ev();
extern void _ZN7S6730C23v11Ev();
extern void _ZN7S6730C23v12Ev();
extern void _ZN7S6730C23v13Ev();
extern void _ZN7S6730C23v14Ev();
extern void _ZN7S6730C23v15Ev();
extern void _ZN7S6730C23v16Ev();
extern void _ZN7S6730C23v17Ev();
extern void _ZN7S6730C23v18Ev();
extern void _ZN7S6730C23v19Ev();
extern void _ZN7S6730C23v20Ev();
extern void _ZN7S6730C23v21Ev();
extern void _ZN7S6730C23v22Ev();
extern void _ZN7S6730C23v23Ev();
extern void _ZN7S6730C23v24Ev();
extern void _ZN7S6730C23v25Ev();
extern void _ZN7S6730C23v26Ev();
extern void _ZN7S6730C23v27Ev();
extern void _ZN7S6730C23v28Ev();
extern void _ZN7S6730C23v29Ev();
extern void _ZN7S6730C23v30Ev();
extern void _ZN7S6730C23v31Ev();
extern void _ZN7S6730C23v32Ev();
extern void _ZN7S6730C23v33Ev();
extern void _ZN7S6730C23v34Ev();
extern void _ZN7S6730C23v35Ev();
extern void _ZN7S6730C23v36Ev();
extern void _ZN7S6730C23v37Ev();
extern void _ZN7S6730C23v38Ev();
extern void _ZN7S6730C23v39Ev();
extern void _ZN7S6730C23v40Ev();
extern void _ZN7S6730C23v41Ev();
extern void _ZN7S6730C23v42Ev();
extern void _ZN7S6730C23v43Ev();
extern void _ZN7S6730C23v44Ev();
extern void _ZN7S6730C23v45Ev();
extern void _ZN7S6730C23v46Ev();
extern void _ZN7S6730C23v47Ev();
extern void _ZN7S6730C23v48Ev();
extern void _ZN7S6730C23v49Ev();
extern void _ZN7S6730C23v50Ev();
extern void _ZN7S6730C23v51Ev();
extern void _ZN7S6730C23v52Ev();
extern void _ZN7S6730C23v53Ev();
extern void _ZN7S6730C23v54Ev();
extern void _ZN7S6730C23v55Ev();
extern void _ZN7S6730C23v56Ev();
extern void _ZN7S6730C23v57Ev();
extern void _ZN7S6730C23v58Ev();
extern void _ZN7S6730C23v59Ev();
extern void _ZN7S6730C23v60Ev();
extern void _ZN7S6730C23v61Ev();
extern void _ZN7S6730C23v62Ev();
extern void _ZN7S6730C23v63Ev();
extern void _ZN7S6730C23v64Ev();
extern void _ZN7S6730C23v65Ev();
extern void _ZN7S6730C23v66Ev();
extern void _ZN7S6730C12v1Ev();
extern void _ZN7S6730C12v2Ev();
static  VTBL_ENTRY vtc_S6730C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6730C1[0]),
  (VTBL_ENTRY)&_ZN7S6730C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6730C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6730C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6730C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6730C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6730C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6730C1[];
extern  VTBL_ENTRY _ZTV7S6730C1[];
Class_Descriptor cd_S6730C1 = {  "S6730C1", // class name
  bases_S6730C1, 1,
  &(vtc_S6730C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S6730C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6730C1),70, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C6  : virtual S19676C9 {
  virtual  ~S2509C6(); // _ZN7S2509C6D2Ev
  S2509C6(); // tgen
};
//SIG(-1 S2509C6) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S2509C6 ::~S2509C6(){ note_dtor("S2509C6", this);}
S2509C6 ::S2509C6(){ note_ctor("S2509C6", this);} // tgen

static void Test_S2509C6()
{
  extern Class_Descriptor cd_S2509C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S2509C6, buf);
    S2509C6 *dp, &lv = *(dp=new (buf) S2509C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S2509C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C6)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S2509C6");
    test_class_info(&lv, &cd_S2509C6);
    dp->~S2509C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C6(Test_S2509C6, "S2509C6", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S2509C6C1Ev();
extern void _ZN7S2509C6D2Ev();
Name_Map name_map_S2509C6[] = {
  NSPAIR(_ZN7S2509C6C1Ev),
  NSPAIR(_ZN7S2509C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S2509C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C6[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C6[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C6[];
static  VTT_ENTRY vtt_S2509C6[] = {
  {&(_ZTV7S2509C6[3]),  3,10},
  {&(_ZTV7S2509C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C6 = {  "S2509C6", // class name
  bases_S2509C6, 1,
  &(vtc_S2509C6[0]), // expected_vtbl_contents
  &(vtt_S2509C6[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S2509C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2509C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C9  : virtual S19676C9 , S2509C6 {
  void *s2509c9f0[10];
  int s2509c9f1;
  __tsi64 s2509c9f2;
  ~S2509C9(); // tgen
  S2509C9(); // tgen
};
//SIG(-1 S2509C9) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S2509C9 ::~S2509C9(){ note_dtor("S2509C9", this);} // tgen
S2509C9 ::S2509C9(){ note_ctor("S2509C9", this);} // tgen

static void Test_S2509C9()
{
  extern Class_Descriptor cd_S2509C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S2509C9, buf);
    S2509C9 *dp, &lv = *(dp=new (buf) S2509C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S2509C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C9)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S2509C9");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(112,56), "S2509C9");
    check_base_class_offset(lv, (S2509C6*), 0, "S2509C9");
    check_field_offset(lv, s2509c9f0, ABISELECT(8,4), "S2509C9.s2509c9f0");
    check_field_offset(lv, s2509c9f1, ABISELECT(88,44), "S2509C9.s2509c9f1");
    check_field_offset(lv, s2509c9f2, ABISELECT(96,48), "S2509C9.s2509c9f2");
    test_class_info(&lv, &cd_S2509C9);
    dp->~S2509C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C9(Test_S2509C9, "S2509C9", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S2509C9C1Ev();
extern void _ZN7S2509C9D1Ev();
Name_Map name_map_S2509C9[] = {
  NSPAIR(_ZN7S2509C9C1Ev),
  NSPAIR(_ZN7S2509C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C9[];
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C9[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C9[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C9[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C9[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
static  VTT_ENTRY vtt_S2509C9[] = {
  {&(_ZTV7S2509C9[3]),  3,10},
  {&(_tg__ZTV7S2509C6__7S2509C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C9[3]),  3,5},
  {&(_ZTV7S2509C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C9 = {  "S2509C9", // class name
  bases_S2509C9, 2,
  &(vtc_S2509C9[0]), // expected_vtbl_contents
  &(vtt_S2509C9[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S2509C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2509C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C10  : virtual S2509C9 , S2509C6 {
  int s2509c10f0;
  virtual  ~S2509C10(); // _ZN8S2509C10D2Ev
  S2509C10(); // tgen
};
//SIG(-1 S2509C10) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S2509C10 ::~S2509C10(){ note_dtor("S2509C10", this);}
S2509C10 ::S2509C10(){ note_ctor("S2509C10", this);} // tgen

static void Test_S2509C10()
{
  extern Class_Descriptor cd_S2509C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S2509C10, buf);
    S2509C10 *dp, &lv = *(dp=new (buf) S2509C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S2509C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C10)");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(128,64), "S2509C10");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(128,64), "S2509C10");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(128,64), "S2509C10");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(16,8), "S2509C10");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(16,8), "S2509C10");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C10");
    check_field_offset(lv, s2509c10f0, ABISELECT(8,4), "S2509C10.s2509c10f0");
    test_class_info(&lv, &cd_S2509C10);
    dp->~S2509C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C10(Test_S2509C10, "S2509C10", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN8S2509C10C1Ev();
extern void _ZN8S2509C10D2Ev();
Name_Map name_map_S2509C10[] = {
  NSPAIR(_ZN8S2509C10C1Ev),
  NSPAIR(_ZN8S2509C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C10[];
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S2509C10D1Ev,_ZThn64_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S2509C10D0Ev,_ZThn64_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C10[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C10[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C10[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C10[] = {
  {&(_ZTV8S2509C10[4]),  4,17},
  {&(_tg__ZTV7S2509C6__A1__8S2509C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C10[3]),  3,5},
  {&(_ZTV8S2509C10[10]),  10,17},
  {&(_ZTV8S2509C10[15]),  15,17},
  {&(_tg__ZTV7S2509C9__8S2509C10[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2509C10D0Ev,_ZThn64_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2509C10D1Ev,_ZThn64_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C10 = {  "S2509C10", // class name
  bases_S2509C10, 4,
  &(vtc_S2509C10[0]), // expected_vtbl_contents
  &(vtt_S2509C10[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI8S2509C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2509C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C8  : S19676C9 , virtual S2509C6 , virtual S2509C9 , S2509C10 {
  int s2509c8f0;
  virtual  ~S2509C8(); // _ZN7S2509C8D2Ev
  S2509C8(); // tgen
};
//SIG(-1 S2509C8) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S2509C8 ::~S2509C8(){ note_dtor("S2509C8", this);}
S2509C8 ::S2509C8(){ note_ctor("S2509C8", this);} // tgen

static void Test_S2509C8()
{
  extern Class_Descriptor cd_S2509C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S2509C8, buf);
    S2509C8 *dp, &lv = *(dp=new (buf) S2509C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S2509C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C8)");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S2509C8");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(80,44), "S2509C8");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(80,44), "S2509C8");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(80,44), "S2509C8");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(80,44), "S2509C8");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), ABISELECT(64,40), "S2509C8");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(128,72), "S2509C8");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(128,72), "S2509C8");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(128,72), "S2509C8");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(48,28), "S2509C8");
    check_base_class_offset(lv, (S2509C10*), ABISELECT(48,28), "S2509C8");
    check_field_offset(lv, s2509c8f0, ABISELECT(60,36), "S2509C8.s2509c8f0");
    test_class_info(&lv, &cd_S2509C8);
    dp->~S2509C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C8(Test_S2509C8, "S2509C8", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN7S2509C8C1Ev();
extern void _ZN7S2509C8D2Ev();
Name_Map name_map_S2509C8[] = {
  NSPAIR(_ZN7S2509C8C1Ev),
  NSPAIR(_ZN7S2509C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
static Base_Class bases_S2509C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(128,72), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C8[];
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn128_N7S2509C8D1Ev,_ZThn72_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn128_N7S2509C8D0Ev,_ZThn72_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C8[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C8[];
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__7S2509C8[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn16_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn16_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__7S2509C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2509C10D1Ev,_ZThn44_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2509C10D0Ev,_ZThn44_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__7S2509C8[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn16_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn16_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__7S2509C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C8[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C8[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C8[] = {
  {&(_ZTV7S2509C8[5]),  5,30},
  {&(_tg__ZTV8S2509C10__7S2509C8[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__7S2509C8[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__7S2509C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__7S2509C8[3]),  3,5},
  {&(_ZTV7S2509C8[17]),  17,30},
  {&(_ZTV7S2509C8[22]),  22,30},
  {&(_ZTV7S2509C8[28]),  28,30},
  {&(_ZTV7S2509C8[11]),  11,30},
  {&(_tg__ZTV7S2509C6__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C8[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn16_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn16_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2509C10D0Ev,_ZThn44_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2509C10D1Ev,_ZThn44_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn16_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn16_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C8D0Ev,_ZThn72_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C8D1Ev,_ZThn72_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C8 = {  "S2509C8", // class name
  bases_S2509C8, 7,
  &(vtc_S2509C8[0]), // expected_vtbl_contents
  &(vtt_S2509C8[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI7S2509C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2509C8),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C8),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C5  : virtual S2509C6 , virtual S2509C8 , virtual S19676C2 {
  int s2509c5f0;
  virtual  ~S2509C5(); // _ZN7S2509C5D2Ev
  S2509C5(); // tgen
};
//SIG(-1 S2509C5) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S2509C5 ::~S2509C5(){ note_dtor("S2509C5", this);}
S2509C5 ::S2509C5(){ note_ctor("S2509C5", this);} // tgen

static void Test_S2509C5()
{
  extern Class_Descriptor cd_S2509C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S2509C5, buf);
    S2509C5 *dp, &lv = *(dp=new (buf) S2509C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S2509C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C5)");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(16,8), "S2509C5");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(16,8), "S2509C5");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(16,8), "S2509C5");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(16,8), "S2509C5");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C5");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C5");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(64,36), "S2509C5");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(128,76), "S2509C5");
    check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(128,76), "S2509C5");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(128,76), "S2509C5");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(112,64), "S2509C5");
    check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(112,64), "S2509C5");
    check_base_class_offset(lv, (S2509C8*), ABISELECT(64,36), "S2509C5");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S2509C5");
    check_field_offset(lv, s2509c5f0, ABISELECT(8,4), "S2509C5.s2509c5f0");
    test_class_info(&lv, &cd_S2509C5);
    dp->~S2509C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C5(Test_S2509C5, "S2509C5", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN7S2509C5C1Ev();
extern void _ZN7S2509C5D2Ev();
Name_Map name_map_S2509C5[] = {
  NSPAIR(_ZN7S2509C5C1Ev),
  NSPAIR(_ZN7S2509C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S2509C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //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_S2509C6,    0, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(128,76), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C5[];
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C5D1Ev,_ZThn8_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C5D0Ev,_ZThn8_N7S2509C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C5D1Ev,_ZThn36_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C5D0Ev,_ZThn36_N7S2509C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S2509C5D1Ev,_ZThn76_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S2509C5D0Ev,_ZThn76_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C5[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C5[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn8_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn8_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C5[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C5[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__7S2509C5[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__7S2509C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__7S2509C5[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__7S2509C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C5[] = {
  {&(_ZTV7S2509C5[8]),  8,35},
  {&(_ZTV7S2509C5[8]),  8,35},
  {&(_ZTV7S2509C5[13]),  13,35},
  {&(_ZTV7S2509C5[21]),  21,35},
  {&(_ZTV7S2509C5[33]),  33,35},
  {&(_ZTV7S2509C5[27]),  27,35},
  {&(_tg__ZTV7S2509C6__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C5[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__7S2509C5[4]),  4,6},
  {&(_tg__ZTV7S2509C9__7S2509C5[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D0Ev,_ZThn8_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C6D1Ev,_ZThn8_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C5D0Ev,_ZThn36_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C5D1Ev,_ZThn36_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C5D0Ev,_ZThn8_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S2509C5D1Ev,_ZThn8_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C5D0Ev,_ZThn76_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2509C5D1Ev,_ZThn76_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C5 = {  "S2509C5", // class name
  bases_S2509C5, 9,
  &(vtc_S2509C5[0]), // expected_vtbl_contents
  &(vtt_S2509C5[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI7S2509C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2509C5),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C5),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C2  : S19676C2 , S2509C5 {
  ::S2509C6 s2509c2f0;
  int s2509c2f1;
  ~S2509C2(); // tgen
  S2509C2(); // tgen
};
//SIG(-1 S2509C2) C1{ BC2{ m FC3{} Fi[3]} BC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} vd} VBC7{ BC6 VBC5 VBC8{ VBC6 BC5 Fp[10] Fi FL} BC9{ VBC8 BC5 vd Fi} vd Fi} VBC2 vd Fi} FC5 Fi}


S2509C2 ::~S2509C2(){ note_dtor("S2509C2", this);} // tgen
S2509C2 ::S2509C2(){ note_ctor("S2509C2", this);} // tgen

static void Test_S2509C2()
{
  extern Class_Descriptor cd_S2509C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,51)];
    init_test(&cd_S2509C2, buf);
    S2509C2 *dp, &lv = *(dp=new (buf) S2509C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,200), "sizeof(S2509C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C2)");
    /*is_ambiguous_... S2509C2::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*), ABISELECT(12,8), "S2509C2");
    /*is_ambiguous_... S2509C2::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(112,60), "S2509C2");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(112,60), "S2509C2");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(112,60), "S2509C2");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(112,60), "S2509C2");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*), 0, "S2509C2");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C2");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(160,88), "S2509C2");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(224,128), "S2509C2");
    check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(224,128), "S2509C2");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(224,128), "S2509C2");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(208,116), "S2509C2");
    check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(208,116), "S2509C2");
    check_base_class_offset(lv, (S2509C8*)(S2509C5*), ABISELECT(160,88), "S2509C2");
    check_base_class_offset(lv, (S19676C2*)(S2509C5*), ABISELECT(328,184), "S2509C2");
    check_base_class_offset(lv, (S2509C5*), 0, "S2509C2");
    check_field_offset(lv, s2509c2f0, ABISELECT(32,24), "S2509C2.s2509c2f0");
    check_field_offset(lv, s2509c2f1, ABISELECT(96,56), "S2509C2.s2509c2f1");
    test_class_info(&lv, &cd_S2509C2);
    dp->~S2509C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C2(Test_S2509C2, "S2509C2", ABISELECT(352,200));

#else // __cplusplus

extern void _ZN7S2509C2C1Ev();
extern void _ZN7S2509C2D1Ev();
Name_Map name_map_S2509C2[] = {
  NSPAIR(_ZN7S2509C2C1Ev),
  NSPAIR(_ZN7S2509C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
static Base_Class bases_S2509C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(224,128), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(224,128), //bcp->offset
    29, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(208,116), //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(208,116), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(160,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C2[];
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S2509C2D1Ev,_ZThn88_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S2509C2D0Ev,_ZThn88_N7S2509C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn128_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn128_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C2[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C2[];
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C5__7S2509C2[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C5__7S2509C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn160_N7S2509C5D1Ev,_ZThn88_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn160_N7S2509C5D0Ev,_ZThn88_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C5__7S2509C2[] = {
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn128_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn128_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C5__7S2509C2[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C5__7S2509C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C2[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C2[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C2[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C2[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__7S2509C2[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__7S2509C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__7S2509C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__7S2509C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C2[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C2[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C2[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C2[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C2[] = {
  {&(_ZTV7S2509C2[8]),  8,35},
  {&(_tg__ZTV7S2509C5__7S2509C2[8]),  8,10},
  {&(_tg__ZTV7S2509C5__7S2509C2[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C5__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C5__7S2509C2[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C5__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C5__7S2509C2[4]),  4,6},
  {&(_ZTV7S2509C2[8]),  8,35},
  {&(_ZTV7S2509C2[13]),  13,35},
  {&(_ZTV7S2509C2[21]),  21,35},
  {&(_ZTV7S2509C2[33]),  33,35},
  {&(_ZTV7S2509C2[27]),  27,35},
  {&(_tg__ZTV7S2509C6__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C2[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__7S2509C2[4]),  4,6},
  {&(_tg__ZTV7S2509C9__7S2509C2[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C5D0Ev,_ZThn88_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C5D1Ev,_ZThn88_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn128_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn128_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C2D0Ev,_ZThn88_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2509C2D1Ev,_ZThn88_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn128_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn128_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C2 = {  "S2509C2", // class name
  bases_S2509C2, 11,
  &(vtc_S2509C2[0]), // expected_vtbl_contents
  &(vtt_S2509C2[0]), // expected_vtt_contents
  ABISELECT(352,200), // object size
  NSPAIRA(_ZTI7S2509C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2509C2),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C2),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C15  : virtual S19676C9 , virtual S2509C9 , S2509C6 {
  void *s2509c15f0;
  int s2509c15f1;
  ::S19676C9 s2509c15f2[3];
  int s2509c15f3[7];
  virtual  ~S2509C15(); // _ZN8S2509C15D2Ev
  S2509C15(); // tgen
};
//SIG(-1 S2509C15) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S2509C15 ::~S2509C15(){ note_dtor("S2509C15", this);}
S2509C15 ::S2509C15(){ note_ctor("S2509C15", this);} // tgen

static void Test_S2509C15()
{
  extern Class_Descriptor cd_S2509C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S2509C15, buf);
    S2509C15 *dp, &lv = *(dp=new (buf) S2509C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S2509C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C15)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S2509C15");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(208,124), "S2509C15");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(208,124), "S2509C15");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(208,124), "S2509C15");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(256,152), "S2509C15");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(256,152), "S2509C15");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C15");
    check_field_offset(lv, s2509c15f0, ABISELECT(8,4), "S2509C15.s2509c15f0");
    check_field_offset(lv, s2509c15f1, ABISELECT(16,8), "S2509C15.s2509c15f1");
    check_field_offset(lv, s2509c15f2, ABISELECT(32,12), "S2509C15.s2509c15f2");
    check_field_offset(lv, s2509c15f3, ABISELECT(176,96), "S2509C15.s2509c15f3");
    test_class_info(&lv, &cd_S2509C15);
    dp->~S2509C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C15(Test_S2509C15, "S2509C15", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S2509C15C1Ev();
extern void _ZN8S2509C15D2Ev();
Name_Map name_map_S2509C15[] = {
  NSPAIR(_ZN8S2509C15C1Ev),
  NSPAIR(_ZN8S2509C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C15[];
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn208_N8S2509C15D1Ev,_ZThn124_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn208_N8S2509C15D0Ev,_ZThn124_N8S2509C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C15D1Ev,_ZThn152_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn256_N8S2509C15D0Ev,_ZThn152_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C15[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C15[];
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C15[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S2509C6D1Ev,_ZThn124_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S2509C6D0Ev,_ZThn124_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C15[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C15[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C15[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
static  VTT_ENTRY vtt_S2509C15[] = {
  {&(_ZTV8S2509C15[4]),  4,17},
  {&(_tg__ZTV7S2509C6__A1__8S2509C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C15[3]),  3,5},
  {&(_ZTV8S2509C15[9]),  9,17},
  {&(_ZTV8S2509C15[15]),  15,17},
  {&(_tg__ZTV7S2509C9__8S2509C15[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C15[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2509C6D0Ev,_ZThn124_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2509C6D1Ev,_ZThn124_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2509C15D0Ev,_ZThn152_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2509C15D1Ev,_ZThn152_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S2509C15D0Ev,_ZThn124_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S2509C15D1Ev,_ZThn124_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C15 = {  "S2509C15", // class name
  bases_S2509C15, 4,
  &(vtc_S2509C15[0]), // expected_vtbl_contents
  &(vtt_S2509C15[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S2509C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2509C15),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C15),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C14  : virtual S2509C9 , virtual S2509C8 , S2509C15 , S19676C9 , S2509C6 {
  virtual  ~S2509C14(); // _ZN8S2509C14D2Ev
  S2509C14(); // tgen
};
//SIG(-1 S2509C14) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S2509C14 ::~S2509C14(){ note_dtor("S2509C14", this);}
S2509C14 ::S2509C14(){ note_ctor("S2509C14", this);} // tgen

static void Test_S2509C14()
{
  extern Class_Descriptor cd_S2509C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S2509C14, buf);
    S2509C14 *dp, &lv = *(dp=new (buf) S2509C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S2509C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C14)");
    check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(368,212), "S2509C14");
    check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(368,212), "S2509C14");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*), ABISELECT(368,212), "S2509C14");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(368,212), "S2509C14");
    check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(264,156), "S2509C14");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*), ABISELECT(264,156), "S2509C14");
    /*is_ambiguous_... S2509C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(416,240), "S2509C14");
    /*is_ambiguous_... S2509C8::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(480,280), "S2509C14");
    /*is_ambiguous_... S2509C10::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(464,268), "S2509C14");
    check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(464,268), "S2509C14");
    check_base_class_offset(lv, (S2509C8*), ABISELECT(416,240), "S2509C14");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*), 0, "S2509C14");
    check_base_class_offset(lv, (S2509C15*), 0, "S2509C14");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S2509C14");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), ABISELECT(256,152), "S2509C14");
    test_class_info(&lv, &cd_S2509C14);
    dp->~S2509C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C14(Test_S2509C14, "S2509C14", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN8S2509C14C1Ev();
extern void _ZN8S2509C14D2Ev();
Name_Map name_map_S2509C14[] = {
  NSPAIR(_ZN8S2509C14C1Ev),
  NSPAIR(_ZN8S2509C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
static Base_Class bases_S2509C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S2509C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C6,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C14[];
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
extern void ABISELECT(_ZThn208_N8S2509C14D1Ev,_ZThn124_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn208_N8S2509C14D0Ev,_ZThn124_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn264_N8S2509C14D1Ev,_ZThn156_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn264_N8S2509C14D0Ev,_ZThn156_N8S2509C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn480_N8S2509C14D1Ev,_ZThn280_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn480_N8S2509C14D0Ev,_ZThn280_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C14[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S2509C14D1Ev,_ZThn124_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S2509C14D0Ev,_ZThn124_N8S2509C14D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C14[];
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C15__8S2509C14[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C15__A3__8S2509C14[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S2509C6D1Ev,_ZThn212_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn368_N7S2509C6D0Ev,_ZThn212_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C15__A3__8S2509C14[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C15D1Ev,_ZThn212_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C15D0Ev,_ZThn212_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C15__8S2509C14[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn264_N8S2509C15D1Ev,_ZThn156_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn264_N8S2509C15D0Ev,_ZThn156_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15__8S2509C14[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A__8S2509C14[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C14[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C14[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C14[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__8S2509C14[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__8S2509C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__8S2509C14[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__8S2509C14[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C14[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C14[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C14[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C14[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C14[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
static  VTT_ENTRY vtt_S2509C14[] = {
  {&(_ZTV8S2509C14[6]),  6,48},
  {&(_tg__ZTV8S2509C15__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C15__A3__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C15__A3__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C15__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C15__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A__8S2509C14[3]),  3,5},
  {&(_ZTV8S2509C14[21]),  21,48},
  {&(_ZTV8S2509C14[26]),  26,48},
  {&(_ZTV8S2509C14[34]),  34,48},
  {&(_ZTV8S2509C14[46]),  46,48},
  {&(_ZTV8S2509C14[40]),  40,48},
  {&(_ZTV8S2509C14[15]),  15,48},
  {&(_tg__ZTV7S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C14[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C14[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C15D0Ev,_ZThn156_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C15D1Ev,_ZThn156_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C15D0Ev,_ZThn212_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C15D1Ev,_ZThn212_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S2509C6D0Ev,_ZThn212_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S2509C6D1Ev,_ZThn212_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C14D0Ev,_ZThn280_N8S2509C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C14D0Ev,_ZThn156_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C14D1Ev,_ZThn280_N8S2509C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S2509C14D1Ev,_ZThn156_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C14 = {  "S2509C14", // class name
  bases_S2509C14, 12,
  &(vtc_S2509C14[0]), // expected_vtbl_contents
  &(vtt_S2509C14[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI8S2509C14),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2509C14),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C14),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C13  : virtual S2509C6 , virtual S2509C10 , S2509C9 , S2509C14 , S2509C8 {
  short s2509c13f0;
  virtual  ~S2509C13(); // _ZN8S2509C13D2Ev
  S2509C13(); // tgen
};
//SIG(-1 S2509C13) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S2509C13 ::~S2509C13(){ note_dtor("S2509C13", this);}
S2509C13 ::S2509C13(){ note_ctor("S2509C13", this);} // tgen

static void Test_S2509C13()
{
  extern Class_Descriptor cd_S2509C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S2509C13, buf);
    S2509C13 *dp, &lv = *(dp=new (buf) S2509C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S2509C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C13)");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(464,260), "S2509C13");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(464,260), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), ABISELECT(456,256), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(456,256), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(456,256), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(528,296), "S2509C13");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(528,296), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(512,288), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*), ABISELECT(512,288), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), 0, "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*), 0, "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(640,352), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(688,380), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(688,380), "S2509C13");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(640,352), "S2509C13");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(112,56), "S2509C13");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(112,56), "S2509C13");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(320,180), "S2509C13");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(368,208), "S2509C13");
    check_base_class_offset(lv, (S2509C14*), ABISELECT(112,56), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(384,212), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C13");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*), ABISELECT(384,212), "S2509C13");
    check_field_offset(lv, s2509c13f0, ABISELECT(448,252), "S2509C13.s2509c13f0");
    test_class_info(&lv, &cd_S2509C13);
    dp->~S2509C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C13(Test_S2509C13, "S2509C13", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN8S2509C13C1Ev();
extern void _ZN8S2509C13D2Ev();
Name_Map name_map_S2509C13[] = {
  NSPAIR(_ZN8S2509C13C1Ev),
  NSPAIR(_ZN8S2509C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
static Base_Class bases_S2509C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(528,296), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C9,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C13[];
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn320_N8S2509C13D1Ev,_ZThn180_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn320_N8S2509C13D0Ev,_ZThn180_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn512_N8S2509C13D1Ev,_ZThn288_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn512_N8S2509C13D0Ev,_ZThn288_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn528_N8S2509C13D1Ev,_ZThn296_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn528_N8S2509C13D0Ev,_ZThn296_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn640_N8S2509C13D1Ev,_ZThn352_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn640_N8S2509C13D0Ev,_ZThn352_N8S2509C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY vtc_S2509C13[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S2509C13D1Ev,_ZThn180_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S2509C13D0Ev,_ZThn180_N8S2509C13D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C13[];
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__A__8S2509C13[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A3__8S2509C13[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S2509C6D1Ev,_ZThn260_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S2509C6D0Ev,_ZThn260_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A3__8S2509C13[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn464_N7S2509C9D1Ev,_ZThn260_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn464_N7S2509C9D0Ev,_ZThn260_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__A__8S2509C13[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__8S2509C13[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A5__8S2509C13[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn352_N7S2509C6D1Ev,_ZThn204_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn352_N7S2509C6D0Ev,_ZThn204_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A5__8S2509C13[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn352_N8S2509C15D1Ev,_ZThn204_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn352_N8S2509C15D0Ev,_ZThn204_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__8S2509C13[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZThn416_N8S2509C15D1Ev,_ZThn240_N8S2509C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
extern void ABISELECT(_ZThn416_N8S2509C15D0Ev,_ZThn240_N8S2509C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__8S2509C13[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn96_N7S2509C6D1Ev,_ZThn52_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn96_N7S2509C6D0Ev,_ZThn52_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A6__8S2509C13[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__8S2509C13[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn352_N8S2509C14D1Ev,_ZThn204_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn352_N8S2509C14D0Ev,_ZThn204_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__8S2509C13[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn528_N8S2509C14D1Ev,_ZThn296_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn528_N8S2509C14D0Ev,_ZThn296_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__8S2509C13[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__8S2509C13[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__8S2509C13[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__8S2509C13[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A7__8S2509C13[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn20_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn20_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A7__8S2509C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn96_N8S2509C10D1Ev,_ZThn56_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn96_N8S2509C10D0Ev,_ZThn56_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A2__8S2509C13[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn20_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn20_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A2__8S2509C13[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__A__8S2509C13[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn48_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn48_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C13[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn144_N7S2509C8D1Ev,_ZThn84_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn144_N7S2509C8D0Ev,_ZThn84_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__A__8S2509C13[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__A__8S2509C13[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn8_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__8S2509C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__8S2509C13[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__8S2509C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__8S2509C13[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__8S2509C13[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C13[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C13[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C13[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C13[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C13[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C13[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C13[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C13[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C13[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C13[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
static  VTT_ENTRY vtt_S2509C13[] = {
  {&(_ZTV8S2509C13[7]),  7,77},
  {&(_tg__ZTV7S2509C9__A__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A3__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A3__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__A__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S2509C14__8S2509C13[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A5__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A5__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__8S2509C13[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A7__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A7__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A2__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A2__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__A__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__A__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__A__8S2509C13[4]),  4,6},
  {&(_ZTV8S2509C13[43]),  43,77},
  {&(_ZTV8S2509C13[48]),  48,77},
  {&(_ZTV8S2509C13[55]),  55,77},
  {&(_ZTV8S2509C13[61]),  61,77},
  {&(_ZTV8S2509C13[15]),  15,77},
  {&(_ZTV8S2509C13[69]),  69,77},
  {&(_ZTV8S2509C13[75]),  75,77},
  {&(_ZTV8S2509C13[24]),  24,77},
  {&(_ZTV8S2509C13[31]),  31,77},
  {&(_ZTV8S2509C13[37]),  37,77},
  {&(_tg__ZTV7S2509C6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C13[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C13[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C13[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C13[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D0Ev,_ZThn48_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2509C8D1Ev,_ZThn48_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C8D0Ev,_ZThn84_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C8D1Ev,_ZThn84_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D0Ev,_ZThn20_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2509C10D1Ev,_ZThn20_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn8_N8S2509C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C10D0Ev,_ZThn56_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn8_N8S2509C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C10D1Ev,_ZThn56_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C14D0Ev,_ZThn296_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C14D1Ev,_ZThn296_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C14D0Ev,_ZThn204_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C14D1Ev,_ZThn204_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D0Ev,_ZThn240_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C14D1Ev,_ZThn240_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C15D0Ev,_ZThn240_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S2509C15D1Ev,_ZThn240_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C15D0Ev,_ZThn204_N8S2509C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C15D1Ev,_ZThn204_N8S2509C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C9D0Ev,_ZThn260_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C9D1Ev,_ZThn260_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2509C6D0Ev,_ZThn4_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D0Ev,_ZThn20_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2509C6D0Ev,_ZThn52_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S2509C6D0Ev,_ZThn204_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C6D0Ev,_ZThn260_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2509C6D1Ev,_ZThn4_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S2509C6D1Ev,_ZThn20_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2509C6D1Ev,_ZThn52_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S2509C6D1Ev,_ZThn204_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S2509C6D1Ev,_ZThn260_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S2509C13D0Ev,_ZThn352_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S2509C13D1Ev,_ZThn352_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S2509C13D0Ev,_ZThn288_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S2509C13D1Ev,_ZThn288_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C13D0Ev,_ZThn296_N8S2509C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S2509C13D1Ev,_ZThn296_N8S2509C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C13 = {  "S2509C13", // class name
  bases_S2509C13, 21,
  &(vtc_S2509C13[0]), // expected_vtbl_contents
  &(vtt_S2509C13[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI8S2509C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2509C13),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C13),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C12  : virtual S2509C9 , virtual S2509C13 , virtual S2509C14 , virtual S19676C2 , S2509C8 {
  short s2509c12f0;
  void *s2509c12f1[2];
  ~S2509C12(); // tgen
  S2509C12(); // tgen
};
//SIG(-1 S2509C12) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S2509C12 ::~S2509C12(){ note_dtor("S2509C12", this);} // tgen
S2509C12 ::S2509C12(){ note_ctor("S2509C12", this);} // tgen

static void Test_S2509C12()
{
  extern Class_Descriptor cd_S2509C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S2509C12, buf);
    S2509C12 *dp, &lv = *(dp=new (buf) S2509C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S2509C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C12)");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(192,108), "S2509C12");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(192,108), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(88,52), "S2509C12");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(88,52), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C13*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C13*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), ABISELECT(696,392), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(704,396), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C13*), ABISELECT(704,396), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(240,136), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C13*), ABISELECT(240,136), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(720,404), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(768,432), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(768,432), "S2509C12");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*)(S2509C13*), ABISELECT(720,404), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(720,404), "S2509C12");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(352,192), "S2509C12");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(352,192), "S2509C12");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*)(S2509C13*), ABISELECT(560,316), "S2509C12");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(608,344), "S2509C12");
    check_base_class_offset(lv, (S2509C14*)(S2509C13*), ABISELECT(352,192), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C13*), ABISELECT(624,348), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(672,376), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(672,376), "S2509C12");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C13*), ABISELECT(624,348), "S2509C12");
    check_base_class_offset(lv, (S2509C13*), ABISELECT(240,136), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(784,444), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(784,444), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(992,568), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(1040,596), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C14*), ABISELECT(784,444), "S2509C12");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), 0, "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(48,28), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(48,28), "S2509C12");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*), 0, "S2509C12");
    check_field_offset(lv, s2509c12f0, ABISELECT(64,40), "S2509C12.s2509c12f0");
    check_field_offset(lv, s2509c12f1, ABISELECT(72,44), "S2509C12.s2509c12f1");
    test_class_info(&lv, &cd_S2509C12);
    dp->~S2509C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C12(Test_S2509C12, "S2509C12", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN8S2509C12C1Ev();
extern void _ZN8S2509C12D1Ev();
Name_Map name_map_S2509C12[] = {
  NSPAIR(_ZN8S2509C12C1Ev),
  NSPAIR(_ZN8S2509C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C13;
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
static Base_Class bases_S2509C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_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_S2509C6,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C15,    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
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2509C13,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(784,444), //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
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C8,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C12[];
extern void _ZN8S2509C12D1Ev();
extern void _ZN8S2509C12D0Ev();
extern void ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn240_N8S2509C12D1Ev,_ZThn136_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn240_N8S2509C12D0Ev,_ZThn136_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn696_N8S2509C12D1Ev,_ZThn392_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn696_N8S2509C12D0Ev,_ZThn392_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn704_N8S2509C12D1Ev,_ZThn396_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn704_N8S2509C12D0Ev,_ZThn396_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn720_N8S2509C12D1Ev,_ZThn404_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn720_N8S2509C12D0Ev,_ZThn404_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn784_N8S2509C12D1Ev,_ZThn444_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn784_N8S2509C12D0Ev,_ZThn444_N8S2509C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY vtc_S2509C12[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&_ZN8S2509C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C12D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C12[];
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C12[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A3__8S2509C12[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A10__8S2509C12[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn144_N7S2509C6D1Ev,_ZThn80_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn144_N7S2509C6D0Ev,_ZThn80_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A10__8S2509C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A3__8S2509C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn144_N8S2509C10D1Ev,_ZThn80_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn144_N8S2509C10D0Ev,_ZThn80_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A3__8S2509C12[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn696_N7S2509C8D1Ev,_ZThn392_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn696_N7S2509C8D0Ev,_ZThn392_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__A__8S2509C12[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn192_N7S2509C8D1Ev,_ZThn108_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn192_N7S2509C8D0Ev,_ZThn108_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C12[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__A__8S2509C12[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__A__8S2509C12[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C12[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__8S2509C12[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C12[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C12[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C12[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C98S2509C13__A1__8S2509C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C12[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C12[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C12[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13__8S2509C12[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C13__8S2509C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13__8S2509C12[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13__8S2509C12[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13__8S2509C12[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn268_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn268_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13__8S2509C12[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C12[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13__8S2509C12[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C12[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C12[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__A1__8S2509C12[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C12[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__8S2509C12[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C12[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__8S2509C12[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__8S2509C12[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C12[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C12[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C12[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C12[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C12[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C12[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C12[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C12[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C12[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__A1__8S2509C12[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C12[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C12[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C12[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C12[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C12[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C12[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C12[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
static  VTT_ENTRY vtt_S2509C12[] = {
  {&(_ZTV8S2509C12[10]),  10,114},
  {&(_tg__ZTV7S2509C8__A__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A3__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A10__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A10__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A3__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A3__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__A__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__A__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__A__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__A__8S2509C12[4]),  4,6},
  {&(_ZTV8S2509C12[22]),  22,114},
  {&(_ZTV8S2509C12[27]),  27,114},
  {&(_ZTV8S2509C12[37]),  37,114},
  {&(_ZTV8S2509C12[73]),  73,114},
  {&(_ZTV8S2509C12[80]),  80,114},
  {&(_ZTV8S2509C12[45]),  45,114},
  {&(_ZTV8S2509C12[88]),  88,114},
  {&(_ZTV8S2509C12[94]),  94,114},
  {&(_ZTV8S2509C12[49]),  49,114},
  {&(_ZTV8S2509C12[54]),  54,114},
  {&(_ZTV8S2509C12[61]),  61,114},
  {&(_ZTV8S2509C12[67]),  67,114},
  {&(_ZTV8S2509C12[103]),  103,114},
  {&(_ZTV8S2509C12[107]),  107,114},
  {&(_ZTV8S2509C12[112]),  112,114},
  {&(_ZTV8S2509C12[16]),  16,114},
  {&(_tg__ZTV7S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C12[7]),  7,9},
  {&(_tg__ZTV7S2509C98S2509C13__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13__8S2509C12[5]),  5,7},
  {&(_tg__ZTV7S2509C9__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C14__8S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C13__8S2509C12[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C12[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C12[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__A1__8S2509C12[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__A1__8S2509C12[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C12[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2509C12[];
extern  VTBL_ENTRY _ZTV8S2509C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C12[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn268_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn268_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D0Ev,_ZThn260_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C13D1Ev,_ZThn260_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D0Ev,_ZThn200_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S2509C14D1Ev,_ZThn200_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn212_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn212_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D0Ev,_ZThn56_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C9D1Ev,_ZThn56_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2509C8D0Ev,_ZThn108_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2509C8D1Ev,_ZThn108_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D0Ev,_ZThn44_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S2509C8D0Ev,_ZThn392_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2509C8D1Ev,_ZThn44_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S2509C8D1Ev,_ZThn392_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S2509C10D0Ev,_ZThn80_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S2509C10D1Ev,_ZThn80_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D0Ev,_ZThn56_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C6D0Ev,_ZThn80_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S2509C6D1Ev,_ZThn56_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S2509C6D1Ev,_ZThn80_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S2509C12D0Ev,_ZThn444_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N8S2509C12D1Ev,_ZThn444_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S2509C12D0Ev,_ZThn404_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S2509C12D1Ev,_ZThn404_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S2509C12D0Ev,_ZThn396_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N8S2509C12D1Ev,_ZThn396_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S2509C12D0Ev,_ZThn136_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S2509C12D1Ev,_ZThn136_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S2509C12D0Ev,_ZThn392_N8S2509C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N8S2509C12D1Ev,_ZThn392_N8S2509C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C12 = {  "S2509C12", // class name
  bases_S2509C12, 32,
  &(vtc_S2509C12[0]), // expected_vtbl_contents
  &(vtt_S2509C12[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI8S2509C12),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2509C12),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C12),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C11  : virtual S2509C6 , virtual S2509C12 , virtual S2509C15 , S2509C2 {
  virtual  ~S2509C11(); // _ZN8S2509C11D2Ev
  S2509C11(); // tgen
};
//SIG(-1 S2509C11) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} VBC6{ VBC2 VBC7{ VBC5 BC2 vd Fi} BC5 BC8{ VBC5 VBC9{ BC3 VBC2 VBC5 BC7 vd Fi} BC10{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC9 vd Fs} VBC8 VBC11{ m FC12{} Fi[3]} BC9 Fs Fp[2]} VBC10 BC13{ BC11 BC14{ VBC2 VBC9 VBC11 vd Fi} FC2 Fi} vd}


 S2509C11 ::~S2509C11(){ note_dtor("S2509C11", this);}
S2509C11 ::S2509C11(){ note_ctor("S2509C11", this);} // tgen

static void Test_S2509C11()
{
  extern Class_Descriptor cd_S2509C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,200)];
    init_test(&cd_S2509C11, buf);
    S2509C11 *dp, &lv = *(dp=new (buf) S2509C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,796), "sizeof(S2509C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C11)");
    /*is_ambiguous_... S2509C11::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(112,60), "S2509C11");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*), ABISELECT(112,60), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*), 0, "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C13*), 0, "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C13*), 0, "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C12*), 0, "S2509C11");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*)(S2509C2*), 0, "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C12*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(248,140), "S2509C11");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(248,140), "S2509C11");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C12*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*), ABISELECT(248,140), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(808,452), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C13*), ABISELECT(808,452), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(352,196), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C13*), ABISELECT(352,196), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(832,460), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(880,488), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(880,488), "S2509C11");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*)(S2509C13*), ABISELECT(832,460), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(832,460), "S2509C11");
    check_base_class_offset(lv, (S2509C8*)(S2509C5*)(S2509C2*), ABISELECT(832,460), "S2509C11");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(464,252), "S2509C11");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(464,252), "S2509C11");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*)(S2509C13*), ABISELECT(672,376), "S2509C11");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(720,404), "S2509C11");
    check_base_class_offset(lv, (S2509C14*)(S2509C13*), ABISELECT(464,252), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C13*), ABISELECT(736,408), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(784,436), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(784,436), "S2509C11");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C13*), ABISELECT(736,408), "S2509C11");
    check_base_class_offset(lv, (S2509C13*)(S2509C12*), ABISELECT(352,196), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(896,500), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(896,500), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(1104,624), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(1152,652), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C14*)(S2509C12*), ABISELECT(896,500), "S2509C11");
    check_base_class_offset(lv, (S19676C2*)(S2509C12*), ABISELECT(1160,656), "S2509C11");
    check_base_class_offset(lv, (S19676C2*)(S2509C5*)(S2509C2*), ABISELECT(1160,656), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C12*), ABISELECT(160,88), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(208,116), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(208,116), "S2509C11");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C12*), ABISELECT(160,88), "S2509C11");
    check_base_class_offset(lv, (S2509C12*), ABISELECT(160,88), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*), ABISELECT(1184,672), "S2509C11");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C15*), ABISELECT(1184,672), "S2509C11");
    /*is_ambiguous_... S2509C2::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C2*), ABISELECT(12,8), "S2509C11");
    check_base_class_offset(lv, (S2509C5*)(S2509C2*), 0, "S2509C11");
    check_base_class_offset(lv, (S2509C2*), 0, "S2509C11");
    test_class_info(&lv, &cd_S2509C11);
    dp->~S2509C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C11(Test_S2509C11, "S2509C11", ABISELECT(1392,796));

#else // __cplusplus

extern void _ZN8S2509C11C1Ev();
extern void _ZN8S2509C11D2Ev();
Name_Map name_map_S2509C11[] = {
  NSPAIR(_ZN8S2509C11C1Ev),
  NSPAIR(_ZN8S2509C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C13;
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C12;
extern VTBL_ENTRY _ZTI8S2509C12[];
extern  VTBL_ENTRY _ZTV8S2509C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C12[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
extern Class_Descriptor cd_S2509C2;
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
static Base_Class bases_S2509C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(248,140), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(248,140), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(808,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(808,452), //bcp->offset
    85, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(352,196), //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
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(832,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(880,488), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(880,488), //bcp->offset
    100, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(832,460), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(464,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(720,404), //bcp->offset
    67, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(464,252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(736,408), //bcp->offset
    -1, //bcp->virtual_function_table_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
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(784,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(784,436), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(736,408), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S2509C13,    ABISELECT(352,196), //bcp->offset
    45, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(896,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1104,624), //bcp->offset
    115, //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
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1152,652), //bcp->offset
    119, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(896,500), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1160,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
    32, //immediately_derived
  0, 1},
  {&cd_S19676C9,    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
    28, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(208,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(208,116), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S2509C12,    ABISELECT(160,88), //bcp->offset
    20, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2509C6,    ABISELECT(1184,672), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(1184,672), //bcp->offset
    124, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    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
    37, //immediately_derived
  0, 0},
  {&cd_S2509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S2509C2,    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
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2509C11[];
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void _ZN8S2509C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void _ZN8S2509C11D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C11D1Ev,_ZThn60_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn112_N8S2509C11D0Ev,_ZThn60_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn160_N8S2509C11D1Ev,_ZThn88_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn160_N8S2509C11D0Ev,_ZThn88_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn248_N8S2509C11D1Ev,_ZThn140_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn248_N8S2509C11D0Ev,_ZThn140_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn352_N8S2509C11D1Ev,_ZThn196_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn352_N8S2509C11D0Ev,_ZThn196_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn808_N8S2509C11D1Ev,_ZThn452_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn808_N8S2509C11D0Ev,_ZThn452_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn832_N8S2509C11D1Ev,_ZThn460_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn832_N8S2509C11D0Ev,_ZThn460_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn896_N8S2509C11D1Ev,_ZThn500_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn896_N8S2509C11D0Ev,_ZThn500_N8S2509C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1184_N8S2509C11D1Ev,_ZThn672_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1184_N8S2509C11D0Ev,_ZThn672_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C11[] = {
  ABISELECT(1184,672),
  ABISELECT(896,500),
  ABISELECT(808,452),
  ABISELECT(352,196),
  ABISELECT(160,88),
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev),
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev),
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
  ABISELECT(-352,-196),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev),
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-464,-252),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev),
  ABISELECT(-608,-344),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev),
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev),
  ABISELECT(-808,-452),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-808,-452),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev),
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev),
  ABISELECT(-896,-500),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-896,-500),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev),
  ABISELECT(-1104,-624),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev),
  ABISELECT(-1040,-592),
  ABISELECT(-1152,-652),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev),
  ABISELECT(-1184,-672),
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  ABISELECT(-1184,-672),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2509C11[];
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C2__8S2509C11[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(1160,656),
  ABISELECT(248,140),
  ABISELECT(832,460),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn832_N7S2509C5D1Ev,_ZThn460_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn832_N7S2509C5D0Ev,_ZThn460_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn248_N7S2509C5D1Ev,_ZThn140_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn248_N7S2509C5D0Ev,_ZThn140_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C2__8S2509C11[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn832_N7S2509C2D1Ev,_ZThn460_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn832_N7S2509C2D0Ev,_ZThn460_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C2__8S2509C11[] = {
  ABISELECT(-832,-460),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-832,-460),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn248_N7S2509C2D1Ev,_ZThn140_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn248_N7S2509C2D0Ev,_ZThn140_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C2__8S2509C11[] = {
  ABISELECT(-248,-140),
  ABISELECT(-136,-80),
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C2__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-880,-488),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C11[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__8S2509C11[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN8S2509C12D1Ev();
extern void _ZN8S2509C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C12__8S2509C11[] = {
  ABISELECT(1000,568),
  ABISELECT(736,412),
  ABISELECT(672,372),
  ABISELECT(648,364),
  ABISELECT(192,108),
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&_ZN8S2509C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C12D0Ev,
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(88,52),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-136,-80),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C12__A2__8S2509C11[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C12__8S2509C11[] = {
  ABISELECT(-88,-52),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C12__8S2509C11[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C12__8S2509C11[] = {
  ABISELECT(-192,-108),
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn648_N8S2509C12D1Ev,_ZThn364_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn648_N8S2509C12D0Ev,_ZThn364_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C12__8S2509C11[] = {
  ABISELECT(-648,-364),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-648,-364),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C12__8S2509C11[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-304,-164),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn672_N8S2509C12D1Ev,_ZThn372_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn672_N8S2509C12D0Ev,_ZThn372_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C12__8S2509C11[] = {
  ABISELECT(-672,-372),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-720,-400),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__8S2509C11[] = {
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__8S2509C11[] = {
  ABISELECT(-608,-344),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-576,-320),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn736_N8S2509C12D1Ev,_ZThn412_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn736_N8S2509C12D0Ev,_ZThn412_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C12__8S2509C11[] = {
  ABISELECT(-736,-412),
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  ABISELECT(-736,-412),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C14__A4__8S2509C12__8S2509C11[] = {
  ABISELECT(-944,-536),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C12__8S2509C11[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-992,-564),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A3__8S2509C12__8S2509C11[] = {
  ABISELECT(40,24),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C11[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__8S2509C11[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C11[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__8S2509C11[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C11[] = {
  ABISELECT(480,264),
  ABISELECT(-104,-56),
  ABISELECT(456,256),
  ABISELECT(-352,-196),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C98S2509C13__A1__8S2509C11[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C11[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C11[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C11[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[] = {
  ABISELECT(-352,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11[] = {
  ABISELECT(-608,-344),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C11[] = {
  ABISELECT(608,344),
  ABISELECT(608,344),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(216,112),
  ABISELECT(-136,-80),
  ABISELECT(216,112),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(352,192),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn208_N8S2509C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
extern void ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn208_N8S2509C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-368,-208),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(464,252),
  ABISELECT(112,60),
  ABISELECT(464,252),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C11[] = {
  ABISELECT(-608,-344),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[] = {
  ABISELECT(-672,-376),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[] = {
  ABISELECT(536,296),
  ABISELECT(-136,-80),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[] = {
  ABISELECT(672,376),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(736,408),
  ABISELECT(112,60),
  ABISELECT(736,408),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(624,348),
  ABISELECT(624,348),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(488,268),
  ABISELECT(-136,-80),
  ABISELECT(488,268),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13__8S2509C11[] = {
  ABISELECT(352,196),
  ABISELECT(112,60),
  ABISELECT(352,196),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C13__8S2509C11[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13__8S2509C11[] = {
  ABISELECT(-456,-256),
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13__8S2509C11[] = {
  ABISELECT(104,56),
  ABISELECT(-136,-80),
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13__8S2509C11[] = {
  ABISELECT(-464,-252),
  ABISELECT(368,208),
  ABISELECT(-216,-112),
  ABISELECT(-352,-192),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn264_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn264_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13__8S2509C11[] = {
  ABISELECT(-480,-264),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C11[] = {
  ABISELECT(-608,-344),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13__8S2509C11[] = {
  ABISELECT(-488,-268),
  ABISELECT(-624,-348),
  ABISELECT(-736,-408),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C11[] = {
  ABISELECT(-536,-296),
  ABISELECT(-672,-376),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C11[] = {
  ABISELECT(-560,-312),
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A2__8S2509C11[] = {
  ABISELECT(-696,-392),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C11[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__8S2509C11[] = {
  ABISELECT(560,312),
  ABISELECT(-136,-80),
  ABISELECT(560,312),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__8S2509C11[] = {
  ABISELECT(696,392),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C11[] = {
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C11[] = {
  ABISELECT(-768,-428),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C11[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C11[] = {
  ABISELECT(632,348),
  ABISELECT(-136,-80),
  ABISELECT(632,348),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C11[] = {
  ABISELECT(768,428),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__8S2509C11[] = {
  ABISELECT(832,460),
  ABISELECT(112,60),
  ABISELECT(832,460),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__8S2509C11[] = {
  ABISELECT(720,400),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__8S2509C11[] = {
  ABISELECT(584,320),
  ABISELECT(-136,-80),
  ABISELECT(584,320),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C11[] = {
  ABISELECT(-896,-500),
  ABISELECT(-64,-40),
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__A1__8S2509C11[] = {
  ABISELECT(-648,-360),
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C11[] = {
  ABISELECT(-784,-440),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C11[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C11[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C11[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C11[] = {
  ABISELECT(-1040,-592),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C11[] = {
  ABISELECT(1040,592),
  ABISELECT(1040,592),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(648,360),
  ABISELECT(-136,-80),
  ABISELECT(648,360),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(784,440),
  ABISELECT(784,440),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(64,40),
  ABISELECT(-584,-320),
  ABISELECT(-720,-400),
  ABISELECT(-832,-460),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(896,500),
  ABISELECT(112,60),
  ABISELECT(896,500),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(-632,-348),
  ABISELECT(-768,-428),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C11[] = {
  ABISELECT(-1040,-592),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C15__A2__8S2509C11[] = {
  ABISELECT(-936,-532),
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C15__A11__8S2509C11[] = {
  ABISELECT(-1072,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C15__A11__8S2509C11[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C15__A2__8S2509C11[] = {
  ABISELECT(1072,612),
  ABISELECT(1072,612),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15__A2__8S2509C11[] = {
  ABISELECT(936,532),
  ABISELECT(-136,-80),
  ABISELECT(936,532),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
static  VTT_ENTRY vtt_S2509C11[] = {
  {&(_ZTV8S2509C11[13]),  13,131},
  {&(_tg__ZTV7S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C57S2509C2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C57S2509C2__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C57S2509C2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C2__8S2509C11[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C2__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C2__8S2509C11[4]),  4,6},
  {&(_ZTV8S2509C11[13]),  13,131},
  {&(_ZTV8S2509C11[18]),  18,131},
  {&(_ZTV8S2509C11[31]),  31,131},
  {&(_ZTV8S2509C11[43]),  43,131},
  {&(_ZTV8S2509C11[53]),  53,131},
  {&(_ZTV8S2509C11[90]),  90,131},
  {&(_ZTV8S2509C11[61]),  61,131},
  {&(_ZTV8S2509C11[98]),  98,131},
  {&(_ZTV8S2509C11[104]),  104,131},
  {&(_ZTV8S2509C11[65]),  65,131},
  {&(_ZTV8S2509C11[70]),  70,131},
  {&(_ZTV8S2509C11[77]),  77,131},
  {&(_ZTV8S2509C11[83]),  83,131},
  {&(_ZTV8S2509C11[113]),  113,131},
  {&(_ZTV8S2509C11[117]),  117,131},
  {&(_ZTV8S2509C11[122]),  122,131},
  {&(_ZTV8S2509C11[37]),  37,131},
  {&(_ZTV8S2509C11[129]),  129,131},
  {&(_tg__ZTV7S2509C6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C12__8S2509C11[10]),  10,12},
  {&(_tg__ZTV7S2509C88S2509C12__A2__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C12__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C12__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C12__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C9__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C12__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C12__8S2509C11[8]),  8,10},
  {&(_tg__ZTV7S2509C6__A1__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__8S2509C12__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C12__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C12__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__8S2509C11[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C12__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C12__8S2509C11[7]),  7,9},
  {&(_tg__ZTV8S19676C98S2509C14__A4__8S2509C12__8S2509C11[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C12__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C107S2509C8__A3__8S2509C12__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C11[7]),  7,9},
  {&(_tg__ZTV7S2509C98S2509C13__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C98S2509C13__A3__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A3__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C98S2509C13__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C148S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C148S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C148S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C13__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C13__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C13__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13__8S2509C11[5]),  5,7},
  {&(_tg__ZTV7S2509C9__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C14__8S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C13__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C11[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A4__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A4__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C11[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A8__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A9__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__A1__8S2509C11[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__A1__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__A1__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S2509C15__A2__8S2509C11[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C15__A11__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C15__A11__8S2509C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C15__A2__8S2509C11[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C15__A2__8S2509C11[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S2509C11[];
extern  VTBL_ENTRY _ZTV8S2509C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C11[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D0Ev,_ZThn264_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S2509C13D1Ev,_ZThn264_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D0Ev,_ZThn208_N8S2509C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S2509C14D1Ev,_ZThn208_N8S2509C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S2509C12D0Ev,_ZThn412_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S2509C12D1Ev,_ZThn412_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S2509C12D0Ev,_ZThn372_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S2509C12D1Ev,_ZThn372_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S2509C12D0Ev,_ZThn364_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn648_N8S2509C12D1Ev,_ZThn364_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D0Ev,_ZThn108_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S2509C12D1Ev,_ZThn108_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D0Ev,_ZThn52_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2509C8D1Ev,_ZThn52_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D0Ev,_ZThn24_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S2509C10D1Ev,_ZThn24_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D0Ev,_ZThn60_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C6D1Ev,_ZThn60_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C2D0Ev,_ZThn460_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C2D1Ev,_ZThn460_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D0Ev,_ZThn60_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C2D1Ev,_ZThn60_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C5D0Ev,_ZThn460_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N7S2509C5D1Ev,_ZThn460_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D0Ev,_ZThn60_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C5D1Ev,_ZThn60_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C5D0Ev,_ZThn140_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C5D1Ev,_ZThn140_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C2D0Ev,_ZThn140_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N7S2509C2D1Ev,_ZThn140_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S2509C11D0Ev,_ZThn500_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn896_N8S2509C11D1Ev,_ZThn500_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S2509C11D0Ev,_ZThn460_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S2509C11D1Ev,_ZThn460_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S2509C11D0Ev,_ZThn672_N8S2509C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S2509C11D0Ev,_ZThn452_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1184_N8S2509C11D1Ev,_ZThn672_N8S2509C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn808_N8S2509C11D1Ev,_ZThn452_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C11D0Ev,_ZThn196_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S2509C11D1Ev,_ZThn196_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2509C11D0Ev,_ZThn88_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2509C11D1Ev,_ZThn88_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S2509C11D0Ev,_ZThn60_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S2509C11D1Ev,_ZThn60_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S2509C11D0Ev,_ZThn140_N8S2509C11D0Ev),
  (VTBL_ENTRY)_ZN8S2509C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S2509C11D1Ev,_ZThn140_N8S2509C11D1Ev),
  (VTBL_ENTRY)_ZN8S2509C11D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C11 = {  "S2509C11", // class name
  bases_S2509C11, 38,
  &(vtc_S2509C11[0]), // expected_vtbl_contents
  &(vtt_S2509C11[0]), // expected_vtt_contents
  ABISELECT(1392,796), // object size
  NSPAIRA(_ZTI8S2509C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2509C11),131, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2509C11),137, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2509C1  : S2509C2 , S2509C11 , S2509C9 , virtual S2509C5 {
  __tsi64 s2509c1f0;
  ~S2509C1(); // tgen
  S2509C1(); // tgen
};
//SIG(1 S2509C1) C1{ BC2{ BC3{ m FC4{} Fi[3]} BC5{ VBC6{ VBC7{ vd m Fp Fi Fc FD} vd} VBC8{ BC7 VBC6 VBC9{ VBC7 BC6 Fp[10] Fi FL} BC10{ VBC9 BC6 vd Fi} vd Fi} VBC3 vd Fi} FC6 Fi} BC11{ VBC6 VBC12{ VBC9 VBC13{ VBC6 VBC10 BC9 BC14{ VBC9 VBC8 BC15{ VBC7 VBC9 BC6 vd Fp Fi FC7[3] Fi[7]} BC7 BC6 vd} BC8 vd Fs} VBC14 VBC3 BC8 Fs Fp[2]} VBC15 BC2 vd} BC9 VBC5 FL}


S2509C1 ::~S2509C1(){ note_dtor("S2509C1", this);} // tgen
S2509C1 ::S2509C1(){ note_ctor("S2509C1", this);} // tgen

static void Test_S2509C1()
{
  extern Class_Descriptor cd_S2509C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(104,233)];
    init_test(&cd_S2509C1, buf);
    S2509C1 *dp, &lv = *(dp=new (buf) S2509C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1648,928), "sizeof(S2509C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2509C1)");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C2*), ABISELECT(12,8), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*)(S2509C14*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C14*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C15*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C15*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C6*)(S2509C9*), ABISELECT(336,184), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*)(S2509C2*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*), 0, "S2509C1");
    /*is_ambiguous_... S2509C11::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C11*), 0, "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C13*), 0, "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C13*), 0, "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C8*)(S2509C12*), 0, "S2509C1");
    /*is_ambiguous_... S2509C5::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*)(S2509C2*)(S2509C11*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C5*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C12*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*), ABISELECT(448,252), "S2509C1");
    check_base_class_offset(lv, (S2509C9*)(S2509C14*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C14*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*)(S2509C14*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C8*)(S2509C12*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C15*), ABISELECT(448,252), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*), ABISELECT(432,240), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C5*)(S2509C2*), ABISELECT(384,212), "S2509C1");
    check_base_class_offset(lv, (S2509C8*)(S2509C14*)(S2509C13*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C14*), ABISELECT(384,212), "S2509C1");
    check_base_class_offset(lv, (S2509C8*)(S2509C5*)(S2509C2*)(S2509C11*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C5*), ABISELECT(384,212), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C5*)(S2509C2*), ABISELECT(552,308), "S2509C1");
    check_base_class_offset(lv, (S19676C2*)(S2509C12*), ABISELECT(552,308), "S2509C1");
    check_base_class_offset(lv, (S19676C2*)(S2509C5*)(S2509C2*)(S2509C11*), ABISELECT(552,308), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C5*), ABISELECT(552,308), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C5*)(S2509C2*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C2 */ AMB_check_base_class_offset(lv, (S2509C2*), 0, "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*), ABISELECT(1128,632), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C10 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C13*), ABISELECT(1128,632), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*)(S2509C13*), ABISELECT(672,376), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*)(S2509C13*), ABISELECT(672,376), "S2509C1");
    /*is_ambiguous_... S2509C15::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(784,432), "S2509C1");
    check_base_class_offset(lv, (S2509C15*)(S2509C14*)(S2509C13*), ABISELECT(784,432), "S2509C1");
    /*is_ambiguous_... S2509C14::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*)(S2509C13*), ABISELECT(992,556), "S2509C1");
    /*is_ambiguous_... S2509C14::S2509C6 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*)(S2509C13*), ABISELECT(1040,584), "S2509C1");
    check_base_class_offset(lv, (S2509C14*)(S2509C13*), ABISELECT(784,432), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C13*), ABISELECT(1056,588), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(1104,616), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C13*), ABISELECT(1104,616), "S2509C1");
    /*is_ambiguous_... S2509C13::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C13*), ABISELECT(1056,588), "S2509C1");
    check_base_class_offset(lv, (S2509C13*)(S2509C12*), ABISELECT(672,376), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*)(S2509C14*), ABISELECT(1152,640), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C14*), ABISELECT(1152,640), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C14*), ABISELECT(1360,764), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C14*), ABISELECT(1408,792), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C14 */ AMB_check_base_class_offset(lv, (S2509C14*)(S2509C12*), ABISELECT(1152,640), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S2509C8*)(S2509C12*), ABISELECT(576,324), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(624,352), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C10*)(S2509C8*)(S2509C12*), ABISELECT(624,352), "S2509C1");
    /*is_ambiguous_... S2509C12::S2509C8 */ AMB_check_base_class_offset(lv, (S2509C8*)(S2509C12*), ABISELECT(576,324), "S2509C1");
    check_base_class_offset(lv, (S2509C12*)(S2509C11*), ABISELECT(576,324), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C15*), ABISELECT(1424,796), "S2509C1");
    /*is_ambiguous_... S2509C11::S2509C15 */ AMB_check_base_class_offset(lv, (S2509C15*)(S2509C11*), ABISELECT(1424,796), "S2509C1");
    /*is_ambiguous_... S2509C2::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S2509C2*)(S2509C11*), ABISELECT(124,68), "S2509C1");
    check_base_class_offset(lv, (S2509C5*)(S2509C2*)(S2509C11*), ABISELECT(112,60), "S2509C1");
    check_base_class_offset(lv, (S2509C2*)(S2509C11*), ABISELECT(112,60), "S2509C1");
    check_base_class_offset(lv, (S2509C11*), ABISELECT(112,60), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C6*)(S2509C9*), ABISELECT(216,120), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C9 */ AMB_check_base_class_offset(lv, (S2509C9*), ABISELECT(216,120), "S2509C1");
    /*is_ambiguous_... S2509C1::S2509C5 */ AMB_check_base_class_offset(lv, (S2509C5*), ABISELECT(1632,920), "S2509C1");
    check_field_offset(lv, s2509c1f0, ABISELECT(320,176), "S2509C1.s2509c1f0");
    test_class_info(&lv, &cd_S2509C1);
    dp->~S2509C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2509C1(Test_S2509C1, "S2509C1", ABISELECT(1648,928));

#else // __cplusplus

extern void _ZN7S2509C1C1Ev();
extern void _ZN7S2509C1D1Ev();
Name_Map name_map_S2509C1[] = {
  NSPAIR(_ZN7S2509C1C1Ev),
  NSPAIR(_ZN7S2509C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
extern Class_Descriptor cd_S2509C2;
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C13;
extern VTBL_ENTRY _ZTI8S2509C13[];
extern  VTBL_ENTRY _ZTV8S2509C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C13[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C14;
extern VTBL_ENTRY _ZTI8S2509C14[];
extern  VTBL_ENTRY _ZTV8S2509C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C14[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C10;
extern VTBL_ENTRY _ZTI8S2509C10[];
extern  VTBL_ENTRY _ZTV8S2509C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C10[];
extern Class_Descriptor cd_S2509C8;
extern VTBL_ENTRY _ZTI7S2509C8[];
extern  VTBL_ENTRY _ZTV7S2509C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C8[];
extern Class_Descriptor cd_S2509C12;
extern VTBL_ENTRY _ZTI8S2509C12[];
extern  VTBL_ENTRY _ZTV8S2509C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C12[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C15;
extern VTBL_ENTRY _ZTI8S2509C15[];
extern  VTBL_ENTRY _ZTV8S2509C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C15[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
extern Class_Descriptor cd_S2509C2;
extern VTBL_ENTRY _ZTI7S2509C2[];
extern  VTBL_ENTRY _ZTV7S2509C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C2[];
extern Class_Descriptor cd_S2509C11;
extern VTBL_ENTRY _ZTI8S2509C11[];
extern  VTBL_ENTRY _ZTV8S2509C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2509C11[];
extern Class_Descriptor cd_S2509C6;
extern VTBL_ENTRY _ZTI7S2509C6[];
extern  VTBL_ENTRY _ZTV7S2509C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C6[];
extern Class_Descriptor cd_S2509C9;
extern VTBL_ENTRY _ZTI7S2509C9[];
extern  VTBL_ENTRY _ZTV7S2509C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C9[];
extern Class_Descriptor cd_S2509C5;
extern VTBL_ENTRY _ZTI7S2509C5[];
extern  VTBL_ENTRY _ZTV7S2509C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C5[];
static Base_Class bases_S2509C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(336,184), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2509C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(384,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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(448,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(448,252), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    7, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(432,240), //bcp->offset
    49, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(384,212), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(552,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
    10, //immediately_derived
  0, 1},
  {&cd_S2509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2509C2,    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
    37, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C6,    ABISELECT(1128,632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    153, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(1128,632), //bcp->offset
    120, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    152, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(784,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(784,432), //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
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,556), //bcp->offset
    98, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1040,584), //bcp->offset
    102, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(784,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1056,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
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1104,616), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(1104,616), //bcp->offset
    114, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    133, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(1056,588), //bcp->offset
    107, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S2509C13,    ABISELECT(672,376), //bcp->offset
    80, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(1152,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(1152,640), //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
    24, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1360,764), //bcp->offset
    136, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(1408,792), //bcp->offset
    140, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S2509C14,    ABISELECT(1152,640), //bcp->offset
    127, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    157, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S19676C9,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S2509C6,    ABISELECT(624,352), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S2509C10,    ABISELECT(624,352), //bcp->offset
    74, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S2509C8,    ABISELECT(576,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S2509C12,    ABISELECT(576,324), //bcp->offset
    61, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S2509C6,    ABISELECT(1424,796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S2509C15,    ABISELECT(1424,796), //bcp->offset
    145, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(124,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2509C5,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2509C2,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S2509C11,    ABISELECT(112,60), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C6,    ABISELECT(216,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    43, //immediately_derived
  0, 0},
  {&cd_S2509C9,    ABISELECT(216,120), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2509C5,    ABISELECT(1632,920), //bcp->offset
    152, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2509C1[];
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void _ZN7S2509C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void _ZN7S2509C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S2509C1D1Ev,_ZThn60_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S2509C1D0Ev,_ZThn60_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn216_N7S2509C1D1Ev,_ZThn120_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn216_N7S2509C1D0Ev,_ZThn120_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C1D1Ev,_ZTv0_n12_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C1D1Ev,_ZThn184_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C1D0Ev,_ZTv0_n12_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C1D0Ev,_ZThn184_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C1D1Ev,_ZTv0_n24_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S2509C1D1Ev,_ZThn212_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C1D0Ev,_ZTv0_n24_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S2509C1D0Ev,_ZThn212_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S2509C1D1Ev,_ZTvn28_n24_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C1D0Ev,_ZTvn28_n24_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn448_N7S2509C1D1Ev,_ZThn252_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn448_N7S2509C1D0Ev,_ZThn252_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S2509C1D1Ev,_ZTv0_n44_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn576_N7S2509C1D1Ev,_ZThn324_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S2509C1D0Ev,_ZTv0_n44_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn576_N7S2509C1D0Ev,_ZThn324_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n88_N7S2509C1D1Ev,_ZTvn28_n44_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N7S2509C1D0Ev,_ZTvn28_n44_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N7S2509C1D1Ev,_ZTv0_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn672_N7S2509C1D1Ev,_ZThn376_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S2509C1D0Ev,_ZTv0_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn672_N7S2509C1D0Ev,_ZThn376_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S2509C1D1Ev,_ZTvn56_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S2509C1D0Ev,_ZTvn56_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S2509C1D1Ev,_ZTvn180_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S2509C1D0Ev,_ZTvn180_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S2509C1D1Ev,_ZTvn208_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S2509C1D0Ev,_ZTvn208_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S2509C1D1Ev,_ZTvn212_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S2509C1D0Ev,_ZTvn212_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S2509C1D1Ev,_ZTvn240_n32_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S2509C1D0Ev,_ZTvn240_n32_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1128_N7S2509C1D1Ev,_ZThn632_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1128_N7S2509C1D0Ev,_ZThn632_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S2509C1D1Ev,_ZTv0_n28_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1152_N7S2509C1D1Ev,_ZThn640_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S2509C1D0Ev,_ZTv0_n28_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1152_N7S2509C1D0Ev,_ZThn640_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S2509C1D1Ev,_ZTvn124_n28_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S2509C1D0Ev,_ZTvn124_n28_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S2509C1D1Ev,_ZTvn152_n28_N7S2509C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S2509C1D0Ev,_ZTvn152_n28_N7S2509C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1424_N7S2509C1D1Ev,_ZThn796_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1424_N7S2509C1D0Ev,_ZThn796_N7S2509C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev)();
extern void ABISELECT(_ZThn1632_N7S2509C1D1Ev,_ZThn920_N7S2509C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev)();
extern void ABISELECT(_ZThn1632_N7S2509C1D0Ev,_ZThn920_N7S2509C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2509C1[] = {
  ABISELECT(1632,920),
  ABISELECT(1424,796),
  ABISELECT(1152,640),
  ABISELECT(1128,632),
  ABISELECT(672,376),
  ABISELECT(576,324),
  ABISELECT(552,308),
  ABISELECT(448,252),
  ABISELECT(384,212),
  0,
  0,
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
  ABISELECT(1312,736),
  ABISELECT(1040,580),
  ABISELECT(1016,572),
  ABISELECT(560,316),
  ABISELECT(464,264),
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  ABISELECT(224,124),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
  ABISELECT(120,64),
  ABISELECT(-216,-120),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S2509C1D1Ev,_ZThn120_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N7S2509C1D0Ev,_ZThn120_N7S2509C1D0Ev),
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C1D1Ev,_ZTv0_n12_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C1D0Ev,_ZTv0_n12_N7S2509C1D0Ev),
  ABISELECT(-384,-212),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C1D1Ev,_ZTv0_n24_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C1D0Ev,_ZTv0_n24_N7S2509C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C1D1Ev,_ZTvn28_n24_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C1D0Ev,_ZTvn28_n24_N7S2509C1D0Ev),
  ABISELECT(-448,-252),
  ABISELECT(-112,-68),
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
  ABISELECT(-576,-324),
  ABISELECT(-24,-16),
  ABISELECT(576,316),
  ABISELECT(-192,-112),
  ABISELECT(552,308),
  ABISELECT(96,52),
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S2509C1D1Ev,_ZTv0_n44_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S2509C1D0Ev,_ZTv0_n44_N7S2509C1D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-624,-352),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S2509C1D1Ev,_ZTvn28_n44_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N7S2509C1D0Ev,_ZTvn28_n44_N7S2509C1D0Ev),
  ABISELECT(-672,-376),
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S2509C1D1Ev,_ZTv0_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S2509C1D0Ev,_ZTv0_n32_N7S2509C1D0Ev),
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-784,-432),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S2509C1D1Ev,_ZTvn56_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S2509C1D0Ev,_ZTvn56_n32_N7S2509C1D0Ev),
  ABISELECT(-992,-556),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S2509C1D1Ev,_ZTvn180_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S2509C1D0Ev,_ZTvn180_n32_N7S2509C1D0Ev),
  ABISELECT(-704,-400),
  ABISELECT(-1040,-584),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S2509C1D1Ev,_ZTvn208_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S2509C1D0Ev,_ZTvn208_n32_N7S2509C1D0Ev),
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-1056,-588),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S2509C1D1Ev,_ZTvn212_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S2509C1D0Ev,_ZTvn212_n32_N7S2509C1D0Ev),
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-1104,-616),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S2509C1D1Ev,_ZTvn240_n32_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S2509C1D0Ev,_ZTvn240_n32_N7S2509C1D0Ev),
  ABISELECT(-1128,-632),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-1128,-632),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev),
  ABISELECT(-1152,-640),
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  ABISELECT(-1152,-640),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S2509C1D1Ev,_ZTv0_n28_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S2509C1D0Ev,_ZTv0_n28_N7S2509C1D0Ev),
  ABISELECT(-1360,-764),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S2509C1D1Ev,_ZTvn124_n28_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S2509C1D0Ev,_ZTvn124_n28_N7S2509C1D0Ev),
  ABISELECT(-1072,-608),
  ABISELECT(-1408,-792),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S2509C1D1Ev,_ZTvn152_n28_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S2509C1D0Ev,_ZTvn152_n28_N7S2509C1D0Ev),
  ABISELECT(-1424,-796),
  ABISELECT(-976,-544),
  ABISELECT(-1088,-612),
  ABISELECT(-1424,-796),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev),
  ABISELECT(-1080,-612),
  ABISELECT(-1184,-668),
  ABISELECT(-1248,-708),
  ABISELECT(-1632,-920),
  ABISELECT(-1632,-920),
  ABISELECT(-1296,-736),
  ABISELECT(-1632,-920),
  (VTBL_ENTRY)&(_ZTI7S2509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2509C1[];
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C2__7S2509C1[] = {
  ABISELECT(552,308),
  ABISELECT(448,252),
  ABISELECT(384,212),
  0,
  0,
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(552,308),
  ABISELECT(448,252),
  ABISELECT(384,212),
  0,
  0,
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn184_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn184_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn384_N7S2509C5D1Ev,_ZThn212_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn384_N7S2509C5D0Ev,_ZThn212_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(-384,-212),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn448_N7S2509C5D1Ev,_ZThn252_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn448_N7S2509C5D0Ev,_ZThn252_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(-448,-252),
  ABISELECT(-112,-68),
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn184_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn184_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C2__7S2509C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S2509C2D1Ev,_ZThn212_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S2509C2D0Ev,_ZThn212_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C2__7S2509C1[] = {
  ABISELECT(-384,-212),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn448_N7S2509C2D1Ev,_ZThn252_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn448_N7S2509C2D0Ev,_ZThn252_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C2__7S2509C1[] = {
  ABISELECT(-448,-252),
  ABISELECT(-112,-68),
  ABISELECT(-448,-252),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C2__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void _ZN8S2509C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void _ZN8S2509C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C11__7S2509C1[] = {
  ABISELECT(1312,736),
  ABISELECT(1040,580),
  ABISELECT(1016,572),
  ABISELECT(560,316),
  ABISELECT(464,264),
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  0,
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void _ZN7S2509C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void _ZN7S2509C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  0,
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(440,248),
  ABISELECT(336,192),
  ABISELECT(272,152),
  ABISELECT(-112,-60),
  0,
  ABISELECT(224,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(112,60),
  ABISELECT(336,184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn124_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn124_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn272_N7S2509C5D1Ev,_ZThn152_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn272_N7S2509C5D0Ev,_ZThn152_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn192_N7S2509C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn192_N7S2509C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-112,-68),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(112,60),
  ABISELECT(336,184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn124_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn124_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S2509C2D1Ev,_ZThn152_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S2509C2D0Ev,_ZThn152_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn192_N7S2509C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn192_N7S2509C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-112,-68),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C28S2509C11__A1__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S2509C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D1Ev,_ZTvn28_n24_N7S2509C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C2D0Ev,_ZTvn28_n24_N7S2509C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C11__7S2509C1[] = {
  ABISELECT(112,60),
  ABISELECT(336,184),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn224_N8S2509C11D1Ev,_ZThn124_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn224_N8S2509C11D0Ev,_ZThn124_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C11__7S2509C1[] = {
  ABISELECT(-224,-124),
  ABISELECT(-224,-124),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn464_N8S2509C11D1Ev,_ZThn264_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn464_N8S2509C11D0Ev,_ZThn264_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C12__8S2509C11__7S2509C1[] = {
  ABISELECT(-464,-264),
  ABISELECT(-24,-16),
  ABISELECT(576,316),
  ABISELECT(-192,-112),
  ABISELECT(552,308),
  ABISELECT(96,52),
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  ABISELECT(-464,-264),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn336_N8S2509C11D1Ev,_ZThn192_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn336_N8S2509C11D0Ev,_ZThn192_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C11__7S2509C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-112,-68),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn560_N8S2509C11D1Ev,_ZThn316_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn560_N8S2509C11D0Ev,_ZThn316_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C11__7S2509C1[] = {
  ABISELECT(-560,-316),
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1016_N8S2509C11D1Ev,_ZThn572_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1016_N8S2509C11D0Ev,_ZThn572_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C11__7S2509C1[] = {
  ABISELECT(-1016,-572),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-1016,-572),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C11__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-672,-372),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D1Ev,_ZTvn56_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C11D0Ev,_ZTvn56_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn272_N8S2509C11D1Ev,_ZThn152_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn272_N8S2509C11D0Ev,_ZThn152_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C11__7S2509C1[] = {
  ABISELECT(-272,-152),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C11__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D1Ev,_ZTvn28_n24_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C11D0Ev,_ZTvn28_n24_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C11__7S2509C1[] = {
  ABISELECT(-880,-496),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D1Ev,_ZTvn180_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C11D0Ev,_ZTvn180_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-928,-524),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D1Ev,_ZTvn208_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C11D0Ev,_ZTvn208_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C11__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-944,-528),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D1Ev,_ZTvn212_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C11D0Ev,_ZTvn212_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-992,-556),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D1Ev,_ZTvn240_n32_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C11D0Ev,_ZTvn240_n32_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1040_N8S2509C11D1Ev,_ZThn580_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1040_N8S2509C11D0Ev,_ZThn580_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C11__7S2509C1[] = {
  ABISELECT(-1040,-580),
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  ABISELECT(-1040,-580),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C14__A4__8S2509C11__7S2509C1[] = {
  ABISELECT(-1248,-704),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D1Ev,_ZTvn124_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C11D0Ev,_ZTvn124_n28_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C11__7S2509C1[] = {
  ABISELECT(-1072,-608),
  ABISELECT(-1296,-732),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D1Ev,_ZTvn152_n28_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C11D0Ev,_ZTvn152_n28_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev)();
extern void ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D1Ev,_ZTvn28_n44_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n88_N8S2509C11D0Ev,_ZTvn28_n44_N8S2509C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev)();
extern void ABISELECT(_ZThn1312_N8S2509C11D1Ev,_ZThn736_N8S2509C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev)();
extern void ABISELECT(_ZThn1312_N8S2509C11D0Ev,_ZThn736_N8S2509C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C15__A2__8S2509C11__7S2509C1[] = {
  ABISELECT(-1312,-736),
  ABISELECT(-976,-544),
  ABISELECT(-1088,-612),
  ABISELECT(-1312,-736),
  (VTBL_ENTRY)&(_ZTI8S2509C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__A__7S2509C1[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A12__7S2509C1[] = {
  ABISELECT(120,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn120_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn120_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A12__7S2509C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZThn120_N7S2509C9D1Ev,_ZThn64_N7S2509C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
extern void ABISELECT(_ZThn120_N7S2509C9D0Ev,_ZThn64_N7S2509C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__A__7S2509C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C1[] = {
  ABISELECT(336,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZThn336_N7S2509C6D1Ev,_ZThn184_N7S2509C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
extern void ABISELECT(_ZThn336_N7S2509C6D0Ev,_ZThn184_N7S2509C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C6__7S2509C1[] = {
  ABISELECT(-336,-184),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C1[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C8__7S2509C1[] = {
  ABISELECT(384,212),
  ABISELECT(336,184),
  ABISELECT(384,212),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C8__7S2509C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
extern void ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C8__7S2509C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C8__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C1[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C9__A1__7S2509C1[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C1[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C9__7S2509C1[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C12D1Ev();
extern void _ZN8S2509C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C12__7S2509C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(576,316),
  ABISELECT(-192,-112),
  ABISELECT(552,308),
  ABISELECT(96,52),
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&_ZN8S2509C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C12D0Ev,
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-240,-140),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C12__A3__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[] = {
  ABISELECT(-288,-168),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[] = {
  ABISELECT(288,168),
  ABISELECT(288,168),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[] = {
  ABISELECT(176,100),
  ABISELECT(-112,-68),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[] = {
  ABISELECT(288,168),
  ABISELECT(288,168),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(576,324),
  ABISELECT(336,184),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(128,72),
  ABISELECT(-112,-68),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C12__A2__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C12__7S2509C1[] = {
  ABISELECT(128,72),
  ABISELECT(-112,-68),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C12__7S2509C1[] = {
  ABISELECT(240,140),
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D1Ev,_ZTv0_n12_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C12D0Ev,_ZTv0_n12_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C13__8S2509C12__7S2509C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(576,324),
  ABISELECT(336,184),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D1Ev,_ZTv0_n16_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C12D0Ev,_ZTv0_n16_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn552_N8S2509C12D1Ev,_ZThn308_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn552_N8S2509C12D0Ev,_ZThn308_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C12__7S2509C1[] = {
  ABISELECT(-552,-308),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-552,-308),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__8S2509C12__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-208,-108),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D1Ev,_ZTvn56_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N8S2509C12D0Ev,_ZTvn56_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C12__7S2509C1[] = {
  ABISELECT(192,112),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D1Ev,_ZTv0_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C12D0Ev,_ZTv0_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D1Ev,_ZTvn28_n24_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C12D0Ev,_ZTvn28_n24_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__7S2509C1[] = {
  ABISELECT(-416,-232),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D1Ev,_ZTvn180_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N8S2509C12D0Ev,_ZTvn180_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D1Ev,_ZTvn208_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N8S2509C12D0Ev,_ZTvn208_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-480,-264),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D1Ev,_ZTvn212_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N8S2509C12D0Ev,_ZTvn212_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-528,-292),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D1Ev,_ZTvn240_n32_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N8S2509C12D0Ev,_ZTvn240_n32_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn576_N8S2509C12D1Ev,_ZThn316_N8S2509C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev)();
extern void ABISELECT(_ZThn576_N8S2509C12D0Ev,_ZThn316_N8S2509C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__8S2509C12__7S2509C1[] = {
  ABISELECT(-576,-316),
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  ABISELECT(-576,-316),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C98S2509C14__A4__8S2509C12__7S2509C1[] = {
  ABISELECT(-784,-440),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D1Ev,_ZTvn124_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N8S2509C12D0Ev,_ZTvn124_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__8S2509C12__7S2509C1[] = {
  ABISELECT(-1072,-608),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D1Ev,_ZTvn152_n28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N8S2509C12D0Ev,_ZTvn152_n28_N8S2509C12D0Ev),
};
extern void ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev)();
extern void ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A3__8S2509C12__7S2509C1[] = {
  ABISELECT(-176,-100),
  ABISELECT(-288,-168),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S2509C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D1Ev,_ZThn28_N8S2509C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S2509C12D0Ev,_ZThn28_N8S2509C12D0Ev),
};
extern void _ZN8S2509C13D1Ev();
extern void _ZN8S2509C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C13__7S2509C1[] = {
  ABISELECT(-288,-164),
  ABISELECT(-224,-124),
  ABISELECT(456,256),
  ABISELECT(-672,-376),
  ABISELECT(-336,-192),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&_ZN8S2509C13D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C13D0Ev,
};
extern void _ZN7S2509C9D1Ev();
extern void _ZN7S2509C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C98S2509C13__A1__7S2509C1[] = {
  ABISELECT(-336,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&_ZN7S2509C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C9D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C67S2509C98S2509C13__A4__7S2509C1[] = {
  ABISELECT(-336,-192),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A4__7S2509C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C98S2509C13__A1__7S2509C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI7S2509C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[] = {
  ABISELECT(-448,-248),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[] = {
  ABISELECT(448,248),
  ABISELECT(448,248),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(448,248),
  ABISELECT(448,248),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(336,180),
  ABISELECT(-112,-68),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C148S2509C13__A6__7S2509C1[] = {
  ABISELECT(-704,-400),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__7S2509C1[] = {
  ABISELECT(704,400),
  ABISELECT(704,400),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(336,180),
  ABISELECT(-112,-68),
  ABISELECT(336,180),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(448,248),
  ABISELECT(448,248),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(400,220),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(400,220),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(784,432),
  ABISELECT(336,184),
  ABISELECT(784,432),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(352,192),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C148S2509C13__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN7S2509C8D1Ev();
extern void _ZN7S2509C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&_ZN7S2509C8D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C8D0Ev,
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C88S2509C13__A2__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[] = {
  ABISELECT(-768,-432),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[] = {
  ABISELECT(768,432),
  ABISELECT(768,432),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[] = {
  ABISELECT(656,364),
  ABISELECT(-112,-68),
  ABISELECT(656,364),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[] = {
  ABISELECT(768,432),
  ABISELECT(768,432),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(1056,588),
  ABISELECT(336,184),
  ABISELECT(1056,588),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(720,404),
  ABISELECT(720,404),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D1Ev,_ZTv0_n12_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C8D0Ev,_ZTv0_n12_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(608,336),
  ABISELECT(-112,-68),
  ABISELECT(608,336),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C10__7S2509C88S2509C13__A1__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S2509C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D1Ev,_ZThn28_N7S2509C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S2509C8D0Ev,_ZThn28_N7S2509C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__8S2509C13__7S2509C1[] = {
  ABISELECT(672,376),
  ABISELECT(336,184),
  ABISELECT(672,376),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C13__7S2509C1[] = {
  ABISELECT(336,192),
  ABISELECT(336,192),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D1Ev,_ZTv0_n12_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C13D0Ev,_ZTv0_n12_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev)();
extern void ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2509C10__8S2509C13__7S2509C1[] = {
  ABISELECT(-456,-256),
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C13__7S2509C1[] = {
  ABISELECT(224,124),
  ABISELECT(-112,-68),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D1Ev,_ZTv0_n16_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C13D0Ev,_ZTv0_n16_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C14__8S2509C13__7S2509C1[] = {
  ABISELECT(-784,-432),
  ABISELECT(-400,-220),
  ABISELECT(-336,-180),
  ABISELECT(-448,-248),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D1Ev,_ZThn56_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S2509C13D0Ev,_ZThn56_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C13__7S2509C1[] = {
  ABISELECT(288,164),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D1Ev,_ZTv0_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C13D0Ev,_ZTv0_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A1__8S2509C13__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D1Ev,_ZTvn28_n24_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C13D0Ev,_ZTvn28_n24_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A6__8S2509C13__7S2509C1[] = {
  ABISELECT(-704,-400),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D1Ev,_ZThn208_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S2509C13D0Ev,_ZThn208_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__A__8S2509C13__7S2509C1[] = {
  ABISELECT(-608,-336),
  ABISELECT(-720,-404),
  ABISELECT(-1056,-588),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D1Ev,_ZThn212_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S2509C13D0Ev,_ZThn212_N8S2509C13D0Ev),
};
extern void ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev)();
extern void ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__A2__8S2509C13__7S2509C1[] = {
  ABISELECT(-656,-364),
  ABISELECT(-768,-432),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S2509C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D1Ev,_ZThn240_N8S2509C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S2509C13D0Ev,_ZThn240_N8S2509C13D0Ev),
};
extern void _ZN8S2509C10D1Ev();
extern void _ZN8S2509C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C10__A1__7S2509C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-792,-448),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&_ZN8S2509C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C10D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C10__A3__7S2509C1[] = {
  ABISELECT(-792,-448),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C10__A3__7S2509C1[] = {
  ABISELECT(792,448),
  ABISELECT(792,448),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C10__A1__7S2509C1[] = {
  ABISELECT(680,380),
  ABISELECT(-112,-68),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C10__A1__7S2509C1[] = {
  ABISELECT(792,448),
  ABISELECT(792,448),
  (VTBL_ENTRY)&(_ZTI8S2509C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D1Ev,_ZTv0_n12_N8S2509C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C10D0Ev,_ZTv0_n12_N8S2509C10D0Ev),
};
extern void _ZN8S2509C14D1Ev();
extern void _ZN8S2509C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C14__A1__7S2509C1[] = {
  ABISELECT(-1152,-640),
  ABISELECT(-768,-428),
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&_ZN8S2509C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C14D0Ev,
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C158S2509C14__A1__7S2509C1[] = {
  ABISELECT(-704,-388),
  ABISELECT(-816,-456),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C158S2509C14__A8__7S2509C1[] = {
  ABISELECT(-816,-456),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__7S2509C1[] = {
  ABISELECT(816,456),
  ABISELECT(816,456),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C158S2509C14__A1__7S2509C1[] = {
  ABISELECT(816,456),
  ABISELECT(816,456),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C158S2509C14__A1__7S2509C1[] = {
  ABISELECT(704,388),
  ABISELECT(-112,-68),
  ABISELECT(704,388),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C14__A9__7S2509C1[] = {
  ABISELECT(-1072,-608),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C14__A9__7S2509C1[] = {
  ABISELECT(1072,608),
  ABISELECT(1072,608),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(704,388),
  ABISELECT(-112,-68),
  ABISELECT(704,388),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(816,456),
  ABISELECT(816,456),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D1Ev,_ZTv0_n12_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C14D0Ev,_ZTv0_n12_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(768,428),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(768,428),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D1Ev,_ZTv0_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2509C14D0Ev,_ZTv0_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A1__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(1152,640),
  ABISELECT(336,184),
  ABISELECT(1152,640),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D1Ev,_ZTv0_n16_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C14D0Ev,_ZTv0_n16_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(720,400),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D1Ev,_ZTvn28_n24_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S2509C14D0Ev,_ZTvn28_n24_N8S2509C14D0Ev),
};
extern void ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__A__8S2509C14__A1__7S2509C1[] = {
  ABISELECT(-1072,-608),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S2509C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D1Ev,_ZThn152_N8S2509C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S2509C14D0Ev,_ZThn152_N8S2509C14D0Ev),
};
extern void _ZN8S2509C15D1Ev();
extern void _ZN8S2509C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2509C15__A2__7S2509C1[] = {
  ABISELECT(-976,-544),
  ABISELECT(-1088,-612),
  0,
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&_ZN8S2509C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2509C15D0Ev,
};
extern void _ZN7S2509C6D1Ev();
extern void _ZN7S2509C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2509C68S2509C15__A11__7S2509C1[] = {
  ABISELECT(-1088,-612),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&_ZN7S2509C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2509C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C68S2509C15__A11__7S2509C1[] = {
  ABISELECT(1088,612),
  ABISELECT(1088,612),
  (VTBL_ENTRY)&(_ZTI7S2509C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S2509C15__A2__7S2509C1[] = {
  ABISELECT(1088,612),
  ABISELECT(1088,612),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D1Ev,_ZTv0_n12_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2509C15D0Ev,_ZTv0_n12_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__8S2509C15__A2__7S2509C1[] = {
  ABISELECT(976,544),
  ABISELECT(-112,-68),
  ABISELECT(976,544),
  (VTBL_ENTRY)&(_ZTI8S2509C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D1Ev,_ZTv0_n16_N8S2509C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2509C15D0Ev,_ZTv0_n16_N8S2509C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void _ZN7S2509C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
extern void _ZN7S2509C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2509C5__A2__7S2509C1[] = {
  ABISELECT(-1080,-612),
  ABISELECT(-1184,-668),
  ABISELECT(-1248,-708),
  ABISELECT(-1632,-920),
  0,
  ABISELECT(-1296,-736),
  0,
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C6__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1632,920),
  ABISELECT(336,184),
  ABISELECT(1632,920),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1296,736),
  ABISELECT(1296,736),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C8__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1248,708),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-384,-212),
  ABISELECT(1248,708),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2509C9__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(1184,668),
  ABISELECT(-112,-68),
  ABISELECT(1184,668),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2509C107S2509C8__7S2509C5__A2__7S2509C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(1200,680),
  (VTBL_ENTRY)&(_ZTI7S2509C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D1Ev,_ZTvn28_n24_N7S2509C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S2509C5D0Ev,_ZTvn28_n24_N7S2509C5D0Ev),
};
static  VTT_ENTRY vtt_S2509C1[] = {
  {&(_ZTV7S2509C1[14]),  14,162},
  {&(_tg__ZTV7S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C57S2509C2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C57S2509C2__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C57S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C57S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__7S2509C2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C2__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C11__7S2509C1[13]),  13,15},
  {&(_tg__ZTV7S2509C28S2509C11__A1__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C57S2509C28S2509C11__A1__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C6__7S2509C57S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C57S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C57S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__7S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S2509C28S2509C11__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C28S2509C11__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C28S2509C11__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C12__8S2509C11__7S2509C1[11]),  11,13},
  {&(_tg__ZTV7S2509C9__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C13__8S2509C11__7S2509C1[8]),  8,10},
  {&(_tg__ZTV8S2509C10__8S2509C11__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C11__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C11__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C11__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C11__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C11__7S2509C1[7]),  7,9},
  {&(_tg__ZTV8S19676C98S2509C14__A4__8S2509C11__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C107S2509C88S2509C12__A3__8S2509C11__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C15__A2__8S2509C11__7S2509C1[5]),  5,7},
  {&(_tg__ZTV7S2509C9__A__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__A__7S2509C1[3]),  3,5},
  {&(_ZTV7S2509C1[14]),  14,162},
  {&(_ZTV7S2509C1[39]),  39,162},
  {&(_ZTV7S2509C1[47]),  47,162},
  {&(_ZTV7S2509C1[59]),  59,162},
  {&(_ZTV7S2509C1[53]),  53,162},
  {&(_ZTV7S2509C1[29]),  29,162},
  {&(_ZTV7S2509C1[72]),  72,162},
  {&(_ZTV7S2509C1[88]),  88,162},
  {&(_ZTV7S2509C1[125]),  125,162},
  {&(_ZTV7S2509C1[96]),  96,162},
  {&(_ZTV7S2509C1[100]),  100,162},
  {&(_ZTV7S2509C1[105]),  105,162},
  {&(_ZTV7S2509C1[112]),  112,162},
  {&(_ZTV7S2509C1[118]),  118,162},
  {&(_ZTV7S2509C1[134]),  134,162},
  {&(_ZTV7S2509C1[138]),  138,162},
  {&(_ZTV7S2509C1[143]),  143,162},
  {&(_ZTV7S2509C1[78]),  78,162},
  {&(_ZTV7S2509C1[150]),  150,162},
  {&(_ZTV7S2509C1[34]),  34,162},
  {&(_ZTV7S2509C1[160]),  160,162},
  {&(_tg__ZTV7S2509C6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C8__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C8__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C8__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C9__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C9__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C12__7S2509C1[10]),  10,12},
  {&(_tg__ZTV7S2509C88S2509C12__A2__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C12__A3__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C12__A10__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C12__A3__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C12__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C12__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C12__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C12__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C9__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C13__8S2509C12__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C6__A1__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__8S2509C12__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C148S2509C13__8S2509C12__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C12__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C98S2509C148S2509C13__A2__8S2509C12__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__8S2509C12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__8S2509C12__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C14__A1__8S2509C12__7S2509C1[7]),  7,9},
  {&(_tg__ZTV8S19676C98S2509C14__A4__8S2509C12__7S2509C1[2]),  2,4},
  {&(_tg__ZTV7S2509C68S2509C14__A9__8S2509C12__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C107S2509C8__A3__8S2509C12__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C13__7S2509C1[7]),  7,9},
  {&(_tg__ZTV7S2509C98S2509C13__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C67S2509C98S2509C13__A4__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C67S2509C98S2509C13__A4__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C98S2509C13__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C148S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C148S2509C13__A5__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C148S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C148S2509C13__A6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C148S2509C13__A6__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C148S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C148S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C148S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C148S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C88S2509C13__A1__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C88S2509C13__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C107S2509C88S2509C13__A7__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C107S2509C88S2509C13__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C6__7S2509C88S2509C13__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S2509C88S2509C13__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__7S2509C88S2509C13__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__7S2509C88S2509C13__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C10__8S2509C13__7S2509C1[5]),  5,7},
  {&(_tg__ZTV7S2509C9__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C14__8S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C8__8S2509C13__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C107S2509C8__A1__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A6__8S2509C13__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__A__8S2509C13__7S2509C1[5]),  5,7},
  {&(_tg__ZTV8S2509C107S2509C8__A2__8S2509C13__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C10__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C10__A3__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C10__A3__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C10__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C10__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C14__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV8S2509C158S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C158S2509C14__A8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C158S2509C14__A8__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C158S2509C14__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C158S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C14__A9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C14__A9__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S2509C14__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__8S2509C14__A1__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C6__A1__8S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__8S2509C14__A1__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C6__A__8S2509C14__A1__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S2509C15__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C68S2509C15__A11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S2509C68S2509C15__A11__7S2509C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S2509C15__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C9__8S2509C15__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV7S2509C5__A2__7S2509C1[8]),  8,10},
  {&(_tg__ZTV7S2509C6__7S2509C5__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S2509C5__A2__7S2509C1[3]),  3,5},
  {&(_tg__ZTV7S2509C8__7S2509C5__A2__7S2509C1[6]),  6,8},
  {&(_tg__ZTV7S2509C9__7S2509C5__A2__7S2509C1[4]),  4,6},
  {&(_tg__ZTV8S2509C107S2509C8__7S2509C5__A2__7S2509C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S2509C1[];
extern  VTBL_ENTRY _ZTV7S2509C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2509C1[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D0Ev,_ZTv0_n20_N8S2509C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D0Ev,_ZThn256_N8S2509C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C13D1Ev,_ZTv0_n20_N8S2509C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S2509C13D1Ev,_ZThn256_N8S2509C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D0Ev,_ZTv0_n28_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S2509C12D0Ev,_ZThn316_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C12D1Ev,_ZTv0_n28_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N8S2509C12D1Ev,_ZThn316_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D0Ev,_ZTv0_n20_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S2509C12D0Ev,_ZThn308_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C12D1Ev,_ZTv0_n20_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn552_N8S2509C12D1Ev,_ZThn308_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D0Ev,_ZTv0_n32_N8S2509C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C12D0Ev,_ZThn52_N8S2509C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C12D1Ev,_ZTv0_n32_N8S2509C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S2509C12D1Ev,_ZThn52_N8S2509C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D0Ev,_ZTv0_n16_N7S2509C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D0Ev,_ZThn40_N7S2509C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C8D1Ev,_ZTv0_n16_N7S2509C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2509C8D1Ev,_ZThn40_N7S2509C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D0Ev,_ZTv0_n16_N8S2509C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D0Ev,_ZThn12_N8S2509C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C10D1Ev,_ZTv0_n16_N8S2509C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S2509C10D1Ev,_ZThn12_N8S2509C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D0Ev,_ZTv0_n12_N7S2509C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C9D0Ev,_ZThn64_N7S2509C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C9D1Ev,_ZTv0_n12_N7S2509C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C9D1Ev,_ZThn64_N7S2509C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D0Ev,_ZTv0_n12_N7S2509C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C6D0Ev,_ZThn184_N7S2509C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C6D0Ev,_ZThn64_N7S2509C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C6D1Ev,_ZTv0_n12_N7S2509C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C6D1Ev,_ZThn184_N7S2509C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S2509C6D1Ev,_ZThn64_N7S2509C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D0Ev,_ZTv0_n28_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S2509C11D0Ev,_ZThn580_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S2509C11D1Ev,_ZTv0_n28_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1040_N8S2509C11D1Ev,_ZThn580_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D0Ev,_ZTv0_n24_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S2509C11D0Ev,_ZThn152_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2509C11D1Ev,_ZTv0_n24_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S2509C11D1Ev,_ZThn152_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D0Ev,_ZTv0_n20_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S2509C11D0Ev,_ZThn736_N8S2509C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N8S2509C11D0Ev,_ZThn572_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2509C11D1Ev,_ZTv0_n20_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N8S2509C11D1Ev,_ZThn736_N8S2509C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1016_N8S2509C11D1Ev,_ZThn572_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D0Ev,_ZTv0_n32_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S2509C11D0Ev,_ZThn316_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S2509C11D1Ev,_ZTv0_n32_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn560_N8S2509C11D1Ev,_ZThn316_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D0Ev,_ZTv0_n44_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C11D0Ev,_ZThn264_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S2509C11D1Ev,_ZTv0_n44_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S2509C11D1Ev,_ZThn264_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D0Ev,_ZTv0_n12_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S2509C11D0Ev,_ZThn124_N8S2509C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2509C11D1Ev,_ZTv0_n12_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S2509C11D1Ev,_ZThn124_N8S2509C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D0Ev,_ZTv0_n16_N8S2509C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S2509C11D0Ev,_ZThn192_N8S2509C11D0Ev),
  (VTBL_ENTRY)_ZN8S2509C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2509C11D1Ev,_ZTv0_n16_N8S2509C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S2509C11D1Ev,_ZThn192_N8S2509C11D1Ev),
  (VTBL_ENTRY)_ZN8S2509C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D0Ev,_ZTv0_n24_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C2D0Ev,_ZThn152_N7S2509C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C2D0Ev,_ZThn212_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C2D1Ev,_ZTv0_n24_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C2D1Ev,_ZThn152_N7S2509C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C2D1Ev,_ZThn212_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D0Ev,_ZTv0_n12_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D0Ev,_ZThn124_N7S2509C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn184_N7S2509C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C2D1Ev,_ZTv0_n12_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C2D1Ev,_ZThn124_N7S2509C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn184_N7S2509C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D0Ev,_ZTv0_n24_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C5D0Ev,_ZThn152_N7S2509C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C5D0Ev,_ZThn212_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C5D1Ev,_ZTv0_n24_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2509C5D1Ev,_ZThn152_N7S2509C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C5D1Ev,_ZThn212_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D0Ev,_ZTv0_n12_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D0Ev,_ZThn124_N7S2509C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn184_N7S2509C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C5D1Ev,_ZTv0_n12_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N7S2509C5D1Ev,_ZThn124_N7S2509C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn184_N7S2509C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D0Ev,_ZTv0_n16_N7S2509C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D0Ev,_ZThn192_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C5D0Ev,_ZThn252_N7S2509C5D0Ev),
  (VTBL_ENTRY)_ZN7S2509C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C5D1Ev,_ZTv0_n16_N7S2509C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C5D1Ev,_ZThn192_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C5D1Ev,_ZThn252_N7S2509C5D1Ev),
  (VTBL_ENTRY)_ZN7S2509C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D0Ev,_ZTv0_n16_N7S2509C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D0Ev,_ZThn192_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C2D0Ev,_ZThn252_N7S2509C2D0Ev),
  (VTBL_ENTRY)_ZN7S2509C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C2D1Ev,_ZTv0_n16_N7S2509C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C2D1Ev,_ZThn192_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C2D1Ev,_ZThn252_N7S2509C2D1Ev),
  (VTBL_ENTRY)_ZN7S2509C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S2509C1D0Ev,_ZTv0_n28_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N7S2509C1D0Ev,_ZThn640_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S2509C1D1Ev,_ZTv0_n28_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1152_N7S2509C1D1Ev,_ZThn640_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2509C1D0Ev,_ZTv0_n20_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N7S2509C1D0Ev,_ZThn796_N7S2509C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N7S2509C1D0Ev,_ZThn632_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2509C1D1Ev,_ZTv0_n20_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N7S2509C1D1Ev,_ZThn796_N7S2509C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1128_N7S2509C1D1Ev,_ZThn632_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S2509C1D0Ev,_ZTv0_n32_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S2509C1D0Ev,_ZThn376_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S2509C1D1Ev,_ZTv0_n32_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N7S2509C1D1Ev,_ZThn376_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S2509C1D0Ev,_ZTv0_n44_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S2509C1D0Ev,_ZThn324_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S2509C1D1Ev,_ZTv0_n44_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn576_N7S2509C1D1Ev,_ZThn324_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C1D0Ev,_ZTv0_n24_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C1D0Ev,_ZThn212_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2509C1D1Ev,_ZTv0_n24_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S2509C1D1Ev,_ZThn212_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C1D0Ev,_ZTv0_n12_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C1D0Ev,_ZThn184_N7S2509C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2509C1D1Ev,_ZTv0_n12_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N7S2509C1D1Ev,_ZThn184_N7S2509C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C1D0Ev,_ZTv0_n16_N7S2509C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1632_N7S2509C1D0Ev,_ZThn920_N7S2509C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C1D0Ev,_ZThn252_N7S2509C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C1D0Ev,_ZThn60_N7S2509C1D0Ev),
  (VTBL_ENTRY)_ZN7S2509C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2509C1D1Ev,_ZTv0_n16_N7S2509C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1632_N7S2509C1D1Ev,_ZThn920_N7S2509C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N7S2509C1D1Ev,_ZThn252_N7S2509C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S2509C1D1Ev,_ZThn60_N7S2509C1D1Ev),
  (VTBL_ENTRY)_ZN7S2509C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2509C1 = {  "S2509C1", // class name
  bases_S2509C1, 45,
  &(vtc_S2509C1[0]), // expected_vtbl_contents
  &(vtt_S2509C1[0]), // expected_vtt_contents
  ABISELECT(1648,928), // object size
  NSPAIRA(_ZTI7S2509C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S2509C1),162, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2509C1),181, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C6  {
  void *s381c6f0;
  char s381c6f1;
  int s381c6f2[4];
  void *s381c6f3;
  virtual  ~S381C6(); // _ZN6S381C6D1Ev
  virtual void  v9(); // _ZN6S381C62v9Ev
  virtual void  v10(); // _ZN6S381C63v10Ev
  virtual void  v11(); // _ZN6S381C63v11Ev
  virtual void  v12(); // _ZN6S381C63v12Ev
  S381C6(); // tgen
};
//SIG(-1 S381C6) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S381C6 ::~S381C6(){ note_dtor("S381C6", this);}
void  S381C6 ::v9(){vfunc_called(this, "_ZN6S381C62v9Ev");}
void  S381C6 ::v10(){vfunc_called(this, "_ZN6S381C63v10Ev");}
void  S381C6 ::v11(){vfunc_called(this, "_ZN6S381C63v11Ev");}
void  S381C6 ::v12(){vfunc_called(this, "_ZN6S381C63v12Ev");}
S381C6 ::S381C6(){ note_ctor("S381C6", this);} // tgen

static void Test_S381C6()
{
  extern Class_Descriptor cd_S381C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S381C6, buf);
    S381C6 *dp, &lv = *(dp=new (buf) S381C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S381C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C6)");
    check_field_offset(lv, s381c6f0, ABISELECT(8,4), "S381C6.s381c6f0");
    check_field_offset(lv, s381c6f1, ABISELECT(16,8), "S381C6.s381c6f1");
    check_field_offset(lv, s381c6f2, ABISELECT(20,12), "S381C6.s381c6f2");
    check_field_offset(lv, s381c6f3, ABISELECT(40,28), "S381C6.s381c6f3");
    test_class_info(&lv, &cd_S381C6);
    dp->~S381C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C6(Test_S381C6, "S381C6", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN6S381C6C1Ev();
extern void _ZN6S381C6D1Ev();
Name_Map name_map_S381C6[] = {
  NSPAIR(_ZN6S381C6C1Ev),
  NSPAIR(_ZN6S381C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S381C6[];
extern void _ZN6S381C6D1Ev();
extern void _ZN6S381C6D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
static  VTBL_ENTRY vtc_S381C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C6[0]),
  (VTBL_ENTRY)&_ZN6S381C6D1Ev,
  (VTBL_ENTRY)&_ZN6S381C6D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
};
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
Class_Descriptor cd_S381C6 = {  "S381C6", // class name
  0,0,//no base classes
  &(vtc_S381C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI6S381C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S381C6),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  S381C5  : S381C6 {
  int s381c5f0[3];
  virtual  ~S381C5(); // _ZN6S381C5D1Ev
  virtual void  v13(); // _ZN6S381C53v13Ev
  virtual void  v14(); // _ZN6S381C53v14Ev
  virtual void  v15(); // _ZN6S381C53v15Ev
  S381C5(); // tgen
};
//SIG(-1 S381C5) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S381C5 ::~S381C5(){ note_dtor("S381C5", this);}
void  S381C5 ::v13(){vfunc_called(this, "_ZN6S381C53v13Ev");}
void  S381C5 ::v14(){vfunc_called(this, "_ZN6S381C53v14Ev");}
void  S381C5 ::v15(){vfunc_called(this, "_ZN6S381C53v15Ev");}
S381C5 ::S381C5(){ note_ctor("S381C5", this);} // tgen

static void Test_S381C5()
{
  extern Class_Descriptor cd_S381C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S381C5, buf);
    S381C5 *dp, &lv = *(dp=new (buf) S381C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S381C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C5)");
    check_base_class_offset(lv, (S381C6*), 0, "S381C5");
    check_field_offset(lv, s381c5f0, ABISELECT(48,32), "S381C5.s381c5f0");
    test_class_info(&lv, &cd_S381C5);
    dp->~S381C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C5(Test_S381C5, "S381C5", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S381C5C1Ev();
extern void _ZN6S381C5D1Ev();
Name_Map name_map_S381C5[] = {
  NSPAIR(_ZN6S381C5C1Ev),
  NSPAIR(_ZN6S381C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
static Base_Class bases_S381C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C5[];
extern void _ZN6S381C5D1Ev();
extern void _ZN6S381C5D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
static  VTBL_ENTRY vtc_S381C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C5[0]),
  (VTBL_ENTRY)&_ZN6S381C5D1Ev,
  (VTBL_ENTRY)&_ZN6S381C5D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
};
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
Class_Descriptor cd_S381C5 = {  "S381C5", // class name
  bases_S381C5, 1,
  &(vtc_S381C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S381C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C5),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  S381C4  : S381C5 {
  int s381c4f0[3];
  virtual  ~S381C4(); // _ZN6S381C4D1Ev
  virtual void  v16(); // _ZN6S381C43v16Ev
  virtual void  v17(); // _ZN6S381C43v17Ev
  virtual void  v18(); // _ZN6S381C43v18Ev
  S381C4(); // tgen
};
//SIG(-1 S381C4) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S381C4 ::~S381C4(){ note_dtor("S381C4", this);}
void  S381C4 ::v16(){vfunc_called(this, "_ZN6S381C43v16Ev");}
void  S381C4 ::v17(){vfunc_called(this, "_ZN6S381C43v17Ev");}
void  S381C4 ::v18(){vfunc_called(this, "_ZN6S381C43v18Ev");}
S381C4 ::S381C4(){ note_ctor("S381C4", this);} // tgen

static void Test_S381C4()
{
  extern Class_Descriptor cd_S381C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S381C4, buf);
    S381C4 *dp, &lv = *(dp=new (buf) S381C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S381C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C4)");
    check_base_class_offset(lv, (S381C6*)(S381C5*), 0, "S381C4");
    check_base_class_offset(lv, (S381C5*), 0, "S381C4");
    check_field_offset(lv, s381c4f0, ABISELECT(60,44), "S381C4.s381c4f0");
    test_class_info(&lv, &cd_S381C4);
    dp->~S381C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C4(Test_S381C4, "S381C4", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN6S381C4C1Ev();
extern void _ZN6S381C4D1Ev();
Name_Map name_map_S381C4[] = {
  NSPAIR(_ZN6S381C4C1Ev),
  NSPAIR(_ZN6S381C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
static Base_Class bases_S381C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S381C4[];
extern void _ZN6S381C4D1Ev();
extern void _ZN6S381C4D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
static  VTBL_ENTRY vtc_S381C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C4[0]),
  (VTBL_ENTRY)&_ZN6S381C4D1Ev,
  (VTBL_ENTRY)&_ZN6S381C4D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
};
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
Class_Descriptor cd_S381C4 = {  "S381C4", // class name
  bases_S381C4, 2,
  &(vtc_S381C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI6S381C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C4),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  S381C3  : S381C4 {
  void *s381c3f0;
  virtual  ~S381C3(); // _ZN6S381C3D1Ev
  virtual void  v19(); // _ZN6S381C33v19Ev
  S381C3(); // tgen
};
//SIG(-1 S381C3) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fp}


 S381C3 ::~S381C3(){ note_dtor("S381C3", this);}
void  S381C3 ::v19(){vfunc_called(this, "_ZN6S381C33v19Ev");}
S381C3 ::S381C3(){ note_ctor("S381C3", this);} // tgen

static void Test_S381C3()
{
  extern Class_Descriptor cd_S381C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S381C3, buf);
    S381C3 *dp, &lv = *(dp=new (buf) S381C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S381C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C3)");
    check_base_class_offset(lv, (S381C6*)(S381C5*)(S381C4*), 0, "S381C3");
    check_base_class_offset(lv, (S381C5*)(S381C4*), 0, "S381C3");
    check_base_class_offset(lv, (S381C4*), 0, "S381C3");
    check_field_offset(lv, s381c3f0, ABISELECT(72,56), "S381C3.s381c3f0");
    test_class_info(&lv, &cd_S381C3);
    dp->~S381C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C3(Test_S381C3, "S381C3", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN6S381C3C1Ev();
extern void _ZN6S381C3D1Ev();
Name_Map name_map_S381C3[] = {
  NSPAIR(_ZN6S381C3C1Ev),
  NSPAIR(_ZN6S381C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
extern Class_Descriptor cd_S381C4;
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
static Base_Class bases_S381C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S381C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S381C3[];
extern void _ZN6S381C3D1Ev();
extern void _ZN6S381C3D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
extern void _ZN6S381C33v19Ev();
static  VTBL_ENTRY vtc_S381C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C3[0]),
  (VTBL_ENTRY)&_ZN6S381C3D1Ev,
  (VTBL_ENTRY)&_ZN6S381C3D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
  (VTBL_ENTRY)&_ZN6S381C33v19Ev,
};
extern VTBL_ENTRY _ZTI6S381C3[];
extern  VTBL_ENTRY _ZTV6S381C3[];
Class_Descriptor cd_S381C3 = {  "S381C3", // class name
  bases_S381C3, 3,
  &(vtc_S381C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI6S381C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C3),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C8_nt  {
  virtual  ~S381C8_nt(); // _ZN9S381C8_ntD1Ev
  virtual void  v26(); // _ZN9S381C8_nt3v26Ev
  S381C8_nt(); // tgen
};
//SIG(-1 S381C8_nt) C1{ vd v1}


 S381C8_nt ::~S381C8_nt(){ note_dtor("S381C8_nt", this);}
void  S381C8_nt ::v26(){vfunc_called(this, "_ZN9S381C8_nt3v26Ev");}
S381C8_nt ::S381C8_nt(){ note_ctor("S381C8_nt", this);} // tgen

//skip512 S381C8_nt

#else // __cplusplus

extern void _ZN9S381C8_ntC1Ev();
extern void _ZN9S381C8_ntD1Ev();
Name_Map name_map_S381C8_nt[] = {
  NSPAIR(_ZN9S381C8_ntC1Ev),
  NSPAIR(_ZN9S381C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S381C8_nt[];
extern void _ZN9S381C8_ntD1Ev();
extern void _ZN9S381C8_ntD0Ev();
extern void _ZN9S381C8_nt3v26Ev();
static  VTBL_ENTRY vtc_S381C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S381C8_nt[0]),
  (VTBL_ENTRY)&_ZN9S381C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S381C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S381C8_nt3v26Ev,
};
extern VTBL_ENTRY _ZTI9S381C8_nt[];
VTBL_ENTRY *P__ZTI9S381C8_nt = _ZTI9S381C8_nt; 
extern  VTBL_ENTRY _ZTV9S381C8_nt[];
Class_Descriptor cd_S381C8_nt = {  "S381C8_nt", // class name
  0,0,//no base classes
  &(vtc_S381C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S381C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S381C8_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  S381C7  : S381C8_nt {
  int s381c7f0[2];
  ::S1532C10_nt s381c7f1;
  int s381c7f2[11];
  virtual  ~S381C7(); // _ZN6S381C7D1Ev
  virtual void  v25(); // _ZN6S381C73v25Ev
  S381C7(); // tgen
};
//SIG(-1 S381C7) C1{ BC2{ vd v2} vd v1 Fi[2] FC3{ m Fi[4]} Fi[11]}


 S381C7 ::~S381C7(){ note_dtor("S381C7", this);}
void  S381C7 ::v25(){vfunc_called(this, "_ZN6S381C73v25Ev");}
S381C7 ::S381C7(){ note_ctor("S381C7", this);} // tgen

static void Test_S381C7()
{
  extern Class_Descriptor cd_S381C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,19)];
    init_test(&cd_S381C7, buf);
    S381C7 *dp, &lv = *(dp=new (buf) S381C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,72), "sizeof(S381C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C7)");
    check_base_class_offset(lv, (S381C8_nt*), 0, "S381C7");
    check_field_offset(lv, s381c7f0, ABISELECT(8,4), "S381C7.s381c7f0");
    check_field_offset(lv, s381c7f1, ABISELECT(16,12), "S381C7.s381c7f1");
    check_field_offset(lv, s381c7f2, ABISELECT(32,28), "S381C7.s381c7f2");
    test_class_info(&lv, &cd_S381C7);
    dp->~S381C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C7(Test_S381C7, "S381C7", ABISELECT(80,72));

#else // __cplusplus

extern void _ZN6S381C7C1Ev();
extern void _ZN6S381C7D1Ev();
Name_Map name_map_S381C7[] = {
  NSPAIR(_ZN6S381C7C1Ev),
  NSPAIR(_ZN6S381C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C8_nt;
extern VTBL_ENTRY _ZTI9S381C8_nt[];
extern  VTBL_ENTRY _ZTV9S381C8_nt[];
static Base_Class bases_S381C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S381C7[];
extern void _ZN6S381C7D1Ev();
extern void _ZN6S381C7D0Ev();
extern void _ZN9S381C8_nt3v26Ev();
extern void _ZN6S381C73v25Ev();
static  VTBL_ENTRY vtc_S381C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C7[0]),
  (VTBL_ENTRY)&_ZN6S381C7D1Ev,
  (VTBL_ENTRY)&_ZN6S381C7D0Ev,
  (VTBL_ENTRY)&_ZN9S381C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN6S381C73v25Ev,
};
extern VTBL_ENTRY _ZTI6S381C7[];
extern  VTBL_ENTRY _ZTV6S381C7[];
Class_Descriptor cd_S381C7 = {  "S381C7", // class name
  bases_S381C7, 1,
  &(vtc_S381C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,72), // object size
  NSPAIRA(_ZTI6S381C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C7),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  S381C11_nt  {
  __tsi64 s381c11f0;
  void  mf381c11(); // _ZN10S381C11_nt8mf381c11Ev
};
//SIG(-1 S381C11_nt) C1{ m FL}


void  S381C11_nt ::mf381c11(){}

//skip512 S381C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S381C2  : S381C3 {
  ::S381C7 s381c2f0;
  void *s381c2f1;
  ::S20760C13 s381c2f2;
  int s381c2f3[8];
  char s381c2f4;
  ::S381C11_nt s381c2f5;
  ::S381C11_nt s381c2f6;
  int s381c2f7[2];
  char s381c2f8[2];
  ::S381C11_nt s381c2f9;
  virtual  ~S381C2(); // _ZN6S381C2D1Ev
  virtual void  v20(); // _ZN6S381C23v20Ev
  virtual void  v21(); // _ZN6S381C23v21Ev
  virtual void  v22(); // _ZN6S381C23v22Ev
  virtual void  v23(); // _ZN6S381C23v23Ev
  virtual void  v24(); // _ZN6S381C23v24Ev
  S381C2(); // tgen
};
//SIG(-1 S381C2) C1{ BC2{ BC3{ BC4{ BC5{ vd v6 v7 v8 v9 Fp Fc Fi[4] Fp} vd v10 v11 v12 Fi[3]} vd v13 v14 v15 Fi[3]} vd v16 Fp} vd v1 v2 v3 v4 v5 FC6{ BC7{ vd v18} vd v17 Fi[2] FC8{ m Fi[4]} Fi[11]} Fp FC9{ vd m Fi[6]} Fi[8] Fc FC10{ m FL} FC10 Fi[2] Fc[2] FC10}


 S381C2 ::~S381C2(){ note_dtor("S381C2", this);}
void  S381C2 ::v20(){vfunc_called(this, "_ZN6S381C23v20Ev");}
void  S381C2 ::v21(){vfunc_called(this, "_ZN6S381C23v21Ev");}
void  S381C2 ::v22(){vfunc_called(this, "_ZN6S381C23v22Ev");}
void  S381C2 ::v23(){vfunc_called(this, "_ZN6S381C23v23Ev");}
void  S381C2 ::v24(){vfunc_called(this, "_ZN6S381C23v24Ev");}
S381C2 ::S381C2(){ note_ctor("S381C2", this);} // tgen

static void Test_S381C2()
{
  extern Class_Descriptor cd_S381C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,60)];
    init_test(&cd_S381C2, buf);
    S381C2 *dp, &lv = *(dp=new (buf) S381C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,236), "sizeof(S381C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C2)");
    check_base_class_offset(lv, (S381C6*)(S381C5*)(S381C4*)(S381C3*), 0, "S381C2");
    check_base_class_offset(lv, (S381C5*)(S381C4*)(S381C3*), 0, "S381C2");
    check_base_class_offset(lv, (S381C4*)(S381C3*), 0, "S381C2");
    check_base_class_offset(lv, (S381C3*), 0, "S381C2");
    check_field_offset(lv, s381c2f0, ABISELECT(80,60), "S381C2.s381c2f0");
    check_field_offset(lv, s381c2f1, ABISELECT(160,132), "S381C2.s381c2f1");
    check_field_offset(lv, s381c2f2, ABISELECT(168,136), "S381C2.s381c2f2");
    check_field_offset(lv, s381c2f3, ABISELECT(200,164), "S381C2.s381c2f3");
    check_field_offset(lv, s381c2f4, ABISELECT(232,196), "S381C2.s381c2f4");
    check_field_offset(lv, s381c2f5, ABISELECT(240,200), "S381C2.s381c2f5");
    check_field_offset(lv, s381c2f6, ABISELECT(248,208), "S381C2.s381c2f6");
    check_field_offset(lv, s381c2f7, ABISELECT(256,216), "S381C2.s381c2f7");
    check_field_offset(lv, s381c2f8, ABISELECT(264,224), "S381C2.s381c2f8");
    check_field_offset(lv, s381c2f9, ABISELECT(272,228), "S381C2.s381c2f9");
    test_class_info(&lv, &cd_S381C2);
    dp->~S381C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C2(Test_S381C2, "S381C2", ABISELECT(280,236));

#else // __cplusplus

extern void _ZN6S381C2C1Ev();
extern void _ZN6S381C2D1Ev();
Name_Map name_map_S381C2[] = {
  NSPAIR(_ZN6S381C2C1Ev),
  NSPAIR(_ZN6S381C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
extern Class_Descriptor cd_S381C4;
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
extern Class_Descriptor cd_S381C3;
extern VTBL_ENTRY _ZTI6S381C3[];
extern  VTBL_ENTRY _ZTV6S381C3[];
static Base_Class bases_S381C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S381C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S381C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S381C2[];
extern void _ZN6S381C2D1Ev();
extern void _ZN6S381C2D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
extern void _ZN6S381C33v19Ev();
extern void _ZN6S381C23v20Ev();
extern void _ZN6S381C23v21Ev();
extern void _ZN6S381C23v22Ev();
extern void _ZN6S381C23v23Ev();
extern void _ZN6S381C23v24Ev();
static  VTBL_ENTRY vtc_S381C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C2[0]),
  (VTBL_ENTRY)&_ZN6S381C2D1Ev,
  (VTBL_ENTRY)&_ZN6S381C2D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
  (VTBL_ENTRY)&_ZN6S381C33v19Ev,
  (VTBL_ENTRY)&_ZN6S381C23v20Ev,
  (VTBL_ENTRY)&_ZN6S381C23v21Ev,
  (VTBL_ENTRY)&_ZN6S381C23v22Ev,
  (VTBL_ENTRY)&_ZN6S381C23v23Ev,
  (VTBL_ENTRY)&_ZN6S381C23v24Ev,
};
extern VTBL_ENTRY _ZTI6S381C2[];
extern  VTBL_ENTRY _ZTV6S381C2[];
Class_Descriptor cd_S381C2 = {  "S381C2", // class name
  bases_S381C2, 4,
  &(vtc_S381C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,236), // object size
  NSPAIRA(_ZTI6S381C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C2),20, //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  S381C1  : S381C2 {
  ::S381C7 s381c1f0;
  int s381c1f1[7];
  char s381c1f2;
  ::S381C11_nt s381c1f3[8];
  ::S381C11_nt s381c1f4[8];
  ::S381C11_nt s381c1f5;
  virtual  ~S381C1(); // _ZN6S381C1D1Ev
  virtual void  v1(); // _ZN6S381C12v1Ev
  virtual void  v2(); // _ZN6S381C12v2Ev
  virtual void  v3(); // _ZN6S381C12v3Ev
  virtual void  v4(); // _ZN6S381C12v4Ev
  virtual void  v5(); // _ZN6S381C12v5Ev
  virtual void  v6(); // _ZN6S381C12v6Ev
  virtual void  v7(); // _ZN6S381C12v7Ev
  virtual void  v8(); // _ZN6S381C12v8Ev
  S381C1(); // tgen
};
//SIG(1 S381C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v9 v10 v11 v12 Fp Fc Fi[4] Fp} vd v13 v14 v15 Fi[3]} vd v16 v17 v18 Fi[3]} vd v19 Fp} vd v20 v21 v22 v23 v24 FC7{ BC8{ vd v26} vd v25 Fi[2] FC9{ m Fi[4]} Fi[11]} Fp FC10{ vd m Fi[6]} Fi[8] Fc FC11{ m FL} FC11 Fi[2] Fc[2] FC11} vd v1 v2 v3 v4 v5 v6 v7 v8 FC7 Fi[7] Fc FC11[8] FC11[8] FC11}


 S381C1 ::~S381C1(){ note_dtor("S381C1", this);}
void  S381C1 ::v1(){vfunc_called(this, "_ZN6S381C12v1Ev");}
void  S381C1 ::v2(){vfunc_called(this, "_ZN6S381C12v2Ev");}
void  S381C1 ::v3(){vfunc_called(this, "_ZN6S381C12v3Ev");}
void  S381C1 ::v4(){vfunc_called(this, "_ZN6S381C12v4Ev");}
void  S381C1 ::v5(){vfunc_called(this, "_ZN6S381C12v5Ev");}
void  S381C1 ::v6(){vfunc_called(this, "_ZN6S381C12v6Ev");}
void  S381C1 ::v7(){vfunc_called(this, "_ZN6S381C12v7Ev");}
void  S381C1 ::v8(){vfunc_called(this, "_ZN6S381C12v8Ev");}
S381C1 ::S381C1(){ note_ctor("S381C1", this);} // tgen

static void Test_S381C1()
{
  extern Class_Descriptor cd_S381C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,120)];
    init_test(&cd_S381C1, buf);
    S381C1 *dp, &lv = *(dp=new (buf) S381C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,476), "sizeof(S381C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S381C1)");
    check_base_class_offset(lv, (S381C6*)(S381C5*)(S381C4*)(S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C5*)(S381C4*)(S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C4*)(S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C3*)(S381C2*), 0, "S381C1");
    check_base_class_offset(lv, (S381C2*), 0, "S381C1");
    check_field_offset(lv, s381c1f0, ABISELECT(280,236), "S381C1.s381c1f0");
    check_field_offset(lv, s381c1f1, ABISELECT(360,308), "S381C1.s381c1f1");
    check_field_offset(lv, s381c1f2, ABISELECT(388,336), "S381C1.s381c1f2");
    check_field_offset(lv, s381c1f3, ABISELECT(392,340), "S381C1.s381c1f3");
    check_field_offset(lv, s381c1f4, ABISELECT(456,404), "S381C1.s381c1f4");
    check_field_offset(lv, s381c1f5, ABISELECT(520,468), "S381C1.s381c1f5");
    test_class_info(&lv, &cd_S381C1);
    dp->~S381C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS381C1(Test_S381C1, "S381C1", ABISELECT(528,476));

#else // __cplusplus

extern void _ZN6S381C1C1Ev();
extern void _ZN6S381C1D1Ev();
Name_Map name_map_S381C1[] = {
  NSPAIR(_ZN6S381C1C1Ev),
  NSPAIR(_ZN6S381C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S381C6;
extern VTBL_ENTRY _ZTI6S381C6[];
extern  VTBL_ENTRY _ZTV6S381C6[];
extern Class_Descriptor cd_S381C5;
extern VTBL_ENTRY _ZTI6S381C5[];
extern  VTBL_ENTRY _ZTV6S381C5[];
extern Class_Descriptor cd_S381C4;
extern VTBL_ENTRY _ZTI6S381C4[];
extern  VTBL_ENTRY _ZTV6S381C4[];
extern Class_Descriptor cd_S381C3;
extern VTBL_ENTRY _ZTI6S381C3[];
extern  VTBL_ENTRY _ZTV6S381C3[];
extern Class_Descriptor cd_S381C2;
extern VTBL_ENTRY _ZTI6S381C2[];
extern  VTBL_ENTRY _ZTV6S381C2[];
static Base_Class bases_S381C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S381C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S381C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S381C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S381C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S381C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S381C1[];
extern void _ZN6S381C1D1Ev();
extern void _ZN6S381C1D0Ev();
extern void _ZN6S381C62v9Ev();
extern void _ZN6S381C63v10Ev();
extern void _ZN6S381C63v11Ev();
extern void _ZN6S381C63v12Ev();
extern void _ZN6S381C53v13Ev();
extern void _ZN6S381C53v14Ev();
extern void _ZN6S381C53v15Ev();
extern void _ZN6S381C43v16Ev();
extern void _ZN6S381C43v17Ev();
extern void _ZN6S381C43v18Ev();
extern void _ZN6S381C33v19Ev();
extern void _ZN6S381C23v20Ev();
extern void _ZN6S381C23v21Ev();
extern void _ZN6S381C23v22Ev();
extern void _ZN6S381C23v23Ev();
extern void _ZN6S381C23v24Ev();
extern void _ZN6S381C12v1Ev();
extern void _ZN6S381C12v2Ev();
extern void _ZN6S381C12v3Ev();
extern void _ZN6S381C12v4Ev();
extern void _ZN6S381C12v5Ev();
extern void _ZN6S381C12v6Ev();
extern void _ZN6S381C12v7Ev();
extern void _ZN6S381C12v8Ev();
static  VTBL_ENTRY vtc_S381C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S381C1[0]),
  (VTBL_ENTRY)&_ZN6S381C1D1Ev,
  (VTBL_ENTRY)&_ZN6S381C1D0Ev,
  (VTBL_ENTRY)&_ZN6S381C62v9Ev,
  (VTBL_ENTRY)&_ZN6S381C63v10Ev,
  (VTBL_ENTRY)&_ZN6S381C63v11Ev,
  (VTBL_ENTRY)&_ZN6S381C63v12Ev,
  (VTBL_ENTRY)&_ZN6S381C53v13Ev,
  (VTBL_ENTRY)&_ZN6S381C53v14Ev,
  (VTBL_ENTRY)&_ZN6S381C53v15Ev,
  (VTBL_ENTRY)&_ZN6S381C43v16Ev,
  (VTBL_ENTRY)&_ZN6S381C43v17Ev,
  (VTBL_ENTRY)&_ZN6S381C43v18Ev,
  (VTBL_ENTRY)&_ZN6S381C33v19Ev,
  (VTBL_ENTRY)&_ZN6S381C23v20Ev,
  (VTBL_ENTRY)&_ZN6S381C23v21Ev,
  (VTBL_ENTRY)&_ZN6S381C23v22Ev,
  (VTBL_ENTRY)&_ZN6S381C23v23Ev,
  (VTBL_ENTRY)&_ZN6S381C23v24Ev,
  (VTBL_ENTRY)&_ZN6S381C12v1Ev,
  (VTBL_ENTRY)&_ZN6S381C12v2Ev,
  (VTBL_ENTRY)&_ZN6S381C12v3Ev,
  (VTBL_ENTRY)&_ZN6S381C12v4Ev,
  (VTBL_ENTRY)&_ZN6S381C12v5Ev,
  (VTBL_ENTRY)&_ZN6S381C12v6Ev,
  (VTBL_ENTRY)&_ZN6S381C12v7Ev,
  (VTBL_ENTRY)&_ZN6S381C12v8Ev,
};
extern VTBL_ENTRY _ZTI6S381C1[];
extern  VTBL_ENTRY _ZTV6S381C1[];
Class_Descriptor cd_S381C1 = {  "S381C1", // class name
  bases_S381C1, 5,
  &(vtc_S381C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(528,476), // object size
  NSPAIRA(_ZTI6S381C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S381C1),28, //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  S380C6  {
  void *s380c6f0;
  char s380c6f1;
  int s380c6f2[4];
  void *s380c6f3;
  virtual  ~S380C6(); // _ZN6S380C6D1Ev
  virtual void  v9(); // _ZN6S380C62v9Ev
  virtual void  v10(); // _ZN6S380C63v10Ev
  virtual void  v11(); // _ZN6S380C63v11Ev
  virtual void  v12(); // _ZN6S380C63v12Ev
  S380C6(); // tgen
};
//SIG(-1 S380C6) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S380C6 ::~S380C6(){ note_dtor("S380C6", this);}
void  S380C6 ::v9(){vfunc_called(this, "_ZN6S380C62v9Ev");}
void  S380C6 ::v10(){vfunc_called(this, "_ZN6S380C63v10Ev");}
void  S380C6 ::v11(){vfunc_called(this, "_ZN6S380C63v11Ev");}
void  S380C6 ::v12(){vfunc_called(this, "_ZN6S380C63v12Ev");}
S380C6 ::S380C6(){ note_ctor("S380C6", this);} // tgen

static void Test_S380C6()
{
  extern Class_Descriptor cd_S380C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S380C6, buf);
    S380C6 *dp, &lv = *(dp=new (buf) S380C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S380C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C6)");
    check_field_offset(lv, s380c6f0, ABISELECT(8,4), "S380C6.s380c6f0");
    check_field_offset(lv, s380c6f1, ABISELECT(16,8), "S380C6.s380c6f1");
    check_field_offset(lv, s380c6f2, ABISELECT(20,12), "S380C6.s380c6f2");
    check_field_offset(lv, s380c6f3, ABISELECT(40,28), "S380C6.s380c6f3");
    test_class_info(&lv, &cd_S380C6);
    dp->~S380C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C6(Test_S380C6, "S380C6", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN6S380C6C1Ev();
extern void _ZN6S380C6D1Ev();
Name_Map name_map_S380C6[] = {
  NSPAIR(_ZN6S380C6C1Ev),
  NSPAIR(_ZN6S380C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S380C6[];
extern void _ZN6S380C6D1Ev();
extern void _ZN6S380C6D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
static  VTBL_ENTRY vtc_S380C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C6[0]),
  (VTBL_ENTRY)&_ZN6S380C6D1Ev,
  (VTBL_ENTRY)&_ZN6S380C6D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
};
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
Class_Descriptor cd_S380C6 = {  "S380C6", // class name
  0,0,//no base classes
  &(vtc_S380C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI6S380C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S380C6),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  S380C5  : S380C6 {
  int s380c5f0[3];
  virtual  ~S380C5(); // _ZN6S380C5D1Ev
  virtual void  v13(); // _ZN6S380C53v13Ev
  virtual void  v14(); // _ZN6S380C53v14Ev
  virtual void  v15(); // _ZN6S380C53v15Ev
  S380C5(); // tgen
};
//SIG(-1 S380C5) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S380C5 ::~S380C5(){ note_dtor("S380C5", this);}
void  S380C5 ::v13(){vfunc_called(this, "_ZN6S380C53v13Ev");}
void  S380C5 ::v14(){vfunc_called(this, "_ZN6S380C53v14Ev");}
void  S380C5 ::v15(){vfunc_called(this, "_ZN6S380C53v15Ev");}
S380C5 ::S380C5(){ note_ctor("S380C5", this);} // tgen

static void Test_S380C5()
{
  extern Class_Descriptor cd_S380C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S380C5, buf);
    S380C5 *dp, &lv = *(dp=new (buf) S380C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S380C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C5)");
    check_base_class_offset(lv, (S380C6*), 0, "S380C5");
    check_field_offset(lv, s380c5f0, ABISELECT(48,32), "S380C5.s380c5f0");
    test_class_info(&lv, &cd_S380C5);
    dp->~S380C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C5(Test_S380C5, "S380C5", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN6S380C5C1Ev();
extern void _ZN6S380C5D1Ev();
Name_Map name_map_S380C5[] = {
  NSPAIR(_ZN6S380C5C1Ev),
  NSPAIR(_ZN6S380C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
static Base_Class bases_S380C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S380C5[];
extern void _ZN6S380C5D1Ev();
extern void _ZN6S380C5D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
static  VTBL_ENTRY vtc_S380C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C5[0]),
  (VTBL_ENTRY)&_ZN6S380C5D1Ev,
  (VTBL_ENTRY)&_ZN6S380C5D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
};
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
Class_Descriptor cd_S380C5 = {  "S380C5", // class name
  bases_S380C5, 1,
  &(vtc_S380C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI6S380C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C5),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  S380C4  : S380C5 {
  int s380c4f0[3];
  virtual  ~S380C4(); // _ZN6S380C4D1Ev
  virtual void  v16(); // _ZN6S380C43v16Ev
  virtual void  v17(); // _ZN6S380C43v17Ev
  virtual void  v18(); // _ZN6S380C43v18Ev
  S380C4(); // tgen
};
//SIG(-1 S380C4) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S380C4 ::~S380C4(){ note_dtor("S380C4", this);}
void  S380C4 ::v16(){vfunc_called(this, "_ZN6S380C43v16Ev");}
void  S380C4 ::v17(){vfunc_called(this, "_ZN6S380C43v17Ev");}
void  S380C4 ::v18(){vfunc_called(this, "_ZN6S380C43v18Ev");}
S380C4 ::S380C4(){ note_ctor("S380C4", this);} // tgen

static void Test_S380C4()
{
  extern Class_Descriptor cd_S380C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S380C4, buf);
    S380C4 *dp, &lv = *(dp=new (buf) S380C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S380C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C4)");
    check_base_class_offset(lv, (S380C6*)(S380C5*), 0, "S380C4");
    check_base_class_offset(lv, (S380C5*), 0, "S380C4");
    check_field_offset(lv, s380c4f0, ABISELECT(60,44), "S380C4.s380c4f0");
    test_class_info(&lv, &cd_S380C4);
    dp->~S380C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C4(Test_S380C4, "S380C4", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN6S380C4C1Ev();
extern void _ZN6S380C4D1Ev();
Name_Map name_map_S380C4[] = {
  NSPAIR(_ZN6S380C4C1Ev),
  NSPAIR(_ZN6S380C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
static Base_Class bases_S380C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S380C4[];
extern void _ZN6S380C4D1Ev();
extern void _ZN6S380C4D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
static  VTBL_ENTRY vtc_S380C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C4[0]),
  (VTBL_ENTRY)&_ZN6S380C4D1Ev,
  (VTBL_ENTRY)&_ZN6S380C4D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
};
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
Class_Descriptor cd_S380C4 = {  "S380C4", // class name
  bases_S380C4, 2,
  &(vtc_S380C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI6S380C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C4),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  S380C3  : S380C4 {
  void *s380c3f0;
  virtual  ~S380C3(); // _ZN6S380C3D1Ev
  virtual void  v19(); // _ZN6S380C33v19Ev
  S380C3(); // tgen
};
//SIG(-1 S380C3) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fp}


 S380C3 ::~S380C3(){ note_dtor("S380C3", this);}
void  S380C3 ::v19(){vfunc_called(this, "_ZN6S380C33v19Ev");}
S380C3 ::S380C3(){ note_ctor("S380C3", this);} // tgen

static void Test_S380C3()
{
  extern Class_Descriptor cd_S380C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S380C3, buf);
    S380C3 *dp, &lv = *(dp=new (buf) S380C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S380C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C3)");
    check_base_class_offset(lv, (S380C6*)(S380C5*)(S380C4*), 0, "S380C3");
    check_base_class_offset(lv, (S380C5*)(S380C4*), 0, "S380C3");
    check_base_class_offset(lv, (S380C4*), 0, "S380C3");
    check_field_offset(lv, s380c3f0, ABISELECT(72,56), "S380C3.s380c3f0");
    test_class_info(&lv, &cd_S380C3);
    dp->~S380C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C3(Test_S380C3, "S380C3", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN6S380C3C1Ev();
extern void _ZN6S380C3D1Ev();
Name_Map name_map_S380C3[] = {
  NSPAIR(_ZN6S380C3C1Ev),
  NSPAIR(_ZN6S380C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
extern Class_Descriptor cd_S380C4;
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
static Base_Class bases_S380C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S380C3[];
extern void _ZN6S380C3D1Ev();
extern void _ZN6S380C3D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
extern void _ZN6S380C33v19Ev();
static  VTBL_ENTRY vtc_S380C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C3[0]),
  (VTBL_ENTRY)&_ZN6S380C3D1Ev,
  (VTBL_ENTRY)&_ZN6S380C3D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
  (VTBL_ENTRY)&_ZN6S380C33v19Ev,
};
extern VTBL_ENTRY _ZTI6S380C3[];
extern  VTBL_ENTRY _ZTV6S380C3[];
Class_Descriptor cd_S380C3 = {  "S380C3", // class name
  bases_S380C3, 3,
  &(vtc_S380C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI6S380C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C3),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C11_nt  {
  long s380c11f0;
  void  mf380c11(); // _ZN10S380C11_nt8mf380c11Ev
};
//SIG(-1 S380C11_nt) C1{ m Fl}


void  S380C11_nt ::mf380c11(){}

//skip512 S380C11_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S380C2  : S380C3 {
  ::S381C7 s380c2f0;
  void *s380c2f1;
  ::S20760C13 s380c2f2;
  int s380c2f3[8];
  char s380c2f4;
  ::S380C11_nt s380c2f5;
  ::S380C11_nt s380c2f6;
  int s380c2f7[2];
  char s380c2f8[2];
  ::S380C11_nt s380c2f9;
  virtual  ~S380C2(); // _ZN6S380C2D1Ev
  virtual void  v20(); // _ZN6S380C23v20Ev
  virtual void  v21(); // _ZN6S380C23v21Ev
  virtual void  v22(); // _ZN6S380C23v22Ev
  virtual void  v23(); // _ZN6S380C23v23Ev
  virtual void  v24(); // _ZN6S380C23v24Ev
  S380C2(); // tgen
};
//SIG(-1 S380C2) C1{ BC2{ BC3{ BC4{ BC5{ vd v6 v7 v8 v9 Fp Fc Fi[4] Fp} vd v10 v11 v12 Fi[3]} vd v13 v14 v15 Fi[3]} vd v16 Fp} vd v1 v2 v3 v4 v5 FC6{ BC7{ vd v18} vd v17 Fi[2] FC8{ m Fi[4]} Fi[11]} Fp FC9{ vd m Fi[6]} Fi[8] Fc FC10{ m Fl} FC10 Fi[2] Fc[2] FC10}


 S380C2 ::~S380C2(){ note_dtor("S380C2", this);}
void  S380C2 ::v20(){vfunc_called(this, "_ZN6S380C23v20Ev");}
void  S380C2 ::v21(){vfunc_called(this, "_ZN6S380C23v21Ev");}
void  S380C2 ::v22(){vfunc_called(this, "_ZN6S380C23v22Ev");}
void  S380C2 ::v23(){vfunc_called(this, "_ZN6S380C23v23Ev");}
void  S380C2 ::v24(){vfunc_called(this, "_ZN6S380C23v24Ev");}
S380C2 ::S380C2(){ note_ctor("S380C2", this);} // tgen

static void Test_S380C2()
{
  extern Class_Descriptor cd_S380C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,57)];
    init_test(&cd_S380C2, buf);
    S380C2 *dp, &lv = *(dp=new (buf) S380C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,224), "sizeof(S380C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C2)");
    check_base_class_offset(lv, (S380C6*)(S380C5*)(S380C4*)(S380C3*), 0, "S380C2");
    check_base_class_offset(lv, (S380C5*)(S380C4*)(S380C3*), 0, "S380C2");
    check_base_class_offset(lv, (S380C4*)(S380C3*), 0, "S380C2");
    check_base_class_offset(lv, (S380C3*), 0, "S380C2");
    check_field_offset(lv, s380c2f0, ABISELECT(80,60), "S380C2.s380c2f0");
    check_field_offset(lv, s380c2f1, ABISELECT(160,132), "S380C2.s380c2f1");
    check_field_offset(lv, s380c2f2, ABISELECT(168,136), "S380C2.s380c2f2");
    check_field_offset(lv, s380c2f3, ABISELECT(200,164), "S380C2.s380c2f3");
    check_field_offset(lv, s380c2f4, ABISELECT(232,196), "S380C2.s380c2f4");
    check_field_offset(lv, s380c2f5, ABISELECT(240,200), "S380C2.s380c2f5");
    check_field_offset(lv, s380c2f6, ABISELECT(248,204), "S380C2.s380c2f6");
    check_field_offset(lv, s380c2f7, ABISELECT(256,208), "S380C2.s380c2f7");
    check_field_offset(lv, s380c2f8, ABISELECT(264,216), "S380C2.s380c2f8");
    check_field_offset(lv, s380c2f9, ABISELECT(272,220), "S380C2.s380c2f9");
    test_class_info(&lv, &cd_S380C2);
    dp->~S380C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C2(Test_S380C2, "S380C2", ABISELECT(280,224));

#else // __cplusplus

extern void _ZN6S380C2C1Ev();
extern void _ZN6S380C2D1Ev();
Name_Map name_map_S380C2[] = {
  NSPAIR(_ZN6S380C2C1Ev),
  NSPAIR(_ZN6S380C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
extern Class_Descriptor cd_S380C4;
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
extern Class_Descriptor cd_S380C3;
extern VTBL_ENTRY _ZTI6S380C3[];
extern  VTBL_ENTRY _ZTV6S380C3[];
static Base_Class bases_S380C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S380C2[];
extern void _ZN6S380C2D1Ev();
extern void _ZN6S380C2D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
extern void _ZN6S380C33v19Ev();
extern void _ZN6S380C23v20Ev();
extern void _ZN6S380C23v21Ev();
extern void _ZN6S380C23v22Ev();
extern void _ZN6S380C23v23Ev();
extern void _ZN6S380C23v24Ev();
static  VTBL_ENTRY vtc_S380C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C2[0]),
  (VTBL_ENTRY)&_ZN6S380C2D1Ev,
  (VTBL_ENTRY)&_ZN6S380C2D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
  (VTBL_ENTRY)&_ZN6S380C33v19Ev,
  (VTBL_ENTRY)&_ZN6S380C23v20Ev,
  (VTBL_ENTRY)&_ZN6S380C23v21Ev,
  (VTBL_ENTRY)&_ZN6S380C23v22Ev,
  (VTBL_ENTRY)&_ZN6S380C23v23Ev,
  (VTBL_ENTRY)&_ZN6S380C23v24Ev,
};
extern VTBL_ENTRY _ZTI6S380C2[];
extern  VTBL_ENTRY _ZTV6S380C2[];
Class_Descriptor cd_S380C2 = {  "S380C2", // class name
  bases_S380C2, 4,
  &(vtc_S380C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,224), // object size
  NSPAIRA(_ZTI6S380C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C2),20, //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  S380C1  : S380C2 {
  ::S381C7 s380c1f0;
  int s380c1f1[7];
  char s380c1f2;
  ::S380C11_nt s380c1f3[8];
  ::S380C11_nt s380c1f4[8];
  ::S380C11_nt s380c1f5;
  virtual  ~S380C1(); // _ZN6S380C1D1Ev
  virtual void  v1(); // _ZN6S380C12v1Ev
  virtual void  v2(); // _ZN6S380C12v2Ev
  virtual void  v3(); // _ZN6S380C12v3Ev
  virtual void  v4(); // _ZN6S380C12v4Ev
  virtual void  v5(); // _ZN6S380C12v5Ev
  virtual void  v6(); // _ZN6S380C12v6Ev
  virtual void  v7(); // _ZN6S380C12v7Ev
  virtual void  v8(); // _ZN6S380C12v8Ev
  S380C1(); // tgen
};
//SIG(1 S380C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v9 v10 v11 v12 Fp Fc Fi[4] Fp} vd v13 v14 v15 Fi[3]} vd v16 v17 v18 Fi[3]} vd v19 Fp} vd v20 v21 v22 v23 v24 FC7{ BC8{ vd v26} vd v25 Fi[2] FC9{ m Fi[4]} Fi[11]} Fp FC10{ vd m Fi[6]} Fi[8] Fc FC11{ m Fl} FC11 Fi[2] Fc[2] FC11} vd v1 v2 v3 v4 v5 v6 v7 v8 FC7 Fi[7] Fc FC11[8] FC11[8] FC11}


 S380C1 ::~S380C1(){ note_dtor("S380C1", this);}
void  S380C1 ::v1(){vfunc_called(this, "_ZN6S380C12v1Ev");}
void  S380C1 ::v2(){vfunc_called(this, "_ZN6S380C12v2Ev");}
void  S380C1 ::v3(){vfunc_called(this, "_ZN6S380C12v3Ev");}
void  S380C1 ::v4(){vfunc_called(this, "_ZN6S380C12v4Ev");}
void  S380C1 ::v5(){vfunc_called(this, "_ZN6S380C12v5Ev");}
void  S380C1 ::v6(){vfunc_called(this, "_ZN6S380C12v6Ev");}
void  S380C1 ::v7(){vfunc_called(this, "_ZN6S380C12v7Ev");}
void  S380C1 ::v8(){vfunc_called(this, "_ZN6S380C12v8Ev");}
S380C1 ::S380C1(){ note_ctor("S380C1", this);} // tgen

static void Test_S380C1()
{
  extern Class_Descriptor cd_S380C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,100)];
    init_test(&cd_S380C1, buf);
    S380C1 *dp, &lv = *(dp=new (buf) S380C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,396), "sizeof(S380C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S380C1)");
    check_base_class_offset(lv, (S380C6*)(S380C5*)(S380C4*)(S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C5*)(S380C4*)(S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C4*)(S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C3*)(S380C2*), 0, "S380C1");
    check_base_class_offset(lv, (S380C2*), 0, "S380C1");
    check_field_offset(lv, s380c1f0, ABISELECT(280,224), "S380C1.s380c1f0");
    check_field_offset(lv, s380c1f1, ABISELECT(360,296), "S380C1.s380c1f1");
    check_field_offset(lv, s380c1f2, ABISELECT(388,324), "S380C1.s380c1f2");
    check_field_offset(lv, s380c1f3, ABISELECT(392,328), "S380C1.s380c1f3");
    check_field_offset(lv, s380c1f4, ABISELECT(456,360), "S380C1.s380c1f4");
    check_field_offset(lv, s380c1f5, ABISELECT(520,392), "S380C1.s380c1f5");
    test_class_info(&lv, &cd_S380C1);
    dp->~S380C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS380C1(Test_S380C1, "S380C1", ABISELECT(528,396));

#else // __cplusplus

extern void _ZN6S380C1C1Ev();
extern void _ZN6S380C1D1Ev();
Name_Map name_map_S380C1[] = {
  NSPAIR(_ZN6S380C1C1Ev),
  NSPAIR(_ZN6S380C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S380C6;
extern VTBL_ENTRY _ZTI6S380C6[];
extern  VTBL_ENTRY _ZTV6S380C6[];
extern Class_Descriptor cd_S380C5;
extern VTBL_ENTRY _ZTI6S380C5[];
extern  VTBL_ENTRY _ZTV6S380C5[];
extern Class_Descriptor cd_S380C4;
extern VTBL_ENTRY _ZTI6S380C4[];
extern  VTBL_ENTRY _ZTV6S380C4[];
extern Class_Descriptor cd_S380C3;
extern VTBL_ENTRY _ZTI6S380C3[];
extern  VTBL_ENTRY _ZTV6S380C3[];
extern Class_Descriptor cd_S380C2;
extern VTBL_ENTRY _ZTI6S380C2[];
extern  VTBL_ENTRY _ZTV6S380C2[];
static Base_Class bases_S380C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S380C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S380C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S380C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S380C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S380C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S380C1[];
extern void _ZN6S380C1D1Ev();
extern void _ZN6S380C1D0Ev();
extern void _ZN6S380C62v9Ev();
extern void _ZN6S380C63v10Ev();
extern void _ZN6S380C63v11Ev();
extern void _ZN6S380C63v12Ev();
extern void _ZN6S380C53v13Ev();
extern void _ZN6S380C53v14Ev();
extern void _ZN6S380C53v15Ev();
extern void _ZN6S380C43v16Ev();
extern void _ZN6S380C43v17Ev();
extern void _ZN6S380C43v18Ev();
extern void _ZN6S380C33v19Ev();
extern void _ZN6S380C23v20Ev();
extern void _ZN6S380C23v21Ev();
extern void _ZN6S380C23v22Ev();
extern void _ZN6S380C23v23Ev();
extern void _ZN6S380C23v24Ev();
extern void _ZN6S380C12v1Ev();
extern void _ZN6S380C12v2Ev();
extern void _ZN6S380C12v3Ev();
extern void _ZN6S380C12v4Ev();
extern void _ZN6S380C12v5Ev();
extern void _ZN6S380C12v6Ev();
extern void _ZN6S380C12v7Ev();
extern void _ZN6S380C12v8Ev();
static  VTBL_ENTRY vtc_S380C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S380C1[0]),
  (VTBL_ENTRY)&_ZN6S380C1D1Ev,
  (VTBL_ENTRY)&_ZN6S380C1D0Ev,
  (VTBL_ENTRY)&_ZN6S380C62v9Ev,
  (VTBL_ENTRY)&_ZN6S380C63v10Ev,
  (VTBL_ENTRY)&_ZN6S380C63v11Ev,
  (VTBL_ENTRY)&_ZN6S380C63v12Ev,
  (VTBL_ENTRY)&_ZN6S380C53v13Ev,
  (VTBL_ENTRY)&_ZN6S380C53v14Ev,
  (VTBL_ENTRY)&_ZN6S380C53v15Ev,
  (VTBL_ENTRY)&_ZN6S380C43v16Ev,
  (VTBL_ENTRY)&_ZN6S380C43v17Ev,
  (VTBL_ENTRY)&_ZN6S380C43v18Ev,
  (VTBL_ENTRY)&_ZN6S380C33v19Ev,
  (VTBL_ENTRY)&_ZN6S380C23v20Ev,
  (VTBL_ENTRY)&_ZN6S380C23v21Ev,
  (VTBL_ENTRY)&_ZN6S380C23v22Ev,
  (VTBL_ENTRY)&_ZN6S380C23v23Ev,
  (VTBL_ENTRY)&_ZN6S380C23v24Ev,
  (VTBL_ENTRY)&_ZN6S380C12v1Ev,
  (VTBL_ENTRY)&_ZN6S380C12v2Ev,
  (VTBL_ENTRY)&_ZN6S380C12v3Ev,
  (VTBL_ENTRY)&_ZN6S380C12v4Ev,
  (VTBL_ENTRY)&_ZN6S380C12v5Ev,
  (VTBL_ENTRY)&_ZN6S380C12v6Ev,
  (VTBL_ENTRY)&_ZN6S380C12v7Ev,
  (VTBL_ENTRY)&_ZN6S380C12v8Ev,
};
extern VTBL_ENTRY _ZTI6S380C1[];
extern  VTBL_ENTRY _ZTV6S380C1[];
Class_Descriptor cd_S380C1 = {  "S380C1", // class name
  bases_S380C1, 5,
  &(vtc_S380C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(528,396), // object size
  NSPAIRA(_ZTI6S380C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S380C1),28, //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  S4203C3  {
  char s4203c3f0;
  int s4203c3f1;
  void *s4203c3f2[3];
  char s4203c3f3[3];
  ::S4228C19_nt s4203c3f4;
  char s4203c3f5;
  void *s4203c3f6;
  int s4203c3f7[2];
  virtual  ~S4203C3(); // _ZN7S4203C3D1Ev
  virtual void  v10(); // _ZN7S4203C33v10Ev
  virtual void  v11(); // _ZN7S4203C33v11Ev
  virtual void  v12(); // _ZN7S4203C33v12Ev
  virtual void  v13(); // _ZN7S4203C33v13Ev
  virtual void  v14(); // _ZN7S4203C33v14Ev
  virtual void  v15(); // _ZN7S4203C33v15Ev
  virtual void  v16(); // _ZN7S4203C33v16Ev
  virtual void  v17(); // _ZN7S4203C33v17Ev
  virtual void  v18(); // _ZN7S4203C33v18Ev
  virtual void  v19(); // _ZN7S4203C33v19Ev
  virtual void  v20(); // _ZN7S4203C33v20Ev
  virtual void  v21(); // _ZN7S4203C33v21Ev
  virtual void  v22(); // _ZN7S4203C33v22Ev
  virtual void  v23(); // _ZN7S4203C33v23Ev
  S4203C3(); // tgen
};
//SIG(-1 S4203C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S4203C3 ::~S4203C3(){ note_dtor("S4203C3", this);}
void  S4203C3 ::v10(){vfunc_called(this, "_ZN7S4203C33v10Ev");}
void  S4203C3 ::v11(){vfunc_called(this, "_ZN7S4203C33v11Ev");}
void  S4203C3 ::v12(){vfunc_called(this, "_ZN7S4203C33v12Ev");}
void  S4203C3 ::v13(){vfunc_called(this, "_ZN7S4203C33v13Ev");}
void  S4203C3 ::v14(){vfunc_called(this, "_ZN7S4203C33v14Ev");}
void  S4203C3 ::v15(){vfunc_called(this, "_ZN7S4203C33v15Ev");}
void  S4203C3 ::v16(){vfunc_called(this, "_ZN7S4203C33v16Ev");}
void  S4203C3 ::v17(){vfunc_called(this, "_ZN7S4203C33v17Ev");}
void  S4203C3 ::v18(){vfunc_called(this, "_ZN7S4203C33v18Ev");}
void  S4203C3 ::v19(){vfunc_called(this, "_ZN7S4203C33v19Ev");}
void  S4203C3 ::v20(){vfunc_called(this, "_ZN7S4203C33v20Ev");}
void  S4203C3 ::v21(){vfunc_called(this, "_ZN7S4203C33v21Ev");}
void  S4203C3 ::v22(){vfunc_called(this, "_ZN7S4203C33v22Ev");}
void  S4203C3 ::v23(){vfunc_called(this, "_ZN7S4203C33v23Ev");}
S4203C3 ::S4203C3(){ note_ctor("S4203C3", this);} // tgen

static void Test_S4203C3()
{
  extern Class_Descriptor cd_S4203C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S4203C3, buf);
    S4203C3 *dp, &lv = *(dp=new (buf) S4203C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S4203C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4203C3)");
    check_field_offset(lv, s4203c3f0, ABISELECT(8,4), "S4203C3.s4203c3f0");
    check_field_offset(lv, s4203c3f1, ABISELECT(12,8), "S4203C3.s4203c3f1");
    check_field_offset(lv, s4203c3f2, ABISELECT(16,12), "S4203C3.s4203c3f2");
    check_field_offset(lv, s4203c3f3, ABISELECT(40,24), "S4203C3.s4203c3f3");
    check_field_offset(lv, s4203c3f4, ABISELECT(48,28), "S4203C3.s4203c3f4");
    check_field_offset(lv, s4203c3f5, ABISELECT(64,40), "S4203C3.s4203c3f5");
    check_field_offset(lv, s4203c3f6, ABISELECT(72,44), "S4203C3.s4203c3f6");
    check_field_offset(lv, s4203c3f7, ABISELECT(80,48), "S4203C3.s4203c3f7");
    test_class_info(&lv, &cd_S4203C3);
    dp->~S4203C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4203C3(Test_S4203C3, "S4203C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S4203C3C1Ev();
extern void _ZN7S4203C3D1Ev();
Name_Map name_map_S4203C3[] = {
  NSPAIR(_ZN7S4203C3C1Ev),
  NSPAIR(_ZN7S4203C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4203C3[];
extern void _ZN7S4203C3D1Ev();
extern void _ZN7S4203C3D0Ev();
extern void _ZN7S4203C33v10Ev();
extern void _ZN7S4203C33v11Ev();
extern void _ZN7S4203C33v12Ev();
extern void _ZN7S4203C33v13Ev();
extern void _ZN7S4203C33v14Ev();
extern void _ZN7S4203C33v15Ev();
extern void _ZN7S4203C33v16Ev();
extern void _ZN7S4203C33v17Ev();
extern void _ZN7S4203C33v18Ev();
extern void _ZN7S4203C33v19Ev();
extern void _ZN7S4203C33v20Ev();
extern void _ZN7S4203C33v21Ev();
extern void _ZN7S4203C33v22Ev();
extern void _ZN7S4203C33v23Ev();
static  VTBL_ENTRY vtc_S4203C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4203C3[0]),
  (VTBL_ENTRY)&_ZN7S4203C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4203C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v23Ev,
};
extern VTBL_ENTRY _ZTI7S4203C3[];
extern  VTBL_ENTRY _ZTV7S4203C3[];
Class_Descriptor cd_S4203C3 = {  "S4203C3", // class name
  0,0,//no base classes
  &(vtc_S4203C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S4203C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4203C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4203C2  : S4203C3 {
  char s4203c2f0;
  void *s4203c2f1[2];
  virtual  ~S4203C2(); // _ZN7S4203C2D1Ev
  virtual void  v24(); // _ZN7S4203C23v24Ev
  S4203C2(); // tgen
};
//SIG(-1 S4203C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S4203C2 ::~S4203C2(){ note_dtor("S4203C2", this);}
void  S4203C2 ::v24(){vfunc_called(this, "_ZN7S4203C23v24Ev");}
S4203C2 ::S4203C2(){ note_ctor("S4203C2", this);} // tgen

static void Test_S4203C2()
{
  extern Class_Descriptor cd_S4203C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S4203C2, buf);
    S4203C2 *dp, &lv = *(dp=new (buf) S4203C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S4203C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4203C2)");
    check_base_class_offset(lv, (S4203C3*), 0, "S4203C2");
    check_field_offset(lv, s4203c2f0, ABISELECT(88,56), "S4203C2.s4203c2f0");
    check_field_offset(lv, s4203c2f1, ABISELECT(96,60), "S4203C2.s4203c2f1");
    test_class_info(&lv, &cd_S4203C2);
    dp->~S4203C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4203C2(Test_S4203C2, "S4203C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S4203C2C1Ev();
extern void _ZN7S4203C2D1Ev();
Name_Map name_map_S4203C2[] = {
  NSPAIR(_ZN7S4203C2C1Ev),
  NSPAIR(_ZN7S4203C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4203C3;
extern VTBL_ENTRY _ZTI7S4203C3[];
extern  VTBL_ENTRY _ZTV7S4203C3[];
static Base_Class bases_S4203C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4203C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4203C2[];
extern void _ZN7S4203C2D1Ev();
extern void _ZN7S4203C2D0Ev();
extern void _ZN7S4203C33v10Ev();
extern void _ZN7S4203C33v11Ev();
extern void _ZN7S4203C33v12Ev();
extern void _ZN7S4203C33v13Ev();
extern void _ZN7S4203C33v14Ev();
extern void _ZN7S4203C33v15Ev();
extern void _ZN7S4203C33v16Ev();
extern void _ZN7S4203C33v17Ev();
extern void _ZN7S4203C33v18Ev();
extern void _ZN7S4203C33v19Ev();
extern void _ZN7S4203C33v20Ev();
extern void _ZN7S4203C33v21Ev();
extern void _ZN7S4203C33v22Ev();
extern void _ZN7S4203C33v23Ev();
extern void _ZN7S4203C23v24Ev();
static  VTBL_ENTRY vtc_S4203C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4203C2[0]),
  (VTBL_ENTRY)&_ZN7S4203C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4203C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4203C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S4203C2[];
extern  VTBL_ENTRY _ZTV7S4203C2[];
Class_Descriptor cd_S4203C2 = {  "S4203C2", // class name
  bases_S4203C2, 1,
  &(vtc_S4203C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S4203C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4203C2),19, //virtual function table var
  2, // 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  S4203C1  : S4203C2 {
  void *s4203c1f0[10];
  int s4203c1f1;
  ::S4228C19_nt s4203c1f2;
  char s4203c1f3[2];
  ::S4228C19_nt s4203c1f4;
  ::S4228C19_nt s4203c1f5;
  ::S4228C44 s4203c1f6;
  char s4203c1f7[2];
  int s4203c1f8;
  ::S4228C19_nt s4203c1f9;
  char s4203c1f10;
  ::S4228C19_nt s4203c1f11;
  ::S4228C19_nt s4203c1f12;
  char s4203c1f13;
  ::S4228C19_nt s4203c1f14;
  ::S4228C19_nt s4203c1f15;
  ::S4228C19_nt s4203c1f16;
  ::S4228C19_nt s4203c1f17;
  ::S4228C19_nt s4203c1f18;
  ::S4228C19_nt s4203c1f19;
  char s4203c1f20;
  int s4203c1f21[2];
  char s4203c1f22[3];
  virtual  ~S4203C1(); // _ZN7S4203C1D1Ev
  virtual void  v1(); // _ZN7S4203C12v1Ev
  virtual void  v2(); // _ZN7S4203C12v2Ev
  virtual void  v3(); // _ZN7S4203C12v3Ev
  virtual void  v4(); // _ZN7S4203C12v4Ev
  virtual void  v5(); // _ZN7S4203C12v5Ev
  virtual void  v6(); // _ZN7S4203C12v6Ev
  virtual void  v7(); // _ZN7S4203C12v7Ev
  virtual void  v8(); // _ZN7S4203C12v8Ev
  virtual void  v9(); // _ZN7S4203C12v9Ev
  S4203C1(); // tgen
};
//SIG(1 S4203C1) C1{ BC2{ BC3{ vd v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v24 Fc Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[10] Fi FC4 Fc[2] FC4 FC4 FC6{ m Fp Fi[2] FC7{ m}} Fc[2] Fi FC4 Fc FC4 FC4 Fc FC4 FC4 FC4 FC4 FC4 FC4 Fc Fi[2] Fc[3]}


 S4203C1 ::~S4203C1(){ note_dtor("S4203C1", this);}
void  S4203C1 ::v1(){vfunc_called(this, "_ZN7S4203C12v1Ev");}
void  S4203C1 ::v2(){vfunc_called(this, "_ZN7S4203C12v2Ev");}
void  S4203C1 ::v3(){vfunc_called(this, "_ZN7S4203C12v3Ev");}
void  S4203C1 ::v4(){vfunc_called(this, "_ZN7S4203C12v4Ev");}
void  S4203C1 ::v5(){vfunc_called(this, "_ZN7S4203C12v5Ev");}
void  S4203C1 ::v6(){vfunc_called(this, "_ZN7S4203C12v6Ev");}
void  S4203C1 ::v7(){vfunc_called(this, "_ZN7S4203C12v7Ev");}
void  S4203C1 ::v8(){vfunc_called(this, "_ZN7S4203C12v8Ev");}
void  S4203C1 ::v9(){vfunc_called(this, "_ZN7S4203C12v9Ev");}
S4203C1 ::S4203C1(){ note_ctor("S4203C1", this);} // tgen

static void Test_S4203C1()
{
  extern Class_Descriptor cd_S4203C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(59,78)];
    init_test(&cd_S4203C1, buf);
    S4203C1 *dp, &lv = *(dp=new (buf) S4203C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S4203C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4203C1)");
    check_base_class_offset(lv, (S4203C3*)(S4203C2*), 0, "S4203C1");
    check_base_class_offset(lv, (S4203C2*), 0, "S4203C1");
    check_field_offset(lv, s4203c1f0, ABISELECT(112,68), "S4203C1.s4203c1f0");
    check_field_offset(lv, s4203c1f1, ABISELECT(192,108), "S4203C1.s4203c1f1");
    check_field_offset(lv, s4203c1f2, ABISELECT(200,112), "S4203C1.s4203c1f2");
    check_field_offset(lv, s4203c1f3, ABISELECT(216,124), "S4203C1.s4203c1f3");
    check_field_offset(lv, s4203c1f4, ABISELECT(224,128), "S4203C1.s4203c1f4");
    check_field_offset(lv, s4203c1f5, ABISELECT(240,140), "S4203C1.s4203c1f5");
    check_field_offset(lv, s4203c1f6, ABISELECT(256,152), "S4203C1.s4203c1f6");
    check_field_offset(lv, s4203c1f7, ABISELECT(280,168), "S4203C1.s4203c1f7");
    check_field_offset(lv, s4203c1f8, ABISELECT(284,172), "S4203C1.s4203c1f8");
    check_field_offset(lv, s4203c1f9, ABISELECT(288,176), "S4203C1.s4203c1f9");
    check_field_offset(lv, s4203c1f10, ABISELECT(304,188), "S4203C1.s4203c1f10");
    check_field_offset(lv, s4203c1f11, ABISELECT(312,192), "S4203C1.s4203c1f11");
    check_field_offset(lv, s4203c1f12, ABISELECT(328,204), "S4203C1.s4203c1f12");
    check_field_offset(lv, s4203c1f13, ABISELECT(344,216), "S4203C1.s4203c1f13");
    check_field_offset(lv, s4203c1f14, ABISELECT(352,220), "S4203C1.s4203c1f14");
    check_field_offset(lv, s4203c1f15, ABISELECT(368,232), "S4203C1.s4203c1f15");
    check_field_offset(lv, s4203c1f16, ABISELECT(384,244), "S4203C1.s4203c1f16");
    check_field_offset(lv, s4203c1f17, ABISELECT(400,256), "S4203C1.s4203c1f17");
    check_field_offset(lv, s4203c1f18, ABISELECT(416,268), "S4203C1.s4203c1f18");
    check_field_offset(lv, s4203c1f19, ABISELECT(432,280), "S4203C1.s4203c1f19");
    check_field_offset(lv, s4203c1f20, ABISELECT(448,292), "S4203C1.s4203c1f20");
    check_field_offset(lv, s4203c1f21, ABISELECT(452,296), "S4203C1.s4203c1f21");
    check_field_offset(lv, s4203c1f22, ABISELECT(460,304), "S4203C1.s4203c1f22");
    test_class_info(&lv, &cd_S4203C1);
    dp->~S4203C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4203C1(Test_S4203C1, "S4203C1", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S4203C1C1Ev();
extern void _ZN7S4203C1D1Ev();
Name_Map name_map_S4203C1[] = {
  NSPAIR(_ZN7S4203C1C1Ev),
  NSPAIR(_ZN7S4203C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4203C3;
extern VTBL_ENTRY _ZTI7S4203C3[];
extern  VTBL_ENTRY _ZTV7S4203C3[];
extern Class_Descriptor cd_S4203C2;
extern VTBL_ENTRY _ZTI7S4203C2[];
extern  VTBL_ENTRY _ZTV7S4203C2[];
static Base_Class bases_S4203C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4203C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4203C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4203C1[];
extern void _ZN7S4203C1D1Ev();
extern void _ZN7S4203C1D0Ev();
extern void _ZN7S4203C33v10Ev();
extern void _ZN7S4203C33v11Ev();
extern void _ZN7S4203C33v12Ev();
extern void _ZN7S4203C33v13Ev();
extern void _ZN7S4203C33v14Ev();
extern void _ZN7S4203C33v15Ev();
extern void _ZN7S4203C33v16Ev();
extern void _ZN7S4203C33v17Ev();
extern void _ZN7S4203C33v18Ev();
extern void _ZN7S4203C33v19Ev();
extern void _ZN7S4203C33v20Ev();
extern void _ZN7S4203C33v21Ev();
extern void _ZN7S4203C33v22Ev();
extern void _ZN7S4203C33v23Ev();
extern void _ZN7S4203C23v24Ev();
extern void _ZN7S4203C12v1Ev();
extern void _ZN7S4203C12v2Ev();
extern void _ZN7S4203C12v3Ev();
extern void _ZN7S4203C12v4Ev();
extern void _ZN7S4203C12v5Ev();
extern void _ZN7S4203C12v6Ev();
extern void _ZN7S4203C12v7Ev();
extern void _ZN7S4203C12v8Ev();
extern void _ZN7S4203C12v9Ev();
static  VTBL_ENTRY vtc_S4203C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4203C1[0]),
  (VTBL_ENTRY)&_ZN7S4203C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4203C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4203C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4203C23v24Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4203C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S4203C1[];
extern  VTBL_ENTRY _ZTV7S4203C1[];
Class_Descriptor cd_S4203C1 = {  "S4203C1", // class name
  bases_S4203C1, 2,
  &(vtc_S4203C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S4203C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4203C1),28, //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  S7169C2_nt  {
  void *s7169c2f0;
  ::S4228C24 s7169c2f1;
  virtual  ~S7169C2_nt(); // _ZN10S7169C2_ntD1Ev
  virtual void  v8(); // _ZN10S7169C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7169C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7169C2_nt3v10Ev
  virtual void  v11(); // _ZN10S7169C2_nt3v11Ev
  virtual void  v12(); // _ZN10S7169C2_nt3v12Ev
  virtual void  v13(); // _ZN10S7169C2_nt3v13Ev
  virtual void  v14(); // _ZN10S7169C2_nt3v14Ev
  virtual void  v15(); // _ZN10S7169C2_nt3v15Ev
  virtual void  v16(); // _ZN10S7169C2_nt3v16Ev
  virtual void  v17(); // _ZN10S7169C2_nt3v17Ev
  virtual void  v18(); // _ZN10S7169C2_nt3v18Ev
  virtual void  v19(); // _ZN10S7169C2_nt3v19Ev
  virtual void  v20(); // _ZN10S7169C2_nt3v20Ev
  virtual void  v21(); // _ZN10S7169C2_nt3v21Ev
  virtual void  v22(); // _ZN10S7169C2_nt3v22Ev
  S7169C2_nt(); // tgen
};
//SIG(-1 S7169C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp FC2{ BC3{ m Fp Fi FC4{ m} FC5{ m}}}}


 S7169C2_nt ::~S7169C2_nt(){ note_dtor("S7169C2_nt", this);}
void  S7169C2_nt ::v8(){vfunc_called(this, "_ZN10S7169C2_nt2v8Ev");}
void  S7169C2_nt ::v9(){vfunc_called(this, "_ZN10S7169C2_nt2v9Ev");}
void  S7169C2_nt ::v10(){vfunc_called(this, "_ZN10S7169C2_nt3v10Ev");}
void  S7169C2_nt ::v11(){vfunc_called(this, "_ZN10S7169C2_nt3v11Ev");}
void  S7169C2_nt ::v12(){vfunc_called(this, "_ZN10S7169C2_nt3v12Ev");}
void  S7169C2_nt ::v13(){vfunc_called(this, "_ZN10S7169C2_nt3v13Ev");}
void  S7169C2_nt ::v14(){vfunc_called(this, "_ZN10S7169C2_nt3v14Ev");}
void  S7169C2_nt ::v15(){vfunc_called(this, "_ZN10S7169C2_nt3v15Ev");}
void  S7169C2_nt ::v16(){vfunc_called(this, "_ZN10S7169C2_nt3v16Ev");}
void  S7169C2_nt ::v17(){vfunc_called(this, "_ZN10S7169C2_nt3v17Ev");}
void  S7169C2_nt ::v18(){vfunc_called(this, "_ZN10S7169C2_nt3v18Ev");}
void  S7169C2_nt ::v19(){vfunc_called(this, "_ZN10S7169C2_nt3v19Ev");}
void  S7169C2_nt ::v20(){vfunc_called(this, "_ZN10S7169C2_nt3v20Ev");}
void  S7169C2_nt ::v21(){vfunc_called(this, "_ZN10S7169C2_nt3v21Ev");}
void  S7169C2_nt ::v22(){vfunc_called(this, "_ZN10S7169C2_nt3v22Ev");}
S7169C2_nt ::S7169C2_nt(){ note_ctor("S7169C2_nt", this);} // tgen

//skip512 S7169C2_nt

#else // __cplusplus

extern void _ZN10S7169C2_ntC1Ev();
extern void _ZN10S7169C2_ntD1Ev();
Name_Map name_map_S7169C2_nt[] = {
  NSPAIR(_ZN10S7169C2_ntC1Ev),
  NSPAIR(_ZN10S7169C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7169C2_nt[];
extern void _ZN10S7169C2_ntD1Ev();
extern void _ZN10S7169C2_ntD0Ev();
extern void _ZN10S7169C2_nt2v8Ev();
extern void _ZN10S7169C2_nt2v9Ev();
extern void _ZN10S7169C2_nt3v10Ev();
extern void _ZN10S7169C2_nt3v11Ev();
extern void _ZN10S7169C2_nt3v12Ev();
extern void _ZN10S7169C2_nt3v13Ev();
extern void _ZN10S7169C2_nt3v14Ev();
extern void _ZN10S7169C2_nt3v15Ev();
extern void _ZN10S7169C2_nt3v16Ev();
extern void _ZN10S7169C2_nt3v17Ev();
extern void _ZN10S7169C2_nt3v18Ev();
extern void _ZN10S7169C2_nt3v19Ev();
extern void _ZN10S7169C2_nt3v20Ev();
extern void _ZN10S7169C2_nt3v21Ev();
extern void _ZN10S7169C2_nt3v22Ev();
static  VTBL_ENTRY vtc_S7169C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S7169C2_nt[];
VTBL_ENTRY *P__ZTI10S7169C2_nt = _ZTI10S7169C2_nt; 
extern  VTBL_ENTRY _ZTV10S7169C2_nt[];
Class_Descriptor cd_S7169C2_nt = {  "S7169C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7169C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S7169C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7169C2_nt),19, //virtual function table var
  2, // 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  S7169C9_nt  {
  virtual  ~S7169C9_nt(); // _ZN10S7169C9_ntD1Ev
  virtual void  v23(); // _ZN10S7169C9_nt3v23Ev
  virtual void  v24(); // _ZN10S7169C9_nt3v24Ev
  virtual void  v25(); // _ZN10S7169C9_nt3v25Ev
  S7169C9_nt(); // tgen
};
//SIG(-1 S7169C9_nt) C1{ vd v1 v2 v3}


 S7169C9_nt ::~S7169C9_nt(){ note_dtor("S7169C9_nt", this);}
void  S7169C9_nt ::v23(){vfunc_called(this, "_ZN10S7169C9_nt3v23Ev");}
void  S7169C9_nt ::v24(){vfunc_called(this, "_ZN10S7169C9_nt3v24Ev");}
void  S7169C9_nt ::v25(){vfunc_called(this, "_ZN10S7169C9_nt3v25Ev");}
S7169C9_nt ::S7169C9_nt(){ note_ctor("S7169C9_nt", this);} // tgen

//skip512 S7169C9_nt

#else // __cplusplus

extern void _ZN10S7169C9_ntC1Ev();
extern void _ZN10S7169C9_ntD1Ev();
Name_Map name_map_S7169C9_nt[] = {
  NSPAIR(_ZN10S7169C9_ntC1Ev),
  NSPAIR(_ZN10S7169C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern void _ZN10S7169C9_ntD1Ev();
extern void _ZN10S7169C9_ntD0Ev();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
static  VTBL_ENTRY vtc_S7169C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C9_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
};
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
VTBL_ENTRY *P__ZTI10S7169C9_nt = _ZTI10S7169C9_nt; 
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
Class_Descriptor cd_S7169C9_nt = {  "S7169C9_nt", // class name
  0,0,//no base classes
  &(vtc_S7169C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7169C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7169C9_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  S7169C8_nt  : S7169C9_nt {
  virtual  ~S7169C8_nt(); // _ZN10S7169C8_ntD1Ev
  virtual void  v26(); // _ZN10S7169C8_nt3v26Ev
  virtual void  v27(); // _ZN10S7169C8_nt3v27Ev
  virtual void  v28(); // _ZN10S7169C8_nt3v28Ev
  virtual void  v29(); // _ZN10S7169C8_nt3v29Ev
  virtual void  v30(); // _ZN10S7169C8_nt3v30Ev
  virtual void  v31(); // _ZN10S7169C8_nt3v31Ev
  S7169C8_nt(); // tgen
};
//SIG(-1 S7169C8_nt) C1{ BC2{ vd v7 v8 v9} vd v1 v2 v3 v4 v5 v6}


 S7169C8_nt ::~S7169C8_nt(){ note_dtor("S7169C8_nt", this);}
void  S7169C8_nt ::v26(){vfunc_called(this, "_ZN10S7169C8_nt3v26Ev");}
void  S7169C8_nt ::v27(){vfunc_called(this, "_ZN10S7169C8_nt3v27Ev");}
void  S7169C8_nt ::v28(){vfunc_called(this, "_ZN10S7169C8_nt3v28Ev");}
void  S7169C8_nt ::v29(){vfunc_called(this, "_ZN10S7169C8_nt3v29Ev");}
void  S7169C8_nt ::v30(){vfunc_called(this, "_ZN10S7169C8_nt3v30Ev");}
void  S7169C8_nt ::v31(){vfunc_called(this, "_ZN10S7169C8_nt3v31Ev");}
S7169C8_nt ::S7169C8_nt(){ note_ctor("S7169C8_nt", this);} // tgen

//skip512 S7169C8_nt

#else // __cplusplus

extern void _ZN10S7169C8_ntC1Ev();
extern void _ZN10S7169C8_ntD1Ev();
Name_Map name_map_S7169C8_nt[] = {
  NSPAIR(_ZN10S7169C8_ntC1Ev),
  NSPAIR(_ZN10S7169C8_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7169C9_nt;
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
static Base_Class bases_S7169C8_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7169C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
extern void _ZN10S7169C8_ntD1Ev();
extern void _ZN10S7169C8_ntD0Ev();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
extern void _ZN10S7169C8_nt3v26Ev();
extern void _ZN10S7169C8_nt3v27Ev();
extern void _ZN10S7169C8_nt3v28Ev();
extern void _ZN10S7169C8_nt3v29Ev();
extern void _ZN10S7169C8_nt3v30Ev();
extern void _ZN10S7169C8_nt3v31Ev();
static  VTBL_ENTRY vtc_S7169C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C8_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C8_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v31Ev,
};
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
VTBL_ENTRY *P__ZTI10S7169C8_nt = _ZTI10S7169C8_nt; 
extern  VTBL_ENTRY _ZTV10S7169C8_nt[];
Class_Descriptor cd_S7169C8_nt = {  "S7169C8_nt", // class name
  bases_S7169C8_nt, 1,
  &(vtc_S7169C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7169C8_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S7169C8_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  S7169C12_nt  {
  ::S10007C29_nt s7169c12f0;
  void  mf7169c12(); // _ZN11S7169C12_nt9mf7169c12Ev
};
//SIG(-1 S7169C12_nt) C1{ m FC2{ FL[4]}}


void  S7169C12_nt ::mf7169c12(){}

//skip512 S7169C12_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C7_nt  : S7169C8_nt {
  ::S4228C44 s7169c7f0;
  ::S7169C12_nt s7169c7f1;
  char s7169c7f2;
  virtual  ~S7169C7_nt(); // _ZN10S7169C7_ntD1Ev
  virtual void  v32(); // _ZN10S7169C7_nt3v32Ev
  virtual void  v33(); // _ZN10S7169C7_nt3v33Ev
  virtual void  v34(); // _ZN10S7169C7_nt3v34Ev
  S7169C7_nt(); // tgen
};
//SIG(-1 S7169C7_nt) C1{ BC2{ BC3{ vd v4 v5 v6} vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc}


 S7169C7_nt ::~S7169C7_nt(){ note_dtor("S7169C7_nt", this);}
void  S7169C7_nt ::v32(){vfunc_called(this, "_ZN10S7169C7_nt3v32Ev");}
void  S7169C7_nt ::v33(){vfunc_called(this, "_ZN10S7169C7_nt3v33Ev");}
void  S7169C7_nt ::v34(){vfunc_called(this, "_ZN10S7169C7_nt3v34Ev");}
S7169C7_nt ::S7169C7_nt(){ note_ctor("S7169C7_nt", this);} // tgen

//skip512 S7169C7_nt

#else // __cplusplus

extern void _ZN10S7169C7_ntC1Ev();
extern void _ZN10S7169C7_ntD1Ev();
Name_Map name_map_S7169C7_nt[] = {
  NSPAIR(_ZN10S7169C7_ntC1Ev),
  NSPAIR(_ZN10S7169C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7169C9_nt;
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
extern Class_Descriptor cd_S7169C8_nt;
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
extern  VTBL_ENTRY _ZTV10S7169C8_nt[];
static Base_Class bases_S7169C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7169C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7169C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI10S7169C7_nt[];
extern void _ZN10S7169C7_ntD1Ev();
extern void _ZN10S7169C7_ntD0Ev();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
extern void _ZN10S7169C8_nt3v26Ev();
extern void _ZN10S7169C8_nt3v27Ev();
extern void _ZN10S7169C8_nt3v28Ev();
extern void _ZN10S7169C8_nt3v29Ev();
extern void _ZN10S7169C8_nt3v30Ev();
extern void _ZN10S7169C8_nt3v31Ev();
extern void _ZN10S7169C7_nt3v32Ev();
extern void _ZN10S7169C7_nt3v33Ev();
extern void _ZN10S7169C7_nt3v34Ev();
static  VTBL_ENTRY vtc_S7169C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7169C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S7169C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v34Ev,
};
extern VTBL_ENTRY _ZTI10S7169C7_nt[];
VTBL_ENTRY *P__ZTI10S7169C7_nt = _ZTI10S7169C7_nt; 
extern  VTBL_ENTRY _ZTV10S7169C7_nt[];
Class_Descriptor cd_S7169C7_nt = {  "S7169C7_nt", // class name
  bases_S7169C7_nt, 2,
  &(vtc_S7169C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S7169C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S7169C7_nt),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7169C14  {
  virtual  ~S7169C14(); // _ZN8S7169C14D1Ev
  virtual void  v35(); // _ZN8S7169C143v35Ev
  S7169C14(); // tgen
};
//SIG(-1 S7169C14) C1{ vd v1}


 S7169C14 ::~S7169C14(){ note_dtor("S7169C14", this);}
void  S7169C14 ::v35(){vfunc_called(this, "_ZN8S7169C143v35Ev");}
S7169C14 ::S7169C14(){ note_ctor("S7169C14", this);} // tgen

static void Test_S7169C14()
{
  extern Class_Descriptor cd_S7169C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7169C14, buf);
    S7169C14 *dp, &lv = *(dp=new (buf) S7169C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7169C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7169C14)");
    test_class_info(&lv, &cd_S7169C14);
    dp->~S7169C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7169C14(Test_S7169C14, "S7169C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7169C14C1Ev();
extern void _ZN8S7169C14D1Ev();
Name_Map name_map_S7169C14[] = {
  NSPAIR(_ZN8S7169C14C1Ev),
  NSPAIR(_ZN8S7169C14D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S7169C14[];
extern void _ZN8S7169C14D1Ev();
extern void _ZN8S7169C14D0Ev();
extern void _ZN8S7169C143v35Ev();
static  VTBL_ENTRY vtc_S7169C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7169C14[0]),
  (VTBL_ENTRY)&_ZN8S7169C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7169C14D0Ev,
  (VTBL_ENTRY)&_ZN8S7169C143v35Ev,
};
extern VTBL_ENTRY _ZTI8S7169C14[];
extern  VTBL_ENTRY _ZTV8S7169C14[];
Class_Descriptor cd_S7169C14 = {  "S7169C14", // class name
  0,0,//no base classes
  &(vtc_S7169C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7169C14),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S7169C14),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  S7169C15  : S19763C18_nt {
  int s7169c15f0[3];
  virtual  ~S7169C15(); // _ZN8S7169C15D1Ev
  S7169C15(); // tgen
};
//SIG(-1 S7169C15) C1{ BC2{} vd Fi[3]}


 S7169C15 ::~S7169C15(){ note_dtor("S7169C15", this);}
S7169C15 ::S7169C15(){ note_ctor("S7169C15", this);} // tgen

static void Test_S7169C15()
{
  extern Class_Descriptor cd_S7169C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7169C15, buf);
    S7169C15 *dp, &lv = *(dp=new (buf) S7169C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7169C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7169C15)");
    check_base_class_offset(lv, (S19763C18_nt*), 0, "S7169C15");
    check_field_offset(lv, s7169c15f0, ABISELECT(8,4), "S7169C15.s7169c15f0");
    test_class_info(&lv, &cd_S7169C15);
    dp->~S7169C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7169C15(Test_S7169C15, "S7169C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S7169C15C1Ev();
extern void _ZN8S7169C15D1Ev();
Name_Map name_map_S7169C15[] = {
  NSPAIR(_ZN8S7169C15C1Ev),
  NSPAIR(_ZN8S7169C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19763C18_nt;
extern VTBL_ENTRY _ZTI12S19763C18_nt[];
static Base_Class bases_S7169C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19763C18_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7169C15[];
extern void _ZN8S7169C15D1Ev();
extern void _ZN8S7169C15D0Ev();
static  VTBL_ENTRY vtc_S7169C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7169C15[0]),
  (VTBL_ENTRY)&_ZN8S7169C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7169C15D0Ev,
};
extern VTBL_ENTRY _ZTI8S7169C15[];
extern  VTBL_ENTRY _ZTV8S7169C15[];
Class_Descriptor cd_S7169C15 = {  "S7169C15", // class name
  bases_S7169C15, 1,
  &(vtc_S7169C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S7169C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7169C15),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  S7169C1  : S7169C2_nt , S7169C7_nt , S7169C14 {
  ::S7169C15 s7169c1f0;
  int s7169c1f1;
  virtual  ~S7169C1(); // _ZN7S7169C1D1Ev
  virtual void  v1(); // _ZN7S7169C12v1Ev
  virtual void  v2(); // _ZN7S7169C12v2Ev
  virtual void  v3(); // _ZN7S7169C12v3Ev
  virtual void  v4(); // _ZN7S7169C12v4Ev
  virtual void  v5(); // _ZN7S7169C12v5Ev
  virtual void  v6(); // _ZN7S7169C12v6Ev
  virtual void  v7(); // _ZN7S7169C12v7Ev
  S7169C1(); // tgen
};
//SIG(1 S7169C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ BC4{ m Fp Fi FC5{ m} FC6{ m}}}} BC7{ BC8{ BC9{ vd v23 v24 v25} vd v26 v27 v28 v29 v30 v31} vd v32 v33 v34 FC10{ m Fp Fi[2] FC11{ m}} FC12{ m FC13{ FL[4]}} Fc} BC14{ vd v35} vd v1 v2 v3 v4 v5 v6 v7 FC15{ BC16{} vd Fi[3]} Fi}


 S7169C1 ::~S7169C1(){ note_dtor("S7169C1", this);}
void  S7169C1 ::v1(){vfunc_called(this, "_ZN7S7169C12v1Ev");}
void  S7169C1 ::v2(){vfunc_called(this, "_ZN7S7169C12v2Ev");}
void  S7169C1 ::v3(){vfunc_called(this, "_ZN7S7169C12v3Ev");}
void  S7169C1 ::v4(){vfunc_called(this, "_ZN7S7169C12v4Ev");}
void  S7169C1 ::v5(){vfunc_called(this, "_ZN7S7169C12v5Ev");}
void  S7169C1 ::v6(){vfunc_called(this, "_ZN7S7169C12v6Ev");}
void  S7169C1 ::v7(){vfunc_called(this, "_ZN7S7169C12v7Ev");}
S7169C1 ::S7169C1(){ note_ctor("S7169C1", this);} // tgen

static void Test_S7169C1()
{
  extern Class_Descriptor cd_S7169C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,26)];
    init_test(&cd_S7169C1, buf);
    S7169C1 *dp, &lv = *(dp=new (buf) S7169C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S7169C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7169C1)");
    check_base_class_offset(lv, (S7169C2_nt*), 0, "S7169C1");
    check_base_class_offset(lv, (S7169C9_nt*)(S7169C8_nt*)(S7169C7_nt*), ABISELECT(32,20), "S7169C1");
    check_base_class_offset(lv, (S7169C8_nt*)(S7169C7_nt*), ABISELECT(32,20), "S7169C1");
    check_base_class_offset(lv, (S7169C7_nt*), ABISELECT(32,20), "S7169C1");
    check_base_class_offset(lv, (S7169C14*), ABISELECT(104,76), "S7169C1");
    check_field_offset(lv, s7169c1f0, ABISELECT(112,80), "S7169C1.s7169c1f0");
    check_field_offset(lv, s7169c1f1, ABISELECT(136,96), "S7169C1.s7169c1f1");
    test_class_info(&lv, &cd_S7169C1);
    dp->~S7169C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7169C1(Test_S7169C1, "S7169C1", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN7S7169C1C1Ev();
extern void _ZN7S7169C1D1Ev();
Name_Map name_map_S7169C1[] = {
  NSPAIR(_ZN7S7169C1C1Ev),
  NSPAIR(_ZN7S7169C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7169C2_nt;
extern VTBL_ENTRY _ZTI10S7169C2_nt[];
extern  VTBL_ENTRY _ZTV10S7169C2_nt[];
extern Class_Descriptor cd_S7169C9_nt;
extern VTBL_ENTRY _ZTI10S7169C9_nt[];
extern  VTBL_ENTRY _ZTV10S7169C9_nt[];
extern Class_Descriptor cd_S7169C8_nt;
extern VTBL_ENTRY _ZTI10S7169C8_nt[];
extern  VTBL_ENTRY _ZTV10S7169C8_nt[];
extern Class_Descriptor cd_S7169C7_nt;
extern VTBL_ENTRY _ZTI10S7169C7_nt[];
extern  VTBL_ENTRY _ZTV10S7169C7_nt[];
extern Class_Descriptor cd_S7169C14;
extern VTBL_ENTRY _ZTI8S7169C14[];
extern  VTBL_ENTRY _ZTV8S7169C14[];
static Base_Class bases_S7169C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7169C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7169C9_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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7169C8_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7169C7_nt,    ABISELECT(32,20), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7169C14,    ABISELECT(104,76), //bcp->offset
    42, //bcp->virtual_function_table_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 _ZTI7S7169C1[];
extern void _ZN7S7169C1D1Ev();
extern void _ZN7S7169C1D0Ev();
extern void _ZN10S7169C2_nt2v8Ev();
extern void _ZN10S7169C2_nt2v9Ev();
extern void _ZN10S7169C2_nt3v10Ev();
extern void _ZN10S7169C2_nt3v11Ev();
extern void _ZN10S7169C2_nt3v12Ev();
extern void _ZN10S7169C2_nt3v13Ev();
extern void _ZN10S7169C2_nt3v14Ev();
extern void _ZN10S7169C2_nt3v15Ev();
extern void _ZN10S7169C2_nt3v16Ev();
extern void _ZN10S7169C2_nt3v17Ev();
extern void _ZN10S7169C2_nt3v18Ev();
extern void _ZN10S7169C2_nt3v19Ev();
extern void _ZN10S7169C2_nt3v20Ev();
extern void _ZN10S7169C2_nt3v21Ev();
extern void _ZN10S7169C2_nt3v22Ev();
extern void _ZN7S7169C12v1Ev();
extern void _ZN7S7169C12v2Ev();
extern void _ZN7S7169C12v3Ev();
extern void _ZN7S7169C12v4Ev();
extern void _ZN7S7169C12v5Ev();
extern void _ZN7S7169C12v6Ev();
extern void _ZN7S7169C12v7Ev();
extern void ABISELECT(_ZThn32_N7S7169C1D1Ev,_ZThn20_N7S7169C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7169C1D0Ev,_ZThn20_N7S7169C1D0Ev)();
extern void _ZN10S7169C9_nt3v23Ev();
extern void _ZN10S7169C9_nt3v24Ev();
extern void _ZN10S7169C9_nt3v25Ev();
extern void _ZN10S7169C8_nt3v26Ev();
extern void _ZN10S7169C8_nt3v27Ev();
extern void _ZN10S7169C8_nt3v28Ev();
extern void _ZN10S7169C8_nt3v29Ev();
extern void _ZN10S7169C8_nt3v30Ev();
extern void _ZN10S7169C8_nt3v31Ev();
extern void _ZN10S7169C7_nt3v32Ev();
extern void _ZN10S7169C7_nt3v33Ev();
extern void _ZN10S7169C7_nt3v34Ev();
extern void ABISELECT(_ZThn104_N7S7169C1D1Ev,_ZThn76_N7S7169C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7169C1D0Ev,_ZThn76_N7S7169C1D0Ev)();
extern void _ZN8S7169C143v35Ev();
static  VTBL_ENTRY vtc_S7169C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7169C1[0]),
  (VTBL_ENTRY)&_ZN7S7169C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7169C1D0Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S7169C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7169C12v7Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7169C1D1Ev,_ZThn20_N7S7169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7169C1D0Ev,_ZThn20_N7S7169C1D0Ev),
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S7169C9_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S7169C8_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S7169C7_nt3v34Ev,
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI7S7169C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7169C1D1Ev,_ZThn76_N7S7169C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S7169C1D0Ev,_ZThn76_N7S7169C1D0Ev),
  (VTBL_ENTRY)&_ZN8S7169C143v35Ev,
};
extern VTBL_ENTRY _ZTI7S7169C1[];
extern  VTBL_ENTRY _ZTV7S7169C1[];
Class_Descriptor cd_S7169C1 = {  "S7169C1", // class name
  bases_S7169C1, 5,
  &(vtc_S7169C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI7S7169C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7169C1),47, //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  S5389C3_nt  {
  virtual  ~S5389C3_nt(); // _ZN10S5389C3_ntD1Ev
  virtual void  v7(); // _ZN10S5389C3_nt2v7Ev
  virtual void  v8(); // _ZN10S5389C3_nt2v8Ev
  virtual void  v9(); // _ZN10S5389C3_nt2v9Ev
  virtual void  v10(); // _ZN10S5389C3_nt3v10Ev
  virtual void  v11(); // _ZN10S5389C3_nt3v11Ev
  virtual void  v12(); // _ZN10S5389C3_nt3v12Ev
  virtual void  v13(); // _ZN10S5389C3_nt3v13Ev
  virtual void  v14(); // _ZN10S5389C3_nt3v14Ev
  virtual void  v15(); // _ZN10S5389C3_nt3v15Ev
  virtual void  v16(); // _ZN10S5389C3_nt3v16Ev
  S5389C3_nt(); // tgen
};
//SIG(-1 S5389C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S5389C3_nt ::~S5389C3_nt(){ note_dtor("S5389C3_nt", this);}
void  S5389C3_nt ::v7(){vfunc_called(this, "_ZN10S5389C3_nt2v7Ev");}
void  S5389C3_nt ::v8(){vfunc_called(this, "_ZN10S5389C3_nt2v8Ev");}
void  S5389C3_nt ::v9(){vfunc_called(this, "_ZN10S5389C3_nt2v9Ev");}
void  S5389C3_nt ::v10(){vfunc_called(this, "_ZN10S5389C3_nt3v10Ev");}
void  S5389C3_nt ::v11(){vfunc_called(this, "_ZN10S5389C3_nt3v11Ev");}
void  S5389C3_nt ::v12(){vfunc_called(this, "_ZN10S5389C3_nt3v12Ev");}
void  S5389C3_nt ::v13(){vfunc_called(this, "_ZN10S5389C3_nt3v13Ev");}
void  S5389C3_nt ::v14(){vfunc_called(this, "_ZN10S5389C3_nt3v14Ev");}
void  S5389C3_nt ::v15(){vfunc_called(this, "_ZN10S5389C3_nt3v15Ev");}
void  S5389C3_nt ::v16(){vfunc_called(this, "_ZN10S5389C3_nt3v16Ev");}
S5389C3_nt ::S5389C3_nt(){ note_ctor("S5389C3_nt", this);} // tgen

//skip512 S5389C3_nt

#else // __cplusplus

extern void _ZN10S5389C3_ntC1Ev();
extern void _ZN10S5389C3_ntD1Ev();
Name_Map name_map_S5389C3_nt[] = {
  NSPAIR(_ZN10S5389C3_ntC1Ev),
  NSPAIR(_ZN10S5389C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
extern void _ZN10S5389C3_ntD1Ev();
extern void _ZN10S5389C3_ntD0Ev();
extern void _ZN10S5389C3_nt2v7Ev();
extern void _ZN10S5389C3_nt2v8Ev();
extern void _ZN10S5389C3_nt2v9Ev();
extern void _ZN10S5389C3_nt3v10Ev();
extern void _ZN10S5389C3_nt3v11Ev();
extern void _ZN10S5389C3_nt3v12Ev();
extern void _ZN10S5389C3_nt3v13Ev();
extern void _ZN10S5389C3_nt3v14Ev();
extern void _ZN10S5389C3_nt3v15Ev();
extern void _ZN10S5389C3_nt3v16Ev();
static  VTBL_ENTRY vtc_S5389C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5389C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S5389C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v16Ev,
};
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
VTBL_ENTRY *P__ZTI10S5389C3_nt = _ZTI10S5389C3_nt; 
extern  VTBL_ENTRY _ZTV10S5389C3_nt[];
Class_Descriptor cd_S5389C3_nt = {  "S5389C3_nt", // class name
  0,0,//no base classes
  &(vtc_S5389C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5389C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5389C3_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C4_nt  {
  virtual  ~S5389C4_nt(); // _ZN10S5389C4_ntD1Ev
  virtual void  v17(); // _ZN10S5389C4_nt3v17Ev
  virtual void  v18(); // _ZN10S5389C4_nt3v18Ev
  virtual void  v19(); // _ZN10S5389C4_nt3v19Ev
  virtual void  v20(); // _ZN10S5389C4_nt3v20Ev
  S5389C4_nt(); // tgen
};
//SIG(-1 S5389C4_nt) C1{ vd v1 v2 v3 v4}


 S5389C4_nt ::~S5389C4_nt(){ note_dtor("S5389C4_nt", this);}
void  S5389C4_nt ::v17(){vfunc_called(this, "_ZN10S5389C4_nt3v17Ev");}
void  S5389C4_nt ::v18(){vfunc_called(this, "_ZN10S5389C4_nt3v18Ev");}
void  S5389C4_nt ::v19(){vfunc_called(this, "_ZN10S5389C4_nt3v19Ev");}
void  S5389C4_nt ::v20(){vfunc_called(this, "_ZN10S5389C4_nt3v20Ev");}
S5389C4_nt ::S5389C4_nt(){ note_ctor("S5389C4_nt", this);} // tgen

//skip512 S5389C4_nt

#else // __cplusplus

extern void _ZN10S5389C4_ntC1Ev();
extern void _ZN10S5389C4_ntD1Ev();
Name_Map name_map_S5389C4_nt[] = {
  NSPAIR(_ZN10S5389C4_ntC1Ev),
  NSPAIR(_ZN10S5389C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
extern void _ZN10S5389C4_ntD1Ev();
extern void _ZN10S5389C4_ntD0Ev();
extern void _ZN10S5389C4_nt3v17Ev();
extern void _ZN10S5389C4_nt3v18Ev();
extern void _ZN10S5389C4_nt3v19Ev();
extern void _ZN10S5389C4_nt3v20Ev();
static  VTBL_ENTRY vtc_S5389C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5389C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S5389C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
VTBL_ENTRY *P__ZTI10S5389C4_nt = _ZTI10S5389C4_nt; 
extern  VTBL_ENTRY _ZTV10S5389C4_nt[];
Class_Descriptor cd_S5389C4_nt = {  "S5389C4_nt", // class name
  0,0,//no base classes
  &(vtc_S5389C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S5389C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S5389C4_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C6_nt  {
  ::S3423C18 s5389c6f0;
  void *s5389c6f1;
  int s5389c6f2;
  void  mf5389c6(); // _ZN10S5389C6_nt8mf5389c6Ev
};
//SIG(-1 S5389C6_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S5389C6_nt ::mf5389c6(){}

//skip512 S5389C6_nt

#else // __cplusplus

Class_Descriptor cd_S5389C6_nt = {  "S5389C6_nt", // class name
  0,0,//no base classes
  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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5389C5_nt  : S5389C6_nt {
};
//SIG(-1 S5389C5_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S5389C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S5389C6_nt;
static Base_Class bases_S5389C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5389C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S5389C2  : S5389C3_nt , S5389C4_nt {
  void *s5389c2f0;
  ::S5389C5_nt s5389c2f1;
  ::S3423C12 s5389c2f2;
  void *s5389c2f3;
  ::S3423C8_nt s5389c2f4;
  ::S3423C8_nt s5389c2f5;
  __tsi64 s5389c2f6;
  ::S3423C8_nt s5389c2f7;
  int s5389c2f8;
  virtual void  v21(); // _ZN7S5389C23v21Ev
  virtual void  v22(); // _ZN7S5389C23v22Ev
  virtual void  v23(); // _ZN7S5389C23v23Ev
  virtual void  v24(); // _ZN7S5389C23v24Ev
  virtual void  v25(); // _ZN7S5389C23v25Ev
  virtual void  v26(); // _ZN7S5389C23v26Ev
  virtual void  v27(); // _ZN7S5389C23v27Ev
  virtual void  v28(); // _ZN7S5389C23v28Ev
  virtual void  v29(); // _ZN7S5389C23v29Ev
  virtual void  v30(); // _ZN7S5389C23v30Ev
  virtual void  v31(); // _ZN7S5389C23v31Ev
  virtual void  v32(); // _ZN7S5389C23v32Ev
  virtual void  v33(); // _ZN7S5389C23v33Ev
  virtual void  v34(); // _ZN7S5389C23v34Ev
  virtual void  v35(); // _ZN7S5389C23v35Ev
  virtual void  v36(); // _ZN7S5389C23v36Ev
  virtual void  v37(); // _ZN7S5389C23v37Ev
  virtual void  v38(); // _ZN7S5389C23v38Ev
  virtual void  v39(); // _ZN7S5389C23v39Ev
  virtual void  v40(); // _ZN7S5389C23v40Ev
  ~S5389C2(); // tgen
  S5389C2(); // tgen
};
//SIG(-1 S5389C2) C1{ BC2{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30} BC3{ vd v31 v32 v33 v34} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fp FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} FC8{ BC7} Fp FC9{ m Fi} FC9 FL FC9 Fi}


void  S5389C2 ::v21(){vfunc_called(this, "_ZN7S5389C23v21Ev");}
void  S5389C2 ::v22(){vfunc_called(this, "_ZN7S5389C23v22Ev");}
void  S5389C2 ::v23(){vfunc_called(this, "_ZN7S5389C23v23Ev");}
void  S5389C2 ::v24(){vfunc_called(this, "_ZN7S5389C23v24Ev");}
void  S5389C2 ::v25(){vfunc_called(this, "_ZN7S5389C23v25Ev");}
void  S5389C2 ::v26(){vfunc_called(this, "_ZN7S5389C23v26Ev");}
void  S5389C2 ::v27(){vfunc_called(this, "_ZN7S5389C23v27Ev");}
void  S5389C2 ::v28(){vfunc_called(this, "_ZN7S5389C23v28Ev");}
void  S5389C2 ::v29(){vfunc_called(this, "_ZN7S5389C23v29Ev");}
void  S5389C2 ::v30(){vfunc_called(this, "_ZN7S5389C23v30Ev");}
void  S5389C2 ::v31(){vfunc_called(this, "_ZN7S5389C23v31Ev");}
void  S5389C2 ::v32(){vfunc_called(this, "_ZN7S5389C23v32Ev");}
void  S5389C2 ::v33(){vfunc_called(this, "_ZN7S5389C23v33Ev");}
void  S5389C2 ::v34(){vfunc_called(this, "_ZN7S5389C23v34Ev");}
void  S5389C2 ::v35(){vfunc_called(this, "_ZN7S5389C23v35Ev");}
void  S5389C2 ::v36(){vfunc_called(this, "_ZN7S5389C23v36Ev");}
void  S5389C2 ::v37(){vfunc_called(this, "_ZN7S5389C23v37Ev");}
void  S5389C2 ::v38(){vfunc_called(this, "_ZN7S5389C23v38Ev");}
void  S5389C2 ::v39(){vfunc_called(this, "_ZN7S5389C23v39Ev");}
void  S5389C2 ::v40(){vfunc_called(this, "_ZN7S5389C23v40Ev");}
S5389C2 ::~S5389C2(){ note_dtor("S5389C2", this);} // tgen
S5389C2 ::S5389C2(){ note_ctor("S5389C2", this);} // tgen

static void Test_S5389C2()
{
  extern Class_Descriptor cd_S5389C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,19)];
    init_test(&cd_S5389C2, buf);
    S5389C2 *dp, &lv = *(dp=new (buf) S5389C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,72), "sizeof(S5389C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5389C2)");
    check_base_class_offset(lv, (S5389C3_nt*), 0, "S5389C2");
    check_base_class_offset(lv, (S5389C4_nt*), ABISELECT(8,4), "S5389C2");
    check_field_offset(lv, s5389c2f0, ABISELECT(16,8), "S5389C2.s5389c2f0");
    check_field_offset(lv, s5389c2f1, ABISELECT(24,12), "S5389C2.s5389c2f1");
    check_field_offset(lv, s5389c2f2, ABISELECT(56,32), "S5389C2.s5389c2f2");
    check_field_offset(lv, s5389c2f3, ABISELECT(72,44), "S5389C2.s5389c2f3");
    check_field_offset(lv, s5389c2f4, ABISELECT(80,48), "S5389C2.s5389c2f4");
    check_field_offset(lv, s5389c2f5, ABISELECT(84,52), "S5389C2.s5389c2f5");
    check_field_offset(lv, s5389c2f6, ABISELECT(88,56), "S5389C2.s5389c2f6");
    check_field_offset(lv, s5389c2f7, ABISELECT(96,64), "S5389C2.s5389c2f7");
    check_field_offset(lv, s5389c2f8, ABISELECT(100,68), "S5389C2.s5389c2f8");
    test_class_info(&lv, &cd_S5389C2);
    dp->~S5389C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5389C2(Test_S5389C2, "S5389C2", ABISELECT(104,72));

#else // __cplusplus

extern void _ZN7S5389C2C1Ev();
extern void _ZN7S5389C2D1Ev();
Name_Map name_map_S5389C2[] = {
  NSPAIR(_ZN7S5389C2C1Ev),
  NSPAIR(_ZN7S5389C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5389C3_nt;
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
extern  VTBL_ENTRY _ZTV10S5389C3_nt[];
extern Class_Descriptor cd_S5389C4_nt;
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
extern  VTBL_ENTRY _ZTV10S5389C4_nt[];
static Base_Class bases_S5389C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5389C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5389C4_nt,    ABISELECT(8,4), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5389C2[];
extern void _ZN7S5389C2D1Ev();
extern void _ZN7S5389C2D0Ev();
extern void _ZN10S5389C3_nt2v7Ev();
extern void _ZN10S5389C3_nt2v8Ev();
extern void _ZN10S5389C3_nt2v9Ev();
extern void _ZN10S5389C3_nt3v10Ev();
extern void _ZN10S5389C3_nt3v11Ev();
extern void _ZN10S5389C3_nt3v12Ev();
extern void _ZN10S5389C3_nt3v13Ev();
extern void _ZN10S5389C3_nt3v14Ev();
extern void _ZN10S5389C3_nt3v15Ev();
extern void _ZN10S5389C3_nt3v16Ev();
extern void _ZN7S5389C23v21Ev();
extern void _ZN7S5389C23v22Ev();
extern void _ZN7S5389C23v23Ev();
extern void _ZN7S5389C23v24Ev();
extern void _ZN7S5389C23v25Ev();
extern void _ZN7S5389C23v26Ev();
extern void _ZN7S5389C23v27Ev();
extern void _ZN7S5389C23v28Ev();
extern void _ZN7S5389C23v29Ev();
extern void _ZN7S5389C23v30Ev();
extern void _ZN7S5389C23v31Ev();
extern void _ZN7S5389C23v32Ev();
extern void _ZN7S5389C23v33Ev();
extern void _ZN7S5389C23v34Ev();
extern void _ZN7S5389C23v35Ev();
extern void _ZN7S5389C23v36Ev();
extern void _ZN7S5389C23v37Ev();
extern void _ZN7S5389C23v38Ev();
extern void _ZN7S5389C23v39Ev();
extern void _ZN7S5389C23v40Ev();
extern void ABISELECT(_ZThn8_N7S5389C2D1Ev,_ZThn4_N7S5389C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S5389C2D0Ev,_ZThn4_N7S5389C2D0Ev)();
extern void _ZN10S5389C4_nt3v17Ev();
extern void _ZN10S5389C4_nt3v18Ev();
extern void _ZN10S5389C4_nt3v19Ev();
extern void _ZN10S5389C4_nt3v20Ev();
static  VTBL_ENTRY vtc_S5389C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5389C2[0]),
  (VTBL_ENTRY)&_ZN7S5389C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5389C2D0Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v21Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v40Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5389C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C2D1Ev,_ZThn4_N7S5389C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C2D0Ev,_ZThn4_N7S5389C2D0Ev),
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI7S5389C2[];
extern  VTBL_ENTRY _ZTV7S5389C2[];
Class_Descriptor cd_S5389C2 = {  "S5389C2", // class name
  bases_S5389C2, 2,
  &(vtc_S5389C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,72), // object size
  NSPAIRA(_ZTI7S5389C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5389C2),42, //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  S5389C1  : S5389C2 {
  __tsi64 s5389c1f0;
  int s5389c1f1;
  void *s5389c1f2;
  int s5389c1f3[2];
  virtual  ~S5389C1(); // _ZN7S5389C1D1Ev
  virtual void  v1(); // _ZN7S5389C12v1Ev
  virtual void  v2(); // _ZN7S5389C12v2Ev
  virtual void  v3(); // _ZN7S5389C12v3Ev
  virtual void  v4(); // _ZN7S5389C12v4Ev
  virtual void  v5(); // _ZN7S5389C12v5Ev
  virtual void  v6(); // _ZN7S5389C12v6Ev
  S5389C1(); // tgen
};
//SIG(1 S5389C1) C1{ BC2{ BC3{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16} BC4{ vd v17 v18 v19 v20} v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 Fp FC5{ BC6{ m FC7{ BC8{ m Fp Fi[2]}} Fp Fi}} FC9{ BC8} Fp FC10{ m Fi} FC10 FL FC10 Fi} vd v1 v2 v3 v4 v5 v6 FL Fi Fp Fi[2]}


 S5389C1 ::~S5389C1(){ note_dtor("S5389C1", this);}
void  S5389C1 ::v1(){vfunc_called(this, "_ZN7S5389C12v1Ev");}
void  S5389C1 ::v2(){vfunc_called(this, "_ZN7S5389C12v2Ev");}
void  S5389C1 ::v3(){vfunc_called(this, "_ZN7S5389C12v3Ev");}
void  S5389C1 ::v4(){vfunc_called(this, "_ZN7S5389C12v4Ev");}
void  S5389C1 ::v5(){vfunc_called(this, "_ZN7S5389C12v5Ev");}
void  S5389C1 ::v6(){vfunc_called(this, "_ZN7S5389C12v6Ev");}
S5389C1 ::S5389C1(){ note_ctor("S5389C1", this);} // tgen

static void Test_S5389C1()
{
  extern Class_Descriptor cd_S5389C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,25)];
    init_test(&cd_S5389C1, buf);
    S5389C1 *dp, &lv = *(dp=new (buf) S5389C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,96), "sizeof(S5389C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5389C1)");
    check_base_class_offset(lv, (S5389C3_nt*)(S5389C2*), 0, "S5389C1");
    check_base_class_offset(lv, (S5389C4_nt*)(S5389C2*), ABISELECT(8,4), "S5389C1");
    check_base_class_offset(lv, (S5389C2*), 0, "S5389C1");
    check_field_offset(lv, s5389c1f0, ABISELECT(104,72), "S5389C1.s5389c1f0");
    check_field_offset(lv, s5389c1f1, ABISELECT(112,80), "S5389C1.s5389c1f1");
    check_field_offset(lv, s5389c1f2, ABISELECT(120,84), "S5389C1.s5389c1f2");
    check_field_offset(lv, s5389c1f3, ABISELECT(128,88), "S5389C1.s5389c1f3");
    test_class_info(&lv, &cd_S5389C1);
    dp->~S5389C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5389C1(Test_S5389C1, "S5389C1", ABISELECT(136,96));

#else // __cplusplus

extern void _ZN7S5389C1C1Ev();
extern void _ZN7S5389C1D1Ev();
Name_Map name_map_S5389C1[] = {
  NSPAIR(_ZN7S5389C1C1Ev),
  NSPAIR(_ZN7S5389C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5389C3_nt;
extern VTBL_ENTRY _ZTI10S5389C3_nt[];
extern  VTBL_ENTRY _ZTV10S5389C3_nt[];
extern Class_Descriptor cd_S5389C4_nt;
extern VTBL_ENTRY _ZTI10S5389C4_nt[];
extern  VTBL_ENTRY _ZTV10S5389C4_nt[];
extern Class_Descriptor cd_S5389C2;
extern VTBL_ENTRY _ZTI7S5389C2[];
extern  VTBL_ENTRY _ZTV7S5389C2[];
static Base_Class bases_S5389C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5389C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S5389C4_nt,    ABISELECT(8,4), //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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5389C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5389C1[];
extern void _ZN7S5389C1D1Ev();
extern void _ZN7S5389C1D0Ev();
extern void _ZN10S5389C3_nt2v7Ev();
extern void _ZN10S5389C3_nt2v8Ev();
extern void _ZN10S5389C3_nt2v9Ev();
extern void _ZN10S5389C3_nt3v10Ev();
extern void _ZN10S5389C3_nt3v11Ev();
extern void _ZN10S5389C3_nt3v12Ev();
extern void _ZN10S5389C3_nt3v13Ev();
extern void _ZN10S5389C3_nt3v14Ev();
extern void _ZN10S5389C3_nt3v15Ev();
extern void _ZN10S5389C3_nt3v16Ev();
extern void _ZN7S5389C23v21Ev();
extern void _ZN7S5389C23v22Ev();
extern void _ZN7S5389C23v23Ev();
extern void _ZN7S5389C23v24Ev();
extern void _ZN7S5389C23v25Ev();
extern void _ZN7S5389C23v26Ev();
extern void _ZN7S5389C23v27Ev();
extern void _ZN7S5389C23v28Ev();
extern void _ZN7S5389C23v29Ev();
extern void _ZN7S5389C23v30Ev();
extern void _ZN7S5389C23v31Ev();
extern void _ZN7S5389C23v32Ev();
extern void _ZN7S5389C23v33Ev();
extern void _ZN7S5389C23v34Ev();
extern void _ZN7S5389C23v35Ev();
extern void _ZN7S5389C23v36Ev();
extern void _ZN7S5389C23v37Ev();
extern void _ZN7S5389C23v38Ev();
extern void _ZN7S5389C23v39Ev();
extern void _ZN7S5389C23v40Ev();
extern void _ZN7S5389C12v1Ev();
extern void _ZN7S5389C12v2Ev();
extern void _ZN7S5389C12v3Ev();
extern void _ZN7S5389C12v4Ev();
extern void _ZN7S5389C12v5Ev();
extern void _ZN7S5389C12v6Ev();
extern void ABISELECT(_ZThn8_N7S5389C1D1Ev,_ZThn4_N7S5389C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S5389C1D0Ev,_ZThn4_N7S5389C1D0Ev)();
extern void _ZN10S5389C4_nt3v17Ev();
extern void _ZN10S5389C4_nt3v18Ev();
extern void _ZN10S5389C4_nt3v19Ev();
extern void _ZN10S5389C4_nt3v20Ev();
static  VTBL_ENTRY vtc_S5389C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5389C1[0]),
  (VTBL_ENTRY)&_ZN7S5389C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5389C1D0Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S5389C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v21Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v33Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v34Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v35Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5389C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5389C12v6Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S5389C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C1D1Ev,_ZThn4_N7S5389C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S5389C1D0Ev,_ZThn4_N7S5389C1D0Ev),
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S5389C4_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI7S5389C1[];
extern  VTBL_ENTRY _ZTV7S5389C1[];
Class_Descriptor cd_S5389C1 = {  "S5389C1", // class name
  bases_S5389C1, 3,
  &(vtc_S5389C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,96), // object size
  NSPAIRA(_ZTI7S5389C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5389C1),48, //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  S7788C4  {
  void *s7788c4f0;
  int s7788c4f1[2];
  void *s7788c4f2;
  int s7788c4f3;
  virtual void  v3(); // _ZN7S7788C42v3Ev
  ~S7788C4(); // tgen
  S7788C4(); // tgen
};
//SIG(-1 S7788C4) C1{ v1 Fp Fi[2] Fp Fi}


void  S7788C4 ::v3(){vfunc_called(this, "_ZN7S7788C42v3Ev");}
S7788C4 ::~S7788C4(){ note_dtor("S7788C4", this);} // tgen
S7788C4 ::S7788C4(){ note_ctor("S7788C4", this);} // tgen

static void Test_S7788C4()
{
  extern Class_Descriptor cd_S7788C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7788C4, buf);
    S7788C4 *dp, &lv = *(dp=new (buf) S7788C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7788C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7788C4)");
    check_field_offset(lv, s7788c4f0, ABISELECT(8,4), "S7788C4.s7788c4f0");
    check_field_offset(lv, s7788c4f1, ABISELECT(16,8), "S7788C4.s7788c4f1");
    check_field_offset(lv, s7788c4f2, ABISELECT(24,16), "S7788C4.s7788c4f2");
    check_field_offset(lv, s7788c4f3, ABISELECT(32,20), "S7788C4.s7788c4f3");
    test_class_info(&lv, &cd_S7788C4);
    dp->~S7788C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C4(Test_S7788C4, "S7788C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7788C4C1Ev();
extern void _ZN7S7788C4D1Ev();
Name_Map name_map_S7788C4[] = {
  NSPAIR(_ZN7S7788C4C1Ev),
  NSPAIR(_ZN7S7788C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7788C4[];
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY vtc_S7788C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C4[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
Class_Descriptor cd_S7788C4 = {  "S7788C4", // class name
  0,0,//no base classes
  &(vtc_S7788C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7788C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7788C4),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  S7788C5  {
  long double s7788c5f0[6];
  void *s7788c5f1[6];
  long s7788c5f2[6];
  short s7788c5f3;
  char s7788c5f4;
  void *s7788c5f5;
  virtual void  v4(); // _ZN7S7788C52v4Ev
  ~S7788C5(); // tgen
  S7788C5(); // tgen
};
//SIG(-1 S7788C5) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S7788C5 ::v4(){vfunc_called(this, "_ZN7S7788C52v4Ev");}
S7788C5 ::~S7788C5(){ note_dtor("S7788C5", this);} // tgen
S7788C5 ::S7788C5(){ note_ctor("S7788C5", this);} // tgen

static void Test_S7788C5()
{
  extern Class_Descriptor cd_S7788C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S7788C5, buf);
    S7788C5 *dp, &lv = *(dp=new (buf) S7788C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S7788C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C5)");
    check_field_offset(lv, s7788c5f0, ABISELECT(16,4), "S7788C5.s7788c5f0");
    check_field_offset(lv, s7788c5f1, ABISELECT(112,76), "S7788C5.s7788c5f1");
    check_field_offset(lv, s7788c5f2, ABISELECT(160,100), "S7788C5.s7788c5f2");
    check_field_offset(lv, s7788c5f3, ABISELECT(208,124), "S7788C5.s7788c5f3");
    check_field_offset(lv, s7788c5f4, ABISELECT(210,126), "S7788C5.s7788c5f4");
    check_field_offset(lv, s7788c5f5, ABISELECT(216,128), "S7788C5.s7788c5f5");
    test_class_info(&lv, &cd_S7788C5);
    dp->~S7788C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C5(Test_S7788C5, "S7788C5", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S7788C5C1Ev();
extern void _ZN7S7788C5D1Ev();
Name_Map name_map_S7788C5[] = {
  NSPAIR(_ZN7S7788C5C1Ev),
  NSPAIR(_ZN7S7788C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7788C5[];
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY vtc_S7788C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C5[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
Class_Descriptor cd_S7788C5 = {  "S7788C5", // class name
  0,0,//no base classes
  &(vtc_S7788C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S7788C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7788C5),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  S7788C6  {
  short s7788c6f0:12;
  int s7788c6f1;
  char s7788c6f2;
  virtual void  v5(); // _ZN7S7788C62v5Ev
  virtual void  v6(); // _ZN7S7788C62v6Ev
  ~S7788C6(); // tgen
  S7788C6(); // tgen
};
//SIG(-1 S7788C6) C1{ v1 v2 Fs:12 Fi Fc}


void  S7788C6 ::v5(){vfunc_called(this, "_ZN7S7788C62v5Ev");}
void  S7788C6 ::v6(){vfunc_called(this, "_ZN7S7788C62v6Ev");}
S7788C6 ::~S7788C6(){ note_dtor("S7788C6", this);} // tgen
S7788C6 ::S7788C6(){ note_ctor("S7788C6", this);} // tgen

static void Test_S7788C6()
{
  extern Class_Descriptor cd_S7788C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7788C6, buf);
    S7788C6 *dp, &lv = *(dp=new (buf) S7788C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7788C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7788C6)");
    set_bf_and_test(lv, s7788c6f0, ABISELECT(8,4), 0, 12, 1, "S7788C6");
    set_bf_and_test(lv, s7788c6f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S7788C6");
    check_field_offset(lv, s7788c6f1, ABISELECT(12,8), "S7788C6.s7788c6f1");
    check_field_offset(lv, s7788c6f2, ABISELECT(16,12), "S7788C6.s7788c6f2");
    test_class_info(&lv, &cd_S7788C6);
    dp->~S7788C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C6(Test_S7788C6, "S7788C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7788C6C1Ev();
extern void _ZN7S7788C6D1Ev();
Name_Map name_map_S7788C6[] = {
  NSPAIR(_ZN7S7788C6C1Ev),
  NSPAIR(_ZN7S7788C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7788C6[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C6[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
Class_Descriptor cd_S7788C6 = {  "S7788C6", // class name
  0,0,//no base classes
  &(vtc_S7788C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7788C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7788C6),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  S7788C8  : S7788C5 , S7788C6 {
  long double s7788c8f0;
  __tsi64 s7788c8f1;
  ::S7788C6 s7788c8f2;
  __tsi64 s7788c8f3[2];
  void *s7788c8f4[3];
  int s7788c8f5;
  virtual void  v7(); // _ZN7S7788C82v7Ev
  ~S7788C8(); // tgen
  S7788C8(); // tgen
};
//SIG(-1 S7788C8) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S7788C8 ::v7(){vfunc_called(this, "_ZN7S7788C82v7Ev");}
S7788C8 ::~S7788C8(){ note_dtor("S7788C8", this);} // tgen
S7788C8 ::S7788C8(){ note_ctor("S7788C8", this);} // tgen

static void Test_S7788C8()
{
  extern Class_Descriptor cd_S7788C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S7788C8, buf);
    S7788C8 *dp, &lv = *(dp=new (buf) S7788C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S7788C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C8)");
    check_base_class_offset(lv, (S7788C5*), 0, "S7788C8");
    check_base_class_offset(lv, (S7788C6*), ABISELECT(224,132), "S7788C8");
    check_field_offset(lv, s7788c8f0, ABISELECT(256,148), "S7788C8.s7788c8f0");
    check_field_offset(lv, s7788c8f1, ABISELECT(272,160), "S7788C8.s7788c8f1");
    check_field_offset(lv, s7788c8f2, ABISELECT(280,168), "S7788C8.s7788c8f2");
    check_field_offset(lv, s7788c8f3, ABISELECT(304,184), "S7788C8.s7788c8f3");
    check_field_offset(lv, s7788c8f4, ABISELECT(320,200), "S7788C8.s7788c8f4");
    check_field_offset(lv, s7788c8f5, ABISELECT(344,212), "S7788C8.s7788c8f5");
    test_class_info(&lv, &cd_S7788C8);
    dp->~S7788C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C8(Test_S7788C8, "S7788C8", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN7S7788C8C1Ev();
extern void _ZN7S7788C8D1Ev();
Name_Map name_map_S7788C8[] = {
  NSPAIR(_ZN7S7788C8C1Ev),
  NSPAIR(_ZN7S7788C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
static Base_Class bases_S7788C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7788C6,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C8[];
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C8[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7788C8[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
Class_Descriptor cd_S7788C8 = {  "S7788C8", // class name
  bases_S7788C8, 2,
  &(vtc_S7788C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI7S7788C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7788C8),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  S7788C7  : virtual S7788C4 , virtual S7788C5 , virtual S7788C6 , virtual S7788C8 {
  int s7788c7f0;
  ::S7788C5 s7788c7f1;
  int s7788c7f2;
  short s7788c7f3:2;
  void *s7788c7f4;
  int s7788c7f5;
  virtual  ~S7788C7(); // _ZN7S7788C7D2Ev
  S7788C7(); // tgen
};
//SIG(-1 S7788C7) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S7788C7 ::~S7788C7(){ note_dtor("S7788C7", this);}
S7788C7 ::S7788C7(){ note_ctor("S7788C7", this);} // tgen

static void Test_S7788C7()
{
  extern Class_Descriptor cd_S7788C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S7788C7, buf);
    S7788C7 *dp, &lv = *(dp=new (buf) S7788C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S7788C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C7)");
    check_base_class_offset(lv, (S7788C4*), ABISELECT(264,156), "S7788C7");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*), ABISELECT(304,180), "S7788C7");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), ABISELECT(528,312), "S7788C7");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(560,328), "S7788C7");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(784,460), "S7788C7");
    check_base_class_offset(lv, (S7788C8*), ABISELECT(560,328), "S7788C7");
    check_field_offset(lv, s7788c7f0, ABISELECT(8,4), "S7788C7.s7788c7f0");
    check_field_offset(lv, s7788c7f1, ABISELECT(16,8), "S7788C7.s7788c7f1");
    check_field_offset(lv, s7788c7f2, ABISELECT(240,140), "S7788C7.s7788c7f2");
    set_bf_and_test(lv, s7788c7f3, ABISELECT(244,144), 0, 2, 1, "S7788C7");
    set_bf_and_test(lv, s7788c7f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S7788C7");
    check_field_offset(lv, s7788c7f4, ABISELECT(248,148), "S7788C7.s7788c7f4");
    check_field_offset(lv, s7788c7f5, ABISELECT(256,152), "S7788C7.s7788c7f5");
    test_class_info(&lv, &cd_S7788C7);
    dp->~S7788C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C7(Test_S7788C7, "S7788C7", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN7S7788C7C1Ev();
extern void _ZN7S7788C7D2Ev();
Name_Map name_map_S7788C7[] = {
  NSPAIR(_ZN7S7788C7C1Ev),
  NSPAIR(_ZN7S7788C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
static Base_Class bases_S7788C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(264,156), //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_S7788C5,    ABISELECT(304,180), //bcp->offset
    12, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C7[];
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C7[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7788C7[];
static  VTT_ENTRY vtt_S7788C7[] = {
  {&(_ZTV7S7788C7[6]),  6,34},
  {&(_ZTV7S7788C7[11]),  11,34},
  {&(_ZTV7S7788C7[15]),  15,34},
  {&(_ZTV7S7788C7[20]),  20,34},
  {&(_ZTV7S7788C7[28]),  28,34},
  {&(_ZTV7S7788C7[32]),  32,34},
};
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
Class_Descriptor cd_S7788C7 = {  "S7788C7", // class name
  bases_S7788C7, 6,
  &(vtc_S7788C7[0]), // expected_vtbl_contents
  &(vtt_S7788C7[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI7S7788C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7788C7),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C7),6, //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  S7788C9  : virtual S7788C7 , S7788C6 {
  int s7788c9f0[6];
  __tsi64 s7788c9f1;
  int s7788c9f2;
  void *s7788c9f3;
  long double s7788c9f4;
  virtual  ~S7788C9(); // _ZN7S7788C9D2Ev
  virtual void  v8(); // _ZN7S7788C92v8Ev
  S7788C9(); // tgen
};
//SIG(-1 S7788C9) C1{ VBC2{ VBC3{ v2 Fp Fi[2] Fp Fi} VBC4{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v4 v5 Fs:12 Fi Fc} VBC6{ BC4 BC5 v6 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC5 vd v1 Fi[6] FL Fi Fp FD}


 S7788C9 ::~S7788C9(){ note_dtor("S7788C9", this);}
void  S7788C9 ::v8(){vfunc_called(this, "_ZN7S7788C92v8Ev");}
S7788C9 ::S7788C9(){ note_ctor("S7788C9", this);} // tgen

static void Test_S7788C9()
{
  extern Class_Descriptor cd_S7788C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,154)];
    init_test(&cd_S7788C9, buf);
    S7788C9 *dp, &lv = *(dp=new (buf) S7788C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,612), "sizeof(S7788C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C9)");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(360,224), "S7788C9");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(400,248), "S7788C9");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(624,380), "S7788C9");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(656,396), "S7788C9");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(880,528), "S7788C9");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(656,396), "S7788C9");
    check_base_class_offset(lv, (S7788C7*), ABISELECT(96,68), "S7788C9");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), 0, "S7788C9");
    check_field_offset(lv, s7788c9f0, ABISELECT(20,16), "S7788C9.s7788c9f0");
    check_field_offset(lv, s7788c9f1, ABISELECT(48,40), "S7788C9.s7788c9f1");
    check_field_offset(lv, s7788c9f2, ABISELECT(56,48), "S7788C9.s7788c9f2");
    check_field_offset(lv, s7788c9f3, ABISELECT(64,52), "S7788C9.s7788c9f3");
    check_field_offset(lv, s7788c9f4, ABISELECT(80,56), "S7788C9.s7788c9f4");
    test_class_info(&lv, &cd_S7788C9);
    dp->~S7788C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C9(Test_S7788C9, "S7788C9", ABISELECT(1008,612));

#else // __cplusplus

extern void _ZN7S7788C9C1Ev();
extern void _ZN7S7788C9D2Ev();
Name_Map name_map_S7788C9[] = {
  NSPAIR(_ZN7S7788C9C1Ev),
  NSPAIR(_ZN7S7788C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
static Base_Class bases_S7788C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(360,224), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(400,248), //bcp->offset
    25, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(624,380), //bcp->offset
    29, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(656,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(880,528), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(656,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(96,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C9[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn96_N7S7788C9D1Ev,_ZThn68_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn96_N7S7788C9D0Ev,_ZThn68_N7S7788C9D0Ev)() __attribute__((weak));
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C9[] = {
  ABISELECT(656,396),
  ABISELECT(624,380),
  ABISELECT(400,248),
  ABISELECT(360,224),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  ABISELECT(-96,-68),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
  0,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-656,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-880,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7788C9[];
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C9[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C9[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C9[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C9[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C9[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C9[] = {
  {&(_ZTV7S7788C9[7]),  7,47},
  {&(_ZTV7S7788C9[19]),  19,47},
  {&(_ZTV7S7788C9[24]),  24,47},
  {&(_ZTV7S7788C9[28]),  28,47},
  {&(_ZTV7S7788C9[33]),  33,47},
  {&(_ZTV7S7788C9[41]),  41,47},
  {&(_ZTV7S7788C9[45]),  45,47},
  {&(_tg__ZTV7S7788C7__7S7788C9[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C9[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C9[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C9[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C9[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C9[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7788C9D0Ev,_ZThn68_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7788C9D1Ev,_ZThn68_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C9 = {  "S7788C9", // class name
  bases_S7788C9, 8,
  &(vtc_S7788C9[0]), // expected_vtbl_contents
  &(vtt_S7788C9[0]), // expected_vtt_contents
  ABISELECT(1008,612), // object size
  NSPAIRA(_ZTI7S7788C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7788C9),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C9),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C3  : virtual S7788C4 , virtual S7788C5 , virtual S7788C6 , virtual S7788C7 , S7788C9 {
  virtual  ~S7788C3(); // _ZN7S7788C3D2Ev
  virtual void  v9(); // _ZN7S7788C32v9Ev
  virtual void  v10(); // _ZN7S7788C33v10Ev
  S7788C3(); // tgen
};
//SIG(-1 S7788C3) C1{ VBC2{ v3 Fp Fi[2] Fp Fi} VBC3{ v4 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v5 v6 Fs:12 Fi Fc} VBC5{ VBC2 VBC3 VBC4 VBC6{ BC3 BC4 v7 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi} BC7{ VBC5 BC4 vd v8 Fi[6] FL Fi Fp FD} vd v1 v2}


 S7788C3 ::~S7788C3(){ note_dtor("S7788C3", this);}
void  S7788C3 ::v9(){vfunc_called(this, "_ZN7S7788C32v9Ev");}
void  S7788C3 ::v10(){vfunc_called(this, "_ZN7S7788C33v10Ev");}
S7788C3 ::S7788C3(){ note_ctor("S7788C3", this);} // tgen

static void Test_S7788C3()
{
  extern Class_Descriptor cd_S7788C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(65,154)];
    init_test(&cd_S7788C3, buf);
    S7788C3 *dp, &lv = *(dp=new (buf) S7788C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1024,612), "sizeof(S7788C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C3)");
    check_base_class_offset(lv, (S7788C4*), ABISELECT(96,68), "S7788C3");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(96,68), "S7788C3");
    /*is_ambiguous_... S7788C3::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*), ABISELECT(144,92), "S7788C3");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(144,92), "S7788C3");
    /*is_ambiguous_... S7788C3::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), ABISELECT(368,224), "S7788C3");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(368,224), "S7788C3");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(672,396), "S7788C3");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(896,528), "S7788C3");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(672,396), "S7788C3");
    check_base_class_offset(lv, (S7788C7*), ABISELECT(400,240), "S7788C3");
    check_base_class_offset(lv, (S7788C7*)(S7788C9*), ABISELECT(400,240), "S7788C3");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*), 0, "S7788C3");
    check_base_class_offset(lv, (S7788C9*), 0, "S7788C3");
    test_class_info(&lv, &cd_S7788C3);
    dp->~S7788C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C3(Test_S7788C3, "S7788C3", ABISELECT(1024,612));

#else // __cplusplus

extern void _ZN7S7788C3C1Ev();
extern void _ZN7S7788C3D2Ev();
Name_Map name_map_S7788C3[] = {
  NSPAIR(_ZN7S7788C3C1Ev),
  NSPAIR(_ZN7S7788C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
static Base_Class bases_S7788C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(96,68), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(144,92), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    ABISELECT(368,224), //bcp->offset
    22, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C5,    ABISELECT(672,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(896,528), //bcp->offset
    45, //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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(672,396), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(400,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7788C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C3[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C3D1Ev();
extern void _ZN7S7788C3D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev)() __attribute__((weak));
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY vtc_S7788C3[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7788C3[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__7S7788C3[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9__7S7788C3[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C9__7S7788C3[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C9__7S7788C3[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C9__7S7788C3[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C9__7S7788C3[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C9__7S7788C3[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C3[] = {
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C3[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C3[] = {
  0,
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C3[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C3[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C3[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C3[] = {
  {&(_ZTV7S7788C3[7]),  7,49},
  {&(_tg__ZTV7S7788C9__7S7788C3[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C9__7S7788C3[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C9__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C9__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C9__7S7788C3[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C9__7S7788C3[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C9__7S7788C3[2]),  2,4},
  {&(_ZTV7S7788C3[17]),  17,49},
  {&(_ZTV7S7788C3[21]),  21,49},
  {&(_ZTV7S7788C3[26]),  26,49},
  {&(_ZTV7S7788C3[35]),  35,49},
  {&(_ZTV7S7788C3[43]),  43,49},
  {&(_ZTV7S7788C3[47]),  47,49},
  {&(_tg__ZTV7S7788C7__7S7788C3[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C3[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C3[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C3[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C3[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C3[];
extern  VTBL_ENTRY _ZTV7S7788C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C3[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C3 = {  "S7788C3", // class name
  bases_S7788C3, 9,
  &(vtc_S7788C3[0]), // expected_vtbl_contents
  &(vtt_S7788C3[0]), // expected_vtt_contents
  ABISELECT(1024,612), // object size
  NSPAIRA(_ZTI7S7788C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7788C3),49, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C3),20, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C2  : virtual S7788C3 , virtual S7788C9 , S7788C6 {
  ::S7788C7 s7788c2f0;
  virtual void  v11(); // _ZN7S7788C23v11Ev
  virtual void  v12(); // _ZN7S7788C23v12Ev
  virtual void  v13(); // _ZN7S7788C23v13Ev
  ~S7788C2(); // tgen
  S7788C2(); // tgen
};
//SIG(-1 S7788C2) C1{ VBC2{ VBC3{ v4 Fp Fi[2] Fp Fi} VBC4{ v5 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v6 v7 Fs:12 Fi Fc} VBC6{ VBC3 VBC4 VBC5 VBC7{ BC4 BC5 v8 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC8{ VBC6 BC5 vd v9 Fi[6] FL Fi Fp FD} vd v10 v11} VBC8 BC5 v1 v2 v3 FC6}


void  S7788C2 ::v11(){vfunc_called(this, "_ZN7S7788C23v11Ev");}
void  S7788C2 ::v12(){vfunc_called(this, "_ZN7S7788C23v12Ev");}
void  S7788C2 ::v13(){vfunc_called(this, "_ZN7S7788C23v13Ev");}
S7788C2 ::~S7788C2(){ note_dtor("S7788C2", this);} // tgen
S7788C2 ::S7788C2(){ note_ctor("S7788C2", this);} // tgen

static void Test_S7788C2()
{
  extern Class_Descriptor cd_S7788C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,311)];
    init_test(&cd_S7788C2, buf);
    S7788C2 *dp, &lv = *(dp=new (buf) S7788C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1240), "sizeof(S7788C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C2)");
    check_base_class_offset(lv, (S7788C4*)(S7788C3*), ABISELECT(1040,628), "S7788C2");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(1040,628), "S7788C2");
    /*is_ambiguous_... S7788C3::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C3*), ABISELECT(1088,652), "S7788C2");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(1088,652), "S7788C2");
    /*is_ambiguous_... S7788C3::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C3*), ABISELECT(1312,784), "S7788C2");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(1312,784), "S7788C2");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(1616,956), "S7788C2");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(1840,1088), "S7788C2");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(1616,956), "S7788C2");
    check_base_class_offset(lv, (S7788C7*)(S7788C3*), ABISELECT(1344,800), "S7788C2");
    check_base_class_offset(lv, (S7788C7*)(S7788C9*)(S7788C3*), ABISELECT(1344,800), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C7*)(S7788C9*), ABISELECT(1344,800), "S7788C2");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C2");
    check_base_class_offset(lv, (S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C2");
    check_base_class_offset(lv, (S7788C3*), ABISELECT(944,560), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*), ABISELECT(1968,1172), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C9*), ABISELECT(1968,1172), "S7788C2");
    /*is_ambiguous_... S7788C2::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*), 0, "S7788C2");
    check_field_offset(lv, s7788c2f0, ABISELECT(32,16), "S7788C2.s7788c2f0");
    test_class_info(&lv, &cd_S7788C2);
    dp->~S7788C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C2(Test_S7788C2, "S7788C2", ABISELECT(2064,1240));

#else // __cplusplus

extern void _ZN7S7788C2C1Ev();
extern void _ZN7S7788C2D1Ev();
Name_Map name_map_S7788C2[] = {
  NSPAIR(_ZN7S7788C2C1Ev),
  NSPAIR(_ZN7S7788C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C3;
extern VTBL_ENTRY _ZTI7S7788C3[];
extern  VTBL_ENTRY _ZTV7S7788C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C3[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
static Base_Class bases_S7788C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(1040,628), //bcp->offset
    36, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1088,652), //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
    6, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(1312,784), //bcp->offset
    44, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1616,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(1840,1088), //bcp->offset
    67, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(1616,956), //bcp->offset
    59, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(1344,800), //bcp->offset
    50, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(944,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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(944,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7788C3,    ABISELECT(944,560), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    ABISELECT(1968,1172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(1968,1172), //bcp->offset
    71, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI7S7788C2[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C23v11Ev();
extern void _ZN7S7788C23v12Ev();
extern void _ZN7S7788C23v13Ev();
extern void _ZN7S7788C2D1Ev();
extern void _ZN7S7788C2D0Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY vtc_S7788C2[] = {
  ABISELECT(1968,1172),
  ABISELECT(1616,956),
  ABISELECT(1344,800),
  ABISELECT(1312,784),
  ABISELECT(1088,652),
  ABISELECT(1040,628),
  ABISELECT(944,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D0Ev,
  0,
  0,
  0,
  ABISELECT(-944,-560),
  0,
  0,
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  ABISELECT(-944,-560),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
  0,
  ABISELECT(-1040,-628),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-1312,-784),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(-1344,-800),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-1344,-800),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1616,-956),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-1840,-1088),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  0,
  ABISELECT(-1968,-1172),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  ABISELECT(-1968,-1172),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern VTBL_ENTRY _ZTV7S7788C2[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C3D1Ev();
extern void _ZN7S7788C3D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C3__7S7788C2[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C2[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C2[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C3__7S7788C2[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C3__7S7788C2[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C3__7S7788C2[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev),
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C3__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C2[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C2[] = {
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C2[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C2[] = {
  0,
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C2[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C2[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__A1__7S7788C2[] = {
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9__A1__7S7788C2[] = {
  ABISELECT(624,372),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(624,372),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C9__A1__7S7788C2[] = {
  0,
  ABISELECT(928,544),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C9__A1__7S7788C2[] = {
  0,
  ABISELECT(880,520),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C9__A1__7S7788C2[] = {
  0,
  0,
  ABISELECT(656,388),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C9__A1__7S7788C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(352,216),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C2[] = {
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C2[] = {
  {&(_ZTV7S7788C2[9]),  9,87},
  {&(_ZTV7S7788C2[29]),  29,87},
  {&(_ZTV7S7788C2[39]),  39,87},
  {&(_ZTV7S7788C2[43]),  43,87},
  {&(_ZTV7S7788C2[48]),  48,87},
  {&(_ZTV7S7788C2[57]),  57,87},
  {&(_ZTV7S7788C2[65]),  65,87},
  {&(_ZTV7S7788C2[69]),  69,87},
  {&(_ZTV7S7788C2[82]),  82,87},
  {&(_tg__ZTV7S7788C3__7S7788C2[7]),  7,14},
  {&(_tg__ZTV7S7788C97S7788C3__7S7788C2[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C2[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C2[2]),  2,4},
  {&(_tg__ZTV7S7788C4__7S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C3__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C3__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C7__7S7788C3__7S7788C2[7]),  7,9},
  {&(_tg__ZTV7S7788C8__7S7788C3__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C2[2]),  2,4},
  {&(_tg__ZTV7S7788C7__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C2[2]),  2,4},
  {&(_tg__ZTV7S7788C9__A1__7S7788C2[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C9__A1__7S7788C2[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C9__A1__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C9__A1__7S7788C2[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C9__A1__7S7788C2[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C9__A1__7S7788C2[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C2[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C2[];
extern  VTBL_ENTRY _ZTV7S7788C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C2[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C2 = {  "S7788C2", // class name
  bases_S7788C2, 13,
  &(vtc_S7788C2[0]), // expected_vtbl_contents
  &(vtt_S7788C2[0]), // expected_vtt_contents
  ABISELECT(2064,1240), // object size
  NSPAIRA(_ZTI7S7788C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7788C2),87, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C2),36, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7788C1  : S7788C2 {
  int  :0;
  virtual  ~S7788C1(); // _ZN7S7788C1D2Ev
  virtual void  v1(); // _ZN7S7788C12v1Ev
  virtual void  v2(); // _ZN7S7788C12v2Ev
  S7788C1(); // tgen
};
//SIG(1 S7788C1) C1{ BC2{ VBC3{ VBC4{ v3 Fp Fi[2] Fp Fi} VBC5{ v4 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC6{ v5 v6 Fs:12 Fi Fc} VBC7{ VBC4 VBC5 VBC6 VBC8{ BC5 BC6 v7 FD FL FC6 FL[2] Fp[3] Fi} vd Fi FC5 Fi Fs:2 Fp Fi} BC9{ VBC7 BC6 vd v8 Fi[6] FL Fi Fp FD} vd v9 v10} VBC9 BC6 v11 v12 v13 FC7} vd v1 v2 Fi:0}


 S7788C1 ::~S7788C1(){ note_dtor("S7788C1", this);}
void  S7788C1 ::v1(){vfunc_called(this, "_ZN7S7788C12v1Ev");}
void  S7788C1 ::v2(){vfunc_called(this, "_ZN7S7788C12v2Ev");}
S7788C1 ::S7788C1(){ note_ctor("S7788C1", this);} // tgen

static void Test_S7788C1()
{
  extern Class_Descriptor cd_S7788C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(130,311)];
    init_test(&cd_S7788C1, buf);
    S7788C1 *dp, &lv = *(dp=new (buf) S7788C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2064,1240), "sizeof(S7788C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7788C1)");
    check_base_class_offset(lv, (S7788C4*)(S7788C3*), ABISELECT(1040,628), "S7788C1");
    check_base_class_offset(lv, (S7788C4*)(S7788C7*), ABISELECT(1040,628), "S7788C1");
    /*is_ambiguous_... S7788C3::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C3*), ABISELECT(1088,652), "S7788C1");
    /*is_ambiguous_... S7788C7::S7788C5 */ AMB_check_base_class_offset(lv, (S7788C5*)(S7788C7*), ABISELECT(1088,652), "S7788C1");
    /*is_ambiguous_... S7788C3::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C3*), ABISELECT(1312,784), "S7788C1");
    /*is_ambiguous_... S7788C7::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C7*), ABISELECT(1312,784), "S7788C1");
    check_base_class_offset(lv, (S7788C5*)(S7788C8*), ABISELECT(1616,956), "S7788C1");
    check_base_class_offset(lv, (S7788C6*)(S7788C8*), ABISELECT(1840,1088), "S7788C1");
    check_base_class_offset(lv, (S7788C8*)(S7788C7*), ABISELECT(1616,956), "S7788C1");
    check_base_class_offset(lv, (S7788C7*)(S7788C3*), ABISELECT(1344,800), "S7788C1");
    check_base_class_offset(lv, (S7788C7*)(S7788C9*)(S7788C3*), ABISELECT(1344,800), "S7788C1");
    /*is_ambiguous_... S7788C1::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C7*)(S7788C9*), ABISELECT(1344,800), "S7788C1");
    /*is_ambiguous_... S7788C9::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C1");
    check_base_class_offset(lv, (S7788C9*)(S7788C3*), ABISELECT(944,560), "S7788C1");
    check_base_class_offset(lv, (S7788C3*)(S7788C2*), ABISELECT(944,560), "S7788C1");
    /*is_ambiguous_... S7788C1::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C9*), ABISELECT(1968,1172), "S7788C1");
    /*is_ambiguous_... S7788C2::S7788C9 */ AMB_check_base_class_offset(lv, (S7788C9*)(S7788C2*), ABISELECT(1968,1172), "S7788C1");
    /*is_ambiguous_... S7788C2::S7788C6 */ AMB_check_base_class_offset(lv, (S7788C6*)(S7788C2*), 0, "S7788C1");
    check_base_class_offset(lv, (S7788C2*), 0, "S7788C1");
    test_class_info(&lv, &cd_S7788C1);
    dp->~S7788C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7788C1(Test_S7788C1, "S7788C1", ABISELECT(2064,1240));

#else // __cplusplus

extern void _ZN7S7788C1C1Ev();
extern void _ZN7S7788C1D2Ev();
Name_Map name_map_S7788C1[] = {
  NSPAIR(_ZN7S7788C1C1Ev),
  NSPAIR(_ZN7S7788C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7788C4;
extern VTBL_ENTRY _ZTI7S7788C4[];
extern  VTBL_ENTRY _ZTV7S7788C4[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C5;
extern VTBL_ENTRY _ZTI7S7788C5[];
extern  VTBL_ENTRY _ZTV7S7788C5[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C8;
extern VTBL_ENTRY _ZTI7S7788C8[];
extern  VTBL_ENTRY _ZTV7S7788C8[];
extern Class_Descriptor cd_S7788C7;
extern VTBL_ENTRY _ZTI7S7788C7[];
extern  VTBL_ENTRY _ZTV7S7788C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C7[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C3;
extern VTBL_ENTRY _ZTI7S7788C3[];
extern  VTBL_ENTRY _ZTV7S7788C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C3[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C9;
extern VTBL_ENTRY _ZTI7S7788C9[];
extern  VTBL_ENTRY _ZTV7S7788C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C9[];
extern Class_Descriptor cd_S7788C6;
extern VTBL_ENTRY _ZTI7S7788C6[];
extern  VTBL_ENTRY _ZTV7S7788C6[];
extern Class_Descriptor cd_S7788C2;
extern VTBL_ENTRY _ZTI7S7788C2[];
extern  VTBL_ENTRY _ZTV7S7788C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C2[];
static Base_Class bases_S7788C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7788C4,    ABISELECT(1040,628), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C5,    ABISELECT(1088,652), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(1312,784), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //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_S7788C5,    ABISELECT(1616,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7788C6,    ABISELECT(1840,1088), //bcp->offset
    69, //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
    5, //immediately_derived
  0, 0},
  {&cd_S7788C8,    ABISELECT(1616,956), //bcp->offset
    61, //bcp->virtual_function_table_offset
    6, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7788C7,    ABISELECT(1344,800), //bcp->offset
    52, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(944,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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(944,560), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7788C3,    ABISELECT(944,560), //bcp->offset
    18, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7788C6,    ABISELECT(1968,1172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7788C9,    ABISELECT(1968,1172), //bcp->offset
    73, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7788C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7788C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7788C1[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C23v11Ev();
extern void _ZN7S7788C23v12Ev();
extern void _ZN7S7788C23v13Ev();
extern void _ZN7S7788C1D1Ev();
extern void _ZN7S7788C1D0Ev();
extern void _ZN7S7788C12v1Ev();
extern void _ZN7S7788C12v2Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev)();
extern void ABISELECT(_ZThn944_N7S7788C1D1Ev,_ZThn560_N7S7788C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev)();
extern void ABISELECT(_ZThn944_N7S7788C1D0Ev,_ZThn560_N7S7788C1D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
extern void _ZN7S7788C42v3Ev();
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S7788C1D1Ev,_ZTv0_n28_N7S7788C1D1Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C1D1Ev,_ZThn800_N7S7788C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C1D0Ev,_ZTv0_n28_N7S7788C1D0Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C1D0Ev,_ZThn800_N7S7788C1D0Ev)() __attribute__((weak));
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C1D1Ev,_ZThn1172_N7S7788C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C1D0Ev,_ZThn1172_N7S7788C1D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY vtc_S7788C1[] = {
  ABISELECT(1968,1172),
  ABISELECT(1616,956),
  ABISELECT(1344,800),
  ABISELECT(1312,784),
  ABISELECT(1088,652),
  ABISELECT(1040,628),
  ABISELECT(944,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7788C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7788C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-944,-560),
  0,
  0,
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  ABISELECT(-944,-560),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
  0,
  ABISELECT(-1040,-628),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
  0,
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  0,
  0,
  ABISELECT(-1312,-784),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  ABISELECT(-1344,-800),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-1344,-800),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C1D1Ev,_ZTv0_n28_N7S7788C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C1D0Ev,_ZTv0_n28_N7S7788C1D0Ev),
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1616,-956),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
  ABISELECT(-1840,-1088),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  0,
  ABISELECT(-1968,-1172),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  ABISELECT(-1968,-1172),
  (VTBL_ENTRY)&(_ZTI7S7788C1[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern VTBL_ENTRY _ZTV7S7788C1[];
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C23v11Ev();
extern void _ZN7S7788C23v12Ev();
extern void _ZN7S7788C23v13Ev();
extern void _ZN7S7788C2D1Ev();
extern void _ZN7S7788C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C2__7S7788C1[] = {
  ABISELECT(1968,1172),
  ABISELECT(1616,956),
  ABISELECT(1344,800),
  ABISELECT(1312,784),
  ABISELECT(1088,652),
  ABISELECT(1040,628),
  ABISELECT(944,560),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7788C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C2D0Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C3__7S7788C2__7S7788C1[] = {
  0,
  0,
  0,
  ABISELECT(-944,-560),
  0,
  0,
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  ABISELECT(-944,-560),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C2__7S7788C1[] = {
  0,
  ABISELECT(-1040,-628),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C2__7S7788C1[] = {
  0,
  ABISELECT(-1088,-652),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C2__7S7788C1[] = {
  0,
  0,
  ABISELECT(-1312,-784),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C2__7S7788C1[] = {
  ABISELECT(-1344,-800),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-1344,-800),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev),
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C2__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1616,-956),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C2__7S7788C1[] = {
  ABISELECT(-1840,-1088),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev)();
extern void ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev)() __attribute__((weak));
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__A1__7S7788C2__7S7788C1[] = {
  0,
  ABISELECT(-1968,-1172),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  ABISELECT(-1968,-1172),
  (VTBL_ENTRY)&(_ZTI7S7788C2[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C3D1Ev();
extern void _ZN7S7788C3D0Ev();
extern void _ZN7S7788C92v8Ev();
extern void _ZN7S7788C32v9Ev();
extern void _ZN7S7788C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C3__7S7788C1[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
  (VTBL_ENTRY)&_ZN7S7788C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7788C33v10Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(672,396),
  ABISELECT(368,224),
  ABISELECT(144,92),
  ABISELECT(96,68),
  ABISELECT(400,240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C1[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C1[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C3__7S7788C1[] = {
  0,
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C3__7S7788C1[] = {
  0,
  0,
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev)();
extern void ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C3__7S7788C1[] = {
  ABISELECT(-400,-240),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(-400,-240),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev),
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C3__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-672,-396),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C1[] = {
  ABISELECT(-896,-528),
  (VTBL_ENTRY)&(_ZTI7S7788C3[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C7D1Ev();
extern void _ZN7S7788C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C1[] = {
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C7D0Ev,
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C7__7S7788C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C7__7S7788C1[] = {
  0,
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C7__7S7788C1[] = {
  0,
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C7__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C1[] = {
  ABISELECT(-496,-288),
  (VTBL_ENTRY)&(_ZTI7S7788C7[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
extern void _ZN7S7788C9D1Ev();
extern void _ZN7S7788C9D0Ev();
extern void _ZN7S7788C92v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C9__A1__7S7788C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-656,-388),
  ABISELECT(-880,-520),
  ABISELECT(-928,-544),
  ABISELECT(-624,-372),
  0,
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7788C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7788C92v8Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7788C7__7S7788C9__A1__7S7788C1[] = {
  ABISELECT(624,372),
  ABISELECT(272,156),
  ABISELECT(-32,-16),
  ABISELECT(-256,-148),
  ABISELECT(-304,-172),
  ABISELECT(624,372),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev),
};
extern void _ZN7S7788C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C4__7S7788C9__A1__7S7788C1[] = {
  0,
  ABISELECT(928,544),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C42v3Ev,
};
extern void _ZN7S7788C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C5__7S7788C9__A1__7S7788C1[] = {
  0,
  ABISELECT(880,520),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C6__7S7788C9__A1__7S7788C1[] = {
  0,
  0,
  ABISELECT(656,388),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
extern void _ZN7S7788C52v4Ev();
extern void _ZN7S7788C82v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C8__7S7788C9__A1__7S7788C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(352,216),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7788C82v7Ev,
};
extern void _ZN7S7788C62v5Ev();
extern void _ZN7S7788C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C1[] = {
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S7788C9[0]),
  (VTBL_ENTRY)&_ZN7S7788C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7788C62v6Ev,
};
static  VTT_ENTRY vtt_S7788C1[] = {
  {&(_ZTV7S7788C1[9]),  9,89},
  {&(_tg__ZTV7S7788C2__7S7788C1[9]),  9,16},
  {&(_tg__ZTV7S7788C3__7S7788C2__7S7788C1[13]),  13,20},
  {&(_tg__ZTV7S7788C4__7S7788C2__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C2__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C2__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C7__7S7788C2__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C8__7S7788C2__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C2__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C9__A1__7S7788C2__7S7788C1[11]),  11,16},
  {&(_ZTV7S7788C1[31]),  31,89},
  {&(_ZTV7S7788C1[41]),  41,89},
  {&(_ZTV7S7788C1[45]),  45,89},
  {&(_ZTV7S7788C1[50]),  50,89},
  {&(_ZTV7S7788C1[59]),  59,89},
  {&(_ZTV7S7788C1[67]),  67,89},
  {&(_ZTV7S7788C1[71]),  71,89},
  {&(_ZTV7S7788C1[84]),  84,89},
  {&(_tg__ZTV7S7788C3__7S7788C1[7]),  7,14},
  {&(_tg__ZTV7S7788C97S7788C3__7S7788C1[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C97S7788C3__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C97S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C97S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C97S7788C3__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C97S7788C3__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C97S7788C3__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C4__7S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C3__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C3__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C7__7S7788C3__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C8__7S7788C3__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C3__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C7__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C4__7S7788C7__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C7__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C7__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C7__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C7__7S7788C1[2]),  2,4},
  {&(_tg__ZTV7S7788C9__A1__7S7788C1[7]),  7,12},
  {&(_tg__ZTV7S7788C7__7S7788C9__A1__7S7788C1[7]),  7,9},
  {&(_tg__ZTV7S7788C4__7S7788C9__A1__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C5__7S7788C9__A1__7S7788C1[3]),  3,4},
  {&(_tg__ZTV7S7788C6__7S7788C9__A1__7S7788C1[4]),  4,6},
  {&(_tg__ZTV7S7788C8__7S7788C9__A1__7S7788C1[6]),  6,8},
  {&(_tg__ZTV7S7788C67S7788C8__A1__7S7788C9__A1__7S7788C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7788C1[];
extern  VTBL_ENTRY _ZTV7S7788C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7788C1[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D0Ev,_ZTv0_n28_N7S7788C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D0Ev,_ZThn240_N7S7788C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C3D1Ev,_ZTv0_n28_N7S7788C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C3D1Ev,_ZThn240_N7S7788C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D0Ev,_ZTv0_n28_N7S7788C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D0Ev,_ZThn240_N7S7788C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C9D1Ev,_ZTv0_n28_N7S7788C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7788C9D1Ev,_ZThn240_N7S7788C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D0Ev,_ZTv0_n28_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D0Ev,_ZThn800_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C2D1Ev,_ZTv0_n28_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C2D1Ev,_ZThn800_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D0Ev,_ZTv0_n40_N7S7788C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D0Ev,_ZThn1172_N7S7788C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D0Ev,_ZThn560_N7S7788C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C2D1Ev,_ZTv0_n40_N7S7788C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C2D1Ev,_ZThn1172_N7S7788C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C2D1Ev,_ZThn560_N7S7788C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C1D0Ev,_ZTv0_n28_N7S7788C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C1D0Ev,_ZThn800_N7S7788C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7788C1D1Ev,_ZTv0_n28_N7S7788C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N7S7788C1D1Ev,_ZThn800_N7S7788C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C1D0Ev,_ZTv0_n40_N7S7788C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C1D0Ev,_ZThn1172_N7S7788C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C1D0Ev,_ZThn560_N7S7788C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S7788C1D1Ev,_ZTv0_n40_N7S7788C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1968_N7S7788C1D1Ev,_ZThn1172_N7S7788C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn944_N7S7788C1D1Ev,_ZThn560_N7S7788C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7788C1 = {  "S7788C1", // class name
  bases_S7788C1, 14,
  &(vtc_S7788C1[0]), // expected_vtbl_contents
  &(vtt_S7788C1[0]), // expected_vtt_contents
  ABISELECT(2064,1240), // object size
  NSPAIRA(_ZTI7S7788C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7788C1),89, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7788C1),45, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C2_nt  {
  ::S4228C44 s8016c2f0;
  void  mf8016c2(); // _ZN10S8016C2_nt8mf8016c2Ev
  virtual  ~S8016C2_nt(); // _ZN10S8016C2_ntD1Ev
  S8016C2_nt(); // tgen
};
//SIG(-1 S8016C2_nt) C1{ vd m FC2{ m Fp Fi[2] FC3{ m}}}


void  S8016C2_nt ::mf8016c2(){}
 S8016C2_nt ::~S8016C2_nt(){ note_dtor("S8016C2_nt", this);}
S8016C2_nt ::S8016C2_nt(){ note_ctor("S8016C2_nt", this);} // tgen

//skip512 S8016C2_nt

#else // __cplusplus

extern void _ZN10S8016C2_ntC1Ev();
extern void _ZN10S8016C2_ntD1Ev();
Name_Map name_map_S8016C2_nt[] = {
  NSPAIR(_ZN10S8016C2_ntC1Ev),
  NSPAIR(_ZN10S8016C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8016C2_nt[];
extern void _ZN10S8016C2_ntD1Ev();
extern void _ZN10S8016C2_ntD0Ev();
static  VTBL_ENTRY vtc_S8016C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8016C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8016C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8016C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8016C2_nt[];
VTBL_ENTRY *P__ZTI10S8016C2_nt = _ZTI10S8016C2_nt; 
extern  VTBL_ENTRY _ZTV10S8016C2_nt[];
Class_Descriptor cd_S8016C2_nt = {  "S8016C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8016C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI10S8016C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8016C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C5_nt  {
  virtual  ~S8016C5_nt(); // _ZN10S8016C5_ntD1Ev
  virtual void  v24(); // _ZN10S8016C5_nt3v24Ev
  virtual void  v25(); // _ZN10S8016C5_nt3v25Ev
  virtual void  v26(); // _ZN10S8016C5_nt3v26Ev
  virtual void  v27(); // _ZN10S8016C5_nt3v27Ev
  virtual void  v28(); // _ZN10S8016C5_nt3v28Ev
  virtual void  v29(); // _ZN10S8016C5_nt3v29Ev
  virtual void  v30(); // _ZN10S8016C5_nt3v30Ev
  virtual void  v31(); // _ZN10S8016C5_nt3v31Ev
  virtual void  v32(); // _ZN10S8016C5_nt3v32Ev
  virtual void  v33(); // _ZN10S8016C5_nt3v33Ev
  virtual void  v34(); // _ZN10S8016C5_nt3v34Ev
  virtual void  v35(); // _ZN10S8016C5_nt3v35Ev
  virtual void  v36(); // _ZN10S8016C5_nt3v36Ev
  virtual void  v37(); // _ZN10S8016C5_nt3v37Ev
  virtual void  v38(); // _ZN10S8016C5_nt3v38Ev
  virtual void  v39(); // _ZN10S8016C5_nt3v39Ev
  S8016C5_nt(); // tgen
};
//SIG(-1 S8016C5_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16}


 S8016C5_nt ::~S8016C5_nt(){ note_dtor("S8016C5_nt", this);}
void  S8016C5_nt ::v24(){vfunc_called(this, "_ZN10S8016C5_nt3v24Ev");}
void  S8016C5_nt ::v25(){vfunc_called(this, "_ZN10S8016C5_nt3v25Ev");}
void  S8016C5_nt ::v26(){vfunc_called(this, "_ZN10S8016C5_nt3v26Ev");}
void  S8016C5_nt ::v27(){vfunc_called(this, "_ZN10S8016C5_nt3v27Ev");}
void  S8016C5_nt ::v28(){vfunc_called(this, "_ZN10S8016C5_nt3v28Ev");}
void  S8016C5_nt ::v29(){vfunc_called(this, "_ZN10S8016C5_nt3v29Ev");}
void  S8016C5_nt ::v30(){vfunc_called(this, "_ZN10S8016C5_nt3v30Ev");}
void  S8016C5_nt ::v31(){vfunc_called(this, "_ZN10S8016C5_nt3v31Ev");}
void  S8016C5_nt ::v32(){vfunc_called(this, "_ZN10S8016C5_nt3v32Ev");}
void  S8016C5_nt ::v33(){vfunc_called(this, "_ZN10S8016C5_nt3v33Ev");}
void  S8016C5_nt ::v34(){vfunc_called(this, "_ZN10S8016C5_nt3v34Ev");}
void  S8016C5_nt ::v35(){vfunc_called(this, "_ZN10S8016C5_nt3v35Ev");}
void  S8016C5_nt ::v36(){vfunc_called(this, "_ZN10S8016C5_nt3v36Ev");}
void  S8016C5_nt ::v37(){vfunc_called(this, "_ZN10S8016C5_nt3v37Ev");}
void  S8016C5_nt ::v38(){vfunc_called(this, "_ZN10S8016C5_nt3v38Ev");}
void  S8016C5_nt ::v39(){vfunc_called(this, "_ZN10S8016C5_nt3v39Ev");}
S8016C5_nt ::S8016C5_nt(){ note_ctor("S8016C5_nt", this);} // tgen

//skip512 S8016C5_nt

#else // __cplusplus

extern void _ZN10S8016C5_ntC1Ev();
extern void _ZN10S8016C5_ntD1Ev();
Name_Map name_map_S8016C5_nt[] = {
  NSPAIR(_ZN10S8016C5_ntC1Ev),
  NSPAIR(_ZN10S8016C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8016C5_nt[];
extern void _ZN10S8016C5_ntD1Ev();
extern void _ZN10S8016C5_ntD0Ev();
extern void _ZN10S8016C5_nt3v24Ev();
extern void _ZN10S8016C5_nt3v25Ev();
extern void _ZN10S8016C5_nt3v26Ev();
extern void _ZN10S8016C5_nt3v27Ev();
extern void _ZN10S8016C5_nt3v28Ev();
extern void _ZN10S8016C5_nt3v29Ev();
extern void _ZN10S8016C5_nt3v30Ev();
extern void _ZN10S8016C5_nt3v31Ev();
extern void _ZN10S8016C5_nt3v32Ev();
extern void _ZN10S8016C5_nt3v33Ev();
extern void _ZN10S8016C5_nt3v34Ev();
extern void _ZN10S8016C5_nt3v35Ev();
extern void _ZN10S8016C5_nt3v36Ev();
extern void _ZN10S8016C5_nt3v37Ev();
extern void _ZN10S8016C5_nt3v38Ev();
extern void _ZN10S8016C5_nt3v39Ev();
static  VTBL_ENTRY vtc_S8016C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8016C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S8016C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v39Ev,
};
extern VTBL_ENTRY _ZTI10S8016C5_nt[];
VTBL_ENTRY *P__ZTI10S8016C5_nt = _ZTI10S8016C5_nt; 
extern  VTBL_ENTRY _ZTV10S8016C5_nt[];
Class_Descriptor cd_S8016C5_nt = {  "S8016C5_nt", // class name
  0,0,//no base classes
  &(vtc_S8016C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8016C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8016C5_nt),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C6_nt  {
  virtual  ~S8016C6_nt(); // _ZN10S8016C6_ntD1Ev
  virtual void  v40(); // _ZN10S8016C6_nt3v40Ev
  virtual void  v41(); // _ZN10S8016C6_nt3v41Ev
  virtual void  v42(); // _ZN10S8016C6_nt3v42Ev
  virtual void  v43(); // _ZN10S8016C6_nt3v43Ev
  virtual void  v44(); // _ZN10S8016C6_nt3v44Ev
  virtual void  v45(); // _ZN10S8016C6_nt3v45Ev
  virtual void  v46(); // _ZN10S8016C6_nt3v46Ev
  S8016C6_nt(); // tgen
};
//SIG(-1 S8016C6_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S8016C6_nt ::~S8016C6_nt(){ note_dtor("S8016C6_nt", this);}
void  S8016C6_nt ::v40(){vfunc_called(this, "_ZN10S8016C6_nt3v40Ev");}
void  S8016C6_nt ::v41(){vfunc_called(this, "_ZN10S8016C6_nt3v41Ev");}
void  S8016C6_nt ::v42(){vfunc_called(this, "_ZN10S8016C6_nt3v42Ev");}
void  S8016C6_nt ::v43(){vfunc_called(this, "_ZN10S8016C6_nt3v43Ev");}
void  S8016C6_nt ::v44(){vfunc_called(this, "_ZN10S8016C6_nt3v44Ev");}
void  S8016C6_nt ::v45(){vfunc_called(this, "_ZN10S8016C6_nt3v45Ev");}
void  S8016C6_nt ::v46(){vfunc_called(this, "_ZN10S8016C6_nt3v46Ev");}
S8016C6_nt ::S8016C6_nt(){ note_ctor("S8016C6_nt", this);} // tgen

//skip512 S8016C6_nt

#else // __cplusplus

extern void _ZN10S8016C6_ntC1Ev();
extern void _ZN10S8016C6_ntD1Ev();
Name_Map name_map_S8016C6_nt[] = {
  NSPAIR(_ZN10S8016C6_ntC1Ev),
  NSPAIR(_ZN10S8016C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8016C6_nt[];
extern void _ZN10S8016C6_ntD1Ev();
extern void _ZN10S8016C6_ntD0Ev();
extern void _ZN10S8016C6_nt3v40Ev();
extern void _ZN10S8016C6_nt3v41Ev();
extern void _ZN10S8016C6_nt3v42Ev();
extern void _ZN10S8016C6_nt3v43Ev();
extern void _ZN10S8016C6_nt3v44Ev();
extern void _ZN10S8016C6_nt3v45Ev();
extern void _ZN10S8016C6_nt3v46Ev();
static  VTBL_ENTRY vtc_S8016C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8016C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S8016C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v46Ev,
};
extern VTBL_ENTRY _ZTI10S8016C6_nt[];
VTBL_ENTRY *P__ZTI10S8016C6_nt = _ZTI10S8016C6_nt; 
extern  VTBL_ENTRY _ZTV10S8016C6_nt[];
Class_Descriptor cd_S8016C6_nt = {  "S8016C6_nt", // class name
  0,0,//no base classes
  &(vtc_S8016C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8016C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8016C6_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8016C1  : S8016C2_nt , S8016C5_nt , S8016C6_nt {
  void *s8016c1f0[2];
  char s8016c1f1;
  ::S4228C19_nt s8016c1f2;
  virtual  ~S8016C1(); // _ZN7S8016C1D1Ev
  virtual void  v1(); // _ZN7S8016C12v1Ev
  virtual void  v2(); // _ZN7S8016C12v2Ev
  virtual void  v3(); // _ZN7S8016C12v3Ev
  virtual void  v4(); // _ZN7S8016C12v4Ev
  virtual void  v5(); // _ZN7S8016C12v5Ev
  virtual void  v6(); // _ZN7S8016C12v6Ev
  virtual void  v7(); // _ZN7S8016C12v7Ev
  virtual void  v8(); // _ZN7S8016C12v8Ev
  virtual void  v9(); // _ZN7S8016C12v9Ev
  virtual void  v10(); // _ZN7S8016C13v10Ev
  virtual void  v11(); // _ZN7S8016C13v11Ev
  virtual void  v12(); // _ZN7S8016C13v12Ev
  virtual void  v13(); // _ZN7S8016C13v13Ev
  virtual void  v14(); // _ZN7S8016C13v14Ev
  virtual void  v15(); // _ZN7S8016C13v15Ev
  virtual void  v16(); // _ZN7S8016C13v16Ev
  virtual void  v17(); // _ZN7S8016C13v17Ev
  virtual void  v18(); // _ZN7S8016C13v18Ev
  virtual void  v19(); // _ZN7S8016C13v19Ev
  virtual void  v20(); // _ZN7S8016C13v20Ev
  virtual void  v21(); // _ZN7S8016C13v21Ev
  virtual void  v22(); // _ZN7S8016C13v22Ev
  virtual void  v23(); // _ZN7S8016C13v23Ev
  S8016C1(); // tgen
};
//SIG(1 S8016C1) C1{ BC2{ vd m FC3{ m Fp Fi[2] FC4{ m}}} BC5{ vd v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39} BC6{ vd v40 v41 v42 v43 v44 v45 v46} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp[2] Fc FC7{ m Fp Fi FC8{ m}}}


 S8016C1 ::~S8016C1(){ note_dtor("S8016C1", this);}
void  S8016C1 ::v1(){vfunc_called(this, "_ZN7S8016C12v1Ev");}
void  S8016C1 ::v2(){vfunc_called(this, "_ZN7S8016C12v2Ev");}
void  S8016C1 ::v3(){vfunc_called(this, "_ZN7S8016C12v3Ev");}
void  S8016C1 ::v4(){vfunc_called(this, "_ZN7S8016C12v4Ev");}
void  S8016C1 ::v5(){vfunc_called(this, "_ZN7S8016C12v5Ev");}
void  S8016C1 ::v6(){vfunc_called(this, "_ZN7S8016C12v6Ev");}
void  S8016C1 ::v7(){vfunc_called(this, "_ZN7S8016C12v7Ev");}
void  S8016C1 ::v8(){vfunc_called(this, "_ZN7S8016C12v8Ev");}
void  S8016C1 ::v9(){vfunc_called(this, "_ZN7S8016C12v9Ev");}
void  S8016C1 ::v10(){vfunc_called(this, "_ZN7S8016C13v10Ev");}
void  S8016C1 ::v11(){vfunc_called(this, "_ZN7S8016C13v11Ev");}
void  S8016C1 ::v12(){vfunc_called(this, "_ZN7S8016C13v12Ev");}
void  S8016C1 ::v13(){vfunc_called(this, "_ZN7S8016C13v13Ev");}
void  S8016C1 ::v14(){vfunc_called(this, "_ZN7S8016C13v14Ev");}
void  S8016C1 ::v15(){vfunc_called(this, "_ZN7S8016C13v15Ev");}
void  S8016C1 ::v16(){vfunc_called(this, "_ZN7S8016C13v16Ev");}
void  S8016C1 ::v17(){vfunc_called(this, "_ZN7S8016C13v17Ev");}
void  S8016C1 ::v18(){vfunc_called(this, "_ZN7S8016C13v18Ev");}
void  S8016C1 ::v19(){vfunc_called(this, "_ZN7S8016C13v19Ev");}
void  S8016C1 ::v20(){vfunc_called(this, "_ZN7S8016C13v20Ev");}
void  S8016C1 ::v21(){vfunc_called(this, "_ZN7S8016C13v21Ev");}
void  S8016C1 ::v22(){vfunc_called(this, "_ZN7S8016C13v22Ev");}
void  S8016C1 ::v23(){vfunc_called(this, "_ZN7S8016C13v23Ev");}
S8016C1 ::S8016C1(){ note_ctor("S8016C1", this);} // tgen

static void Test_S8016C1()
{
  extern Class_Descriptor cd_S8016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S8016C1, buf);
    S8016C1 *dp, &lv = *(dp=new (buf) S8016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S8016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8016C1)");
    check_base_class_offset(lv, (S8016C2_nt*), 0, "S8016C1");
    check_base_class_offset(lv, (S8016C5_nt*), ABISELECT(32,20), "S8016C1");
    check_base_class_offset(lv, (S8016C6_nt*), ABISELECT(40,24), "S8016C1");
    check_field_offset(lv, s8016c1f0, ABISELECT(48,28), "S8016C1.s8016c1f0");
    check_field_offset(lv, s8016c1f1, ABISELECT(64,36), "S8016C1.s8016c1f1");
    check_field_offset(lv, s8016c1f2, ABISELECT(72,40), "S8016C1.s8016c1f2");
    test_class_info(&lv, &cd_S8016C1);
    dp->~S8016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8016C1(Test_S8016C1, "S8016C1", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN7S8016C1C1Ev();
extern void _ZN7S8016C1D1Ev();
Name_Map name_map_S8016C1[] = {
  NSPAIR(_ZN7S8016C1C1Ev),
  NSPAIR(_ZN7S8016C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8016C2_nt;
extern VTBL_ENTRY _ZTI10S8016C2_nt[];
extern  VTBL_ENTRY _ZTV10S8016C2_nt[];
extern Class_Descriptor cd_S8016C5_nt;
extern VTBL_ENTRY _ZTI10S8016C5_nt[];
extern  VTBL_ENTRY _ZTV10S8016C5_nt[];
extern Class_Descriptor cd_S8016C6_nt;
extern VTBL_ENTRY _ZTI10S8016C6_nt[];
extern  VTBL_ENTRY _ZTV10S8016C6_nt[];
static Base_Class bases_S8016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8016C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8016C5_nt,    ABISELECT(32,20), //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
    -1, //immediately_derived
  1, 0},
  {&cd_S8016C6_nt,    ABISELECT(40,24), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S8016C1[];
extern void _ZN7S8016C1D1Ev();
extern void _ZN7S8016C1D0Ev();
extern void _ZN7S8016C12v1Ev();
extern void _ZN7S8016C12v2Ev();
extern void _ZN7S8016C12v3Ev();
extern void _ZN7S8016C12v4Ev();
extern void _ZN7S8016C12v5Ev();
extern void _ZN7S8016C12v6Ev();
extern void _ZN7S8016C12v7Ev();
extern void _ZN7S8016C12v8Ev();
extern void _ZN7S8016C12v9Ev();
extern void _ZN7S8016C13v10Ev();
extern void _ZN7S8016C13v11Ev();
extern void _ZN7S8016C13v12Ev();
extern void _ZN7S8016C13v13Ev();
extern void _ZN7S8016C13v14Ev();
extern void _ZN7S8016C13v15Ev();
extern void _ZN7S8016C13v16Ev();
extern void _ZN7S8016C13v17Ev();
extern void _ZN7S8016C13v18Ev();
extern void _ZN7S8016C13v19Ev();
extern void _ZN7S8016C13v20Ev();
extern void _ZN7S8016C13v21Ev();
extern void _ZN7S8016C13v22Ev();
extern void _ZN7S8016C13v23Ev();
extern void ABISELECT(_ZThn32_N7S8016C1D1Ev,_ZThn20_N7S8016C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S8016C1D0Ev,_ZThn20_N7S8016C1D0Ev)();
extern void _ZN10S8016C5_nt3v24Ev();
extern void _ZN10S8016C5_nt3v25Ev();
extern void _ZN10S8016C5_nt3v26Ev();
extern void _ZN10S8016C5_nt3v27Ev();
extern void _ZN10S8016C5_nt3v28Ev();
extern void _ZN10S8016C5_nt3v29Ev();
extern void _ZN10S8016C5_nt3v30Ev();
extern void _ZN10S8016C5_nt3v31Ev();
extern void _ZN10S8016C5_nt3v32Ev();
extern void _ZN10S8016C5_nt3v33Ev();
extern void _ZN10S8016C5_nt3v34Ev();
extern void _ZN10S8016C5_nt3v35Ev();
extern void _ZN10S8016C5_nt3v36Ev();
extern void _ZN10S8016C5_nt3v37Ev();
extern void _ZN10S8016C5_nt3v38Ev();
extern void _ZN10S8016C5_nt3v39Ev();
extern void ABISELECT(_ZThn40_N7S8016C1D1Ev,_ZThn24_N7S8016C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S8016C1D0Ev,_ZThn24_N7S8016C1D0Ev)();
extern void _ZN10S8016C6_nt3v40Ev();
extern void _ZN10S8016C6_nt3v41Ev();
extern void _ZN10S8016C6_nt3v42Ev();
extern void _ZN10S8016C6_nt3v43Ev();
extern void _ZN10S8016C6_nt3v44Ev();
extern void _ZN10S8016C6_nt3v45Ev();
extern void _ZN10S8016C6_nt3v46Ev();
static  VTBL_ENTRY vtc_S8016C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8016C1[0]),
  (VTBL_ENTRY)&_ZN7S8016C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8016C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8016C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v14Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v15Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v16Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v17Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v18Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v19Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v20Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v21Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v22Ev,
  (VTBL_ENTRY)&_ZN7S8016C13v23Ev,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S8016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S8016C1D1Ev,_ZThn20_N7S8016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S8016C1D0Ev,_ZThn20_N7S8016C1D0Ev),
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S8016C5_nt3v39Ev,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S8016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S8016C1D1Ev,_ZThn24_N7S8016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S8016C1D0Ev,_ZThn24_N7S8016C1D0Ev),
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S8016C6_nt3v46Ev,
};
extern VTBL_ENTRY _ZTI7S8016C1[];
extern  VTBL_ENTRY _ZTV7S8016C1[];
Class_Descriptor cd_S8016C1 = {  "S8016C1", // class name
  bases_S8016C1, 3,
  &(vtc_S8016C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI7S8016C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S8016C1),58, //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  S19588C6  : virtual S19676C9 {
  virtual  ~S19588C6(); // _ZN8S19588C6D2Ev
  S19588C6(); // tgen
};
//SIG(-1 S19588C6) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S19588C6 ::~S19588C6(){ note_dtor("S19588C6", this);}
S19588C6 ::S19588C6(){ note_ctor("S19588C6", this);} // tgen

static void Test_S19588C6()
{
  extern Class_Descriptor cd_S19588C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19588C6, buf);
    S19588C6 *dp, &lv = *(dp=new (buf) S19588C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19588C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C6)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S19588C6");
    test_class_info(&lv, &cd_S19588C6);
    dp->~S19588C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C6(Test_S19588C6, "S19588C6", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19588C6C1Ev();
extern void _ZN8S19588C6D2Ev();
Name_Map name_map_S19588C6[] = {
  NSPAIR(_ZN8S19588C6C1Ev),
  NSPAIR(_ZN8S19588C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S19588C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C6[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C6[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C6[];
static  VTT_ENTRY vtt_S19588C6[] = {
  {&(_ZTV8S19588C6[3]),  3,10},
  {&(_ZTV8S19588C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C6 = {  "S19588C6", // class name
  bases_S19588C6, 1,
  &(vtc_S19588C6[0]), // expected_vtbl_contents
  &(vtt_S19588C6[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19588C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19588C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C5  : virtual S19676C9 , S19588C6 {
  void *s19588c5f0[10];
  int s19588c5f1;
  __tsi64 s19588c5f2;
  ~S19588C5(); // tgen
  S19588C5(); // tgen
};
//SIG(-1 S19588C5) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S19588C5 ::~S19588C5(){ note_dtor("S19588C5", this);} // tgen
S19588C5 ::S19588C5(){ note_ctor("S19588C5", this);} // tgen

static void Test_S19588C5()
{
  extern Class_Descriptor cd_S19588C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S19588C5, buf);
    S19588C5 *dp, &lv = *(dp=new (buf) S19588C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S19588C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C5)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S19588C5");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(112,56), "S19588C5");
    check_base_class_offset(lv, (S19588C6*), 0, "S19588C5");
    check_field_offset(lv, s19588c5f0, ABISELECT(8,4), "S19588C5.s19588c5f0");
    check_field_offset(lv, s19588c5f1, ABISELECT(88,44), "S19588C5.s19588c5f1");
    check_field_offset(lv, s19588c5f2, ABISELECT(96,48), "S19588C5.s19588c5f2");
    test_class_info(&lv, &cd_S19588C5);
    dp->~S19588C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C5(Test_S19588C5, "S19588C5", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN8S19588C5C1Ev();
extern void _ZN8S19588C5D1Ev();
Name_Map name_map_S19588C5[] = {
  NSPAIR(_ZN8S19588C5C1Ev),
  NSPAIR(_ZN8S19588C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C5[];
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C5[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C5[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C5[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__8S19588C5[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
static  VTT_ENTRY vtt_S19588C5[] = {
  {&(_ZTV8S19588C5[3]),  3,10},
  {&(_tg__ZTV8S19588C6__8S19588C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__8S19588C5[3]),  3,5},
  {&(_ZTV8S19588C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C5 = {  "S19588C5", // class name
  bases_S19588C5, 2,
  &(vtc_S19588C5[0]), // expected_vtbl_contents
  &(vtt_S19588C5[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI8S19588C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19588C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C5),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C3  : virtual S19676C9 , virtual S19588C5 , S19588C6 {
  void *s19588c3f0;
  int s19588c3f1;
  ::S19676C9 s19588c3f2[3];
  int s19588c3f3[7];
  virtual  ~S19588C3(); // _ZN8S19588C3D2Ev
  S19588C3(); // tgen
};
//SIG(-1 S19588C3) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S19588C3 ::~S19588C3(){ note_dtor("S19588C3", this);}
S19588C3 ::S19588C3(){ note_ctor("S19588C3", this);} // tgen

static void Test_S19588C3()
{
  extern Class_Descriptor cd_S19588C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S19588C3, buf);
    S19588C3 *dp, &lv = *(dp=new (buf) S19588C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S19588C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C3)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19588C3");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(208,124), "S19588C3");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(208,124), "S19588C3");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(208,124), "S19588C3");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(256,152), "S19588C3");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(256,152), "S19588C3");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), 0, "S19588C3");
    check_field_offset(lv, s19588c3f0, ABISELECT(8,4), "S19588C3.s19588c3f0");
    check_field_offset(lv, s19588c3f1, ABISELECT(16,8), "S19588C3.s19588c3f1");
    check_field_offset(lv, s19588c3f2, ABISELECT(32,12), "S19588C3.s19588c3f2");
    check_field_offset(lv, s19588c3f3, ABISELECT(176,96), "S19588C3.s19588c3f3");
    test_class_info(&lv, &cd_S19588C3);
    dp->~S19588C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C3(Test_S19588C3, "S19588C3", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S19588C3C1Ev();
extern void _ZN8S19588C3D2Ev();
Name_Map name_map_S19588C3[] = {
  NSPAIR(_ZN8S19588C3C1Ev),
  NSPAIR(_ZN8S19588C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C3[];
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C3D1Ev,_ZThn124_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn208_N8S19588C3D0Ev,_ZThn124_N8S19588C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C3D1Ev,_ZThn152_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn256_N8S19588C3D0Ev,_ZThn152_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C3[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C3[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C3[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C6D1Ev,_ZThn124_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn208_N8S19588C6D0Ev,_ZThn124_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A1__8S19588C3[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C3[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C3[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C3[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C3[] = {
  {&(_ZTV8S19588C3[4]),  4,17},
  {&(_tg__ZTV8S19588C6__A1__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A1__8S19588C3[3]),  3,5},
  {&(_ZTV8S19588C3[9]),  9,17},
  {&(_ZTV8S19588C3[15]),  15,17},
  {&(_tg__ZTV8S19588C5__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C6D0Ev,_ZThn124_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C6D1Ev,_ZThn124_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19588C3D0Ev,_ZThn152_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19588C3D1Ev,_ZThn152_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C3D0Ev,_ZThn124_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S19588C3D1Ev,_ZThn124_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C3 = {  "S19588C3", // class name
  bases_S19588C3, 4,
  &(vtc_S19588C3[0]), // expected_vtbl_contents
  &(vtt_S19588C3[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S19588C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19588C3),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C3),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C8  : virtual S19588C5 , S19588C6 {
  int s19588c8f0;
  virtual  ~S19588C8(); // _ZN8S19588C8D2Ev
  S19588C8(); // tgen
};
//SIG(-1 S19588C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S19588C8 ::~S19588C8(){ note_dtor("S19588C8", this);}
S19588C8 ::S19588C8(){ note_ctor("S19588C8", this);} // tgen

static void Test_S19588C8()
{
  extern Class_Descriptor cd_S19588C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19588C8, buf);
    S19588C8 *dp, &lv = *(dp=new (buf) S19588C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19588C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C8)");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(128,64), "S19588C8");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(128,64), "S19588C8");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(128,64), "S19588C8");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(16,8), "S19588C8");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(16,8), "S19588C8");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), 0, "S19588C8");
    check_field_offset(lv, s19588c8f0, ABISELECT(8,4), "S19588C8.s19588c8f0");
    test_class_info(&lv, &cd_S19588C8);
    dp->~S19588C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C8(Test_S19588C8, "S19588C8", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN8S19588C8C1Ev();
extern void _ZN8S19588C8D2Ev();
Name_Map name_map_S19588C8[] = {
  NSPAIR(_ZN8S19588C8C1Ev),
  NSPAIR(_ZN8S19588C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C8[];
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C8[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C8[];
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C8[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A1__8S19588C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C8[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C8[] = {
  {&(_ZTV8S19588C8[4]),  4,17},
  {&(_tg__ZTV8S19588C6__A1__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A1__8S19588C8[3]),  3,5},
  {&(_ZTV8S19588C8[10]),  10,17},
  {&(_ZTV8S19588C8[15]),  15,17},
  {&(_tg__ZTV8S19588C5__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C8 = {  "S19588C8", // class name
  bases_S19588C8, 4,
  &(vtc_S19588C8[0]), // expected_vtbl_contents
  &(vtt_S19588C8[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI8S19588C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19588C8),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C8),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C10  : S19676C9 , virtual S19588C6 , virtual S19588C5 , S19588C8 {
  int s19588c10f0;
  virtual  ~S19588C10(); // _ZN9S19588C10D2Ev
  S19588C10(); // tgen
};
//SIG(-1 S19588C10) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S19588C10 ::~S19588C10(){ note_dtor("S19588C10", this);}
S19588C10 ::S19588C10(){ note_ctor("S19588C10", this);} // tgen

static void Test_S19588C10()
{
  extern Class_Descriptor cd_S19588C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S19588C10, buf);
    S19588C10 *dp, &lv = *(dp=new (buf) S19588C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S19588C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C10)");
    /*is_ambiguous_... S19588C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S19588C10");
    /*is_ambiguous_... S19588C10::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(80,44), "S19588C10");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(80,44), "S19588C10");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(80,44), "S19588C10");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(80,44), "S19588C10");
    /*is_ambiguous_... S19588C10::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), ABISELECT(64,40), "S19588C10");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(128,72), "S19588C10");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(128,72), "S19588C10");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(128,72), "S19588C10");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(48,28), "S19588C10");
    check_base_class_offset(lv, (S19588C8*), ABISELECT(48,28), "S19588C10");
    check_field_offset(lv, s19588c10f0, ABISELECT(60,36), "S19588C10.s19588c10f0");
    test_class_info(&lv, &cd_S19588C10);
    dp->~S19588C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C10(Test_S19588C10, "S19588C10", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN9S19588C10C1Ev();
extern void _ZN9S19588C10D2Ev();
Name_Map name_map_S19588C10[] = {
  NSPAIR(_ZN9S19588C10C1Ev),
  NSPAIR(_ZN9S19588C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
static Base_Class bases_S19588C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(128,72), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19588C10[];
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C10[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19588C10[];
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A2__9S19588C10[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A2__9S19588C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__9S19588C10[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__9S19588C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__9S19588C10[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__A1__9S19588C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__A1__9S19588C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__9S19588C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C10[] = {
  {&(_ZTV9S19588C10[5]),  5,30},
  {&(_tg__ZTV8S19588C8__9S19588C10[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A2__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A2__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__9S19588C10[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__9S19588C10[3]),  3,5},
  {&(_ZTV9S19588C10[17]),  17,30},
  {&(_ZTV9S19588C10[22]),  22,30},
  {&(_ZTV9S19588C10[28]),  28,30},
  {&(_ZTV9S19588C10[11]),  11,30},
  {&(_tg__ZTV8S19588C6__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__A1__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__A1__9S19588C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__9S19588C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C10 = {  "S19588C10", // class name
  bases_S19588C10, 7,
  &(vtc_S19588C10[0]), // expected_vtbl_contents
  &(vtt_S19588C10[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI9S19588C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19588C10),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19588C10),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  S19588C9  : virtual S19588C5 , virtual S19588C10 , S19588C3 , S19676C9 , S19588C6 {
  virtual  ~S19588C9(); // _ZN8S19588C9D2Ev
  S19588C9(); // tgen
};
//SIG(-1 S19588C9) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S19588C9 ::~S19588C9(){ note_dtor("S19588C9", this);}
S19588C9 ::S19588C9(){ note_ctor("S19588C9", this);} // tgen

static void Test_S19588C9()
{
  extern Class_Descriptor cd_S19588C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S19588C9, buf);
    S19588C9 *dp, &lv = *(dp=new (buf) S19588C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S19588C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C9)");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(368,212), "S19588C9");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(368,212), "S19588C9");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*), ABISELECT(368,212), "S19588C9");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(368,212), "S19588C9");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(264,156), "S19588C9");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*), ABISELECT(264,156), "S19588C9");
    /*is_ambiguous_... S19588C10::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(416,240), "S19588C9");
    /*is_ambiguous_... S19588C10::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(480,280), "S19588C9");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(464,268), "S19588C9");
    check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(464,268), "S19588C9");
    check_base_class_offset(lv, (S19588C10*), ABISELECT(416,240), "S19588C9");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*), 0, "S19588C9");
    check_base_class_offset(lv, (S19588C3*), 0, "S19588C9");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S19588C9");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), ABISELECT(256,152), "S19588C9");
    test_class_info(&lv, &cd_S19588C9);
    dp->~S19588C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C9(Test_S19588C9, "S19588C9", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN8S19588C9C1Ev();
extern void _ZN8S19588C9D2Ev();
Name_Map name_map_S19588C9[] = {
  NSPAIR(_ZN8S19588C9C1Ev),
  NSPAIR(_ZN8S19588C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
static Base_Class bases_S19588C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19588C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19588C6,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C9[];
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
extern void ABISELECT(_ZThn208_N8S19588C9D1Ev,_ZThn124_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C9D0Ev,_ZThn124_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn264_N8S19588C9D1Ev,_ZThn156_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn264_N8S19588C9D0Ev,_ZThn156_N8S19588C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C9D1Ev,_ZThn212_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C9D0Ev,_ZThn212_N8S19588C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn480_N8S19588C9D1Ev,_ZThn280_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn480_N8S19588C9D0Ev,_ZThn280_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C9[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C9D1Ev,_ZThn124_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C9D0Ev,_ZThn124_N8S19588C9D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C9[];
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C3__8S19588C9[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C3__A3__8S19588C9[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C6D1Ev,_ZThn212_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C6D0Ev,_ZThn212_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C3__A3__8S19588C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C3D1Ev,_ZThn212_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C3D0Ev,_ZThn212_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C3__8S19588C9[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn264_N8S19588C3D1Ev,_ZThn156_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn264_N8S19588C3D0Ev,_ZThn156_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C3__8S19588C9[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C9[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn60_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn60_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A__8S19588C9[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C9[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn104_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn104_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn104_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn104_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C9[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C9[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A2__8S19588C9[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A2__8S19588C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__8S19588C9[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__8S19588C9[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C9[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C9[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C9[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C9[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A1__8S19588C9[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
static  VTT_ENTRY vtt_S19588C9[] = {
  {&(_ZTV8S19588C9[6]),  6,48},
  {&(_tg__ZTV8S19588C3__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C3__A3__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C3__A3__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C3__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C3__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A__8S19588C9[3]),  3,5},
  {&(_ZTV8S19588C9[21]),  21,48},
  {&(_ZTV8S19588C9[26]),  26,48},
  {&(_ZTV8S19588C9[34]),  34,48},
  {&(_ZTV8S19588C9[46]),  46,48},
  {&(_ZTV8S19588C9[40]),  40,48},
  {&(_ZTV8S19588C9[15]),  15,48},
  {&(_tg__ZTV8S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C9[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C9[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A2__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A2__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C9[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A1__8S19588C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A1__8S19588C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D0Ev,_ZThn40_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C10D1Ev,_ZThn40_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C3D0Ev,_ZThn156_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C3D1Ev,_ZThn156_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C3D0Ev,_ZThn212_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C3D1Ev,_ZThn212_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn60_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C6D0Ev,_ZThn212_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn60_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C6D1Ev,_ZThn212_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C9D0Ev,_ZThn212_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19588C9D1Ev,_ZThn212_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S19588C9D0Ev,_ZThn280_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C9D0Ev,_ZThn156_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S19588C9D1Ev,_ZThn280_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19588C9D1Ev,_ZThn156_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C9 = {  "S19588C9", // class name
  bases_S19588C9, 12,
  &(vtc_S19588C9[0]), // expected_vtbl_contents
  &(vtt_S19588C9[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI8S19588C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19588C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C9),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C7  : virtual S19588C6 , virtual S19588C8 , S19588C5 , S19588C9 , S19588C10 {
  short s19588c7f0;
  virtual  ~S19588C7(); // _ZN8S19588C7D2Ev
  S19588C7(); // tgen
};
//SIG(-1 S19588C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S19588C7 ::~S19588C7(){ note_dtor("S19588C7", this);}
S19588C7 ::S19588C7(){ note_ctor("S19588C7", this);} // tgen

static void Test_S19588C7()
{
  extern Class_Descriptor cd_S19588C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S19588C7, buf);
    S19588C7 *dp, &lv = *(dp=new (buf) S19588C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S19588C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C7)");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(464,260), "S19588C7");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C9*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C9*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C9*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(464,260), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*), ABISELECT(456,256), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(456,256), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(456,256), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(528,296), "S19588C7");
    check_base_class_offset(lv, (S19588C5*)(S19588C9*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C9*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(528,296), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(512,288), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C8*), ABISELECT(512,288), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), 0, "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C5*), 0, "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(640,352), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(688,380), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(688,380), "S19588C7");
    check_base_class_offset(lv, (S19588C10*)(S19588C9*), ABISELECT(640,352), "S19588C7");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C9*), ABISELECT(112,56), "S19588C7");
    check_base_class_offset(lv, (S19588C3*)(S19588C9*), ABISELECT(112,56), "S19588C7");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C9*), ABISELECT(320,180), "S19588C7");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C9*), ABISELECT(368,208), "S19588C7");
    check_base_class_offset(lv, (S19588C9*), ABISELECT(112,56), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(384,212), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(432,240), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(432,240), "S19588C7");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*), ABISELECT(384,212), "S19588C7");
    check_field_offset(lv, s19588c7f0, ABISELECT(448,252), "S19588C7.s19588c7f0");
    test_class_info(&lv, &cd_S19588C7);
    dp->~S19588C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C7(Test_S19588C7, "S19588C7", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN8S19588C7C1Ev();
extern void _ZN8S19588C7D2Ev();
Name_Map name_map_S19588C7[] = {
  NSPAIR(_ZN8S19588C7C1Ev),
  NSPAIR(_ZN8S19588C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C9;
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
static Base_Class bases_S19588C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(528,296), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C5,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19588C9,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C7[];
extern void _ZN8S19588C7D1Ev();
extern void _ZN8S19588C7D0Ev();
extern void ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn320_N8S19588C7D1Ev,_ZThn180_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn320_N8S19588C7D0Ev,_ZThn180_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn456_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn456_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn260_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn260_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn288_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn288_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C7D1Ev,_ZThn296_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C7D0Ev,_ZThn296_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev)();
static  VTBL_ENTRY vtc_S19588C7[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&_ZN8S19588C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C7D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C7D1Ev,_ZThn180_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C7D0Ev,_ZThn180_N8S19588C7D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C7[];
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__A__8S19588C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__A3__8S19588C7[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn260_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn260_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__A3__8S19588C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn260_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn260_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__A__8S19588C7[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C9__8S19588C7[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C9__8S19588C7[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C9__A5__8S19588C7[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn204_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn204_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C9__A5__8S19588C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn204_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn204_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C9__8S19588C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn416_N8S19588C3D1Ev,_ZThn240_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn416_N8S19588C3D0Ev,_ZThn240_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C9__8S19588C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C9__A6__8S19588C7[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn52_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn52_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C9__A6__8S19588C7[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C9__8S19588C7[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn204_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn204_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C9__8S19588C7[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C9__8S19588C7[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn344_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn344_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C9__8S19588C7[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C9__8S19588C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C9__8S19588C7[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C7[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A2__8S19588C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A7__8S19588C7[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn20_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn20_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A7__8S19588C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C8D1Ev,_ZThn56_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C8D0Ev,_ZThn56_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A2__8S19588C7[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn20_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn20_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A2__8S19588C7[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn72_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn72_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__A__8S19588C7[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn48_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn48_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C7[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn144_N9S19588C10D1Ev,_ZThn84_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn144_N9S19588C10D0Ev,_ZThn84_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__A__8S19588C7[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__A__8S19588C7[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C7[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__8S19588C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C7[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A2__8S19588C7[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A2__8S19588C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__8S19588C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__8S19588C7[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__A1__8S19588C7[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__A1__8S19588C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C7[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A4__8S19588C7[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A4__8S19588C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C7[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C7[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C7[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C7[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C7[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C7[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
static  VTT_ENTRY vtt_S19588C7[] = {
  {&(_ZTV8S19588C7[7]),  7,77},
  {&(_tg__ZTV8S19588C5__A__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__A3__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__A3__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__A__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C9__8S19588C7[6]),  6,8},
  {&(_tg__ZTV8S19588C38S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C9__A5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C9__A5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C9__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C9__A6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C9__A6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C9__8S19588C7[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C9__8S19588C7[6]),  6,8},
  {&(_tg__ZTV8S19588C6__A1__8S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C9__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C9__8S19588C7[3]),  3,5},
  {&(_tg__ZTV9S19588C10__A__8S19588C7[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A2__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A7__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A7__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A2__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A2__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__A__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__A__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__A__8S19588C7[4]),  4,6},
  {&(_ZTV8S19588C7[43]),  43,77},
  {&(_ZTV8S19588C7[48]),  48,77},
  {&(_ZTV8S19588C7[55]),  55,77},
  {&(_ZTV8S19588C7[61]),  61,77},
  {&(_ZTV8S19588C7[15]),  15,77},
  {&(_ZTV8S19588C7[69]),  69,77},
  {&(_ZTV8S19588C7[75]),  75,77},
  {&(_ZTV8S19588C7[24]),  24,77},
  {&(_ZTV8S19588C7[31]),  31,77},
  {&(_ZTV8S19588C7[37]),  37,77},
  {&(_tg__ZTV8S19588C6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A2__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A2__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__A1__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__A1__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C7[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C7[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A4__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A4__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C7[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C7[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19588C7[];
extern  VTBL_ENTRY _ZTV8S19588C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C7[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn48_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn48_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19588C10D0Ev,_ZThn84_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19588C10D1Ev,_ZThn84_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn20_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn20_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C8D0Ev,_ZThn56_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C8D1Ev,_ZThn56_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn204_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn204_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D0Ev,_ZThn240_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C9D1Ev,_ZThn240_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C3D0Ev,_ZThn240_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S19588C3D1Ev,_ZThn240_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn204_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn204_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn260_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn260_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19588C6D0Ev,_ZThn4_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn20_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn52_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn204_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn260_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19588C6D1Ev,_ZThn4_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn20_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn52_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn204_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn260_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn288_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn288_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn260_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn260_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C7D0Ev,_ZThn296_N8S19588C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C7D1Ev,_ZThn296_N8S19588C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C7 = {  "S19588C7", // class name
  bases_S19588C7, 21,
  &(vtc_S19588C7[0]), // expected_vtbl_contents
  &(vtt_S19588C7[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI8S19588C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19588C7),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C7),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C11  : virtual S19588C5 , S19588C8 {
  short  :0;
  virtual  ~S19588C11(); // _ZN9S19588C11D2Ev
  S19588C11(); // tgen
};
//SIG(-1 S19588C11) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC5{ VBC2 BC4 vd Fi} vd Fs:0}


 S19588C11 ::~S19588C11(){ note_dtor("S19588C11", this);}
S19588C11 ::S19588C11(){ note_ctor("S19588C11", this);} // tgen

static void Test_S19588C11()
{
  extern Class_Descriptor cd_S19588C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S19588C11, buf);
    S19588C11 *dp, &lv = *(dp=new (buf) S19588C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S19588C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C11)");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(128,64), "S19588C11");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(128,64), "S19588C11");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(128,64), "S19588C11");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(16,8), "S19588C11");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(16,8), "S19588C11");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(16,8), "S19588C11");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), 0, "S19588C11");
    check_base_class_offset(lv, (S19588C8*), 0, "S19588C11");
    test_class_info(&lv, &cd_S19588C11);
    dp->~S19588C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C11(Test_S19588C11, "S19588C11", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S19588C11C1Ev();
extern void _ZN9S19588C11D2Ev();
Name_Map name_map_S19588C11[] = {
  NSPAIR(_ZN9S19588C11C1Ev),
  NSPAIR(_ZN9S19588C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
static Base_Class bases_S19588C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    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
    4, //immediately_derived
  0, 0},
  {&cd_S19588C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19588C11[];
extern void _ZN9S19588C11D1Ev();
extern void _ZN9S19588C11D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S19588C11D1Ev,_ZThn8_N9S19588C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S19588C11D0Ev,_ZThn8_N9S19588C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C11D1Ev,_ZThn64_N9S19588C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C11D0Ev,_ZThn64_N9S19588C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C11[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&_ZN9S19588C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19588C11[];
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C11[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A1__9S19588C11[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A1__9S19588C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__9S19588C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__9S19588C11[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C11[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__9S19588C11[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__9S19588C11[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C11[] = {
  {&(_ZTV9S19588C11[4]),  4,17},
  {&(_tg__ZTV8S19588C8__9S19588C11[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A1__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A1__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__9S19588C11[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__9S19588C11[3]),  3,5},
  {&(_ZTV9S19588C11[10]),  10,17},
  {&(_ZTV9S19588C11[15]),  15,17},
  {&(_tg__ZTV8S19588C5__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C11[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__9S19588C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19588C11[];
extern  VTBL_ENTRY _ZTV9S19588C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C11[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D0Ev,_ZThn56_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C5D1Ev,_ZThn56_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D0Ev,_ZThn64_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C8D1Ev,_ZThn64_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D0Ev,_ZThn8_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19588C8D1Ev,_ZThn8_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D0Ev,_ZThn56_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D0Ev,_ZThn64_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19588C6D1Ev,_ZThn56_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19588C6D1Ev,_ZThn64_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C11D0Ev,_ZThn64_N9S19588C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C11D1Ev,_ZThn64_N9S19588C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C11D0Ev,_ZThn8_N9S19588C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C11D1Ev,_ZThn8_N9S19588C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C11 = {  "S19588C11", // class name
  bases_S19588C11, 5,
  &(vtc_S19588C11[0]), // expected_vtbl_contents
  &(vtt_S19588C11[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S19588C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19588C11),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19588C11),12, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C2  : S19588C3 , S19588C7 , virtual S19588C11 {
  virtual  ~S19588C2(); // _ZN8S19588C2D2Ev
  S19588C2(); // tgen
};
//SIG(-1 S19588C2) C1{ BC2{ VBC3{ vd m Fp Fi Fc FD} VBC4{ VBC3 BC5{ VBC3 vd} Fp[10] Fi FL} BC5 vd Fp Fi FC3[3] Fi[7]} BC6{ VBC5 VBC7{ VBC4 BC5 vd Fi} BC4 BC8{ VBC4 VBC9{ BC3 VBC5 VBC4 BC7 vd Fi} BC2 BC3 BC5 vd} BC9 vd Fs} VBC10{ VBC4 BC7 vd Fs:0} vd}


 S19588C2 ::~S19588C2(){ note_dtor("S19588C2", this);}
S19588C2 ::S19588C2(){ note_ctor("S19588C2", this);} // tgen

static void Test_S19588C2()
{
  extern Class_Descriptor cd_S19588C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(59,132)];
    init_test(&cd_S19588C2, buf);
    S19588C2 *dp, &lv = *(dp=new (buf) S19588C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(928,524), "sizeof(S19588C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C2)");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C3*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(672,380), "S19588C2");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C9*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(672,380), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C3*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C9*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C11*), ABISELECT(720,408), "S19588C2");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C11*), ABISELECT(720,408), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*), 0, "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C3*), 0, "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C7*), ABISELECT(824,464), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(824,464), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*)(S19588C7*), ABISELECT(824,464), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(832,468), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C7*), ABISELECT(832,468), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*)(S19588C7*), ABISELECT(208,124), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C7*), ABISELECT(208,124), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(848,476), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(896,504), "S19588C2");
    /*is_ambiguous_... S19588C2::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(896,504), "S19588C2");
    check_base_class_offset(lv, (S19588C10*)(S19588C9*)(S19588C7*), ABISELECT(848,476), "S19588C2");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(320,180), "S19588C2");
    check_base_class_offset(lv, (S19588C3*)(S19588C9*)(S19588C7*), ABISELECT(320,180), "S19588C2");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C9*)(S19588C7*), ABISELECT(528,304), "S19588C2");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C9*)(S19588C7*), ABISELECT(576,332), "S19588C2");
    check_base_class_offset(lv, (S19588C9*)(S19588C7*), ABISELECT(320,180), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*)(S19588C7*), ABISELECT(592,336), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(640,364), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*)(S19588C7*), ABISELECT(640,364), "S19588C2");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*)(S19588C7*), ABISELECT(592,336), "S19588C2");
    check_base_class_offset(lv, (S19588C7*), ABISELECT(208,124), "S19588C2");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(912,516), "S19588C2");
    check_base_class_offset(lv, (S19588C8*)(S19588C11*), ABISELECT(912,516), "S19588C2");
    check_base_class_offset(lv, (S19588C11*), ABISELECT(912,516), "S19588C2");
    test_class_info(&lv, &cd_S19588C2);
    dp->~S19588C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C2(Test_S19588C2, "S19588C2", ABISELECT(928,524));

#else // __cplusplus

extern void _ZN8S19588C2C1Ev();
extern void _ZN8S19588C2D2Ev();
Name_Map name_map_S19588C2[] = {
  NSPAIR(_ZN8S19588C2C1Ev),
  NSPAIR(_ZN8S19588C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C9;
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C7;
extern VTBL_ENTRY _ZTI8S19588C7[];
extern  VTBL_ENTRY _ZTV8S19588C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C7[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C11;
extern VTBL_ENTRY _ZTI9S19588C11[];
extern  VTBL_ENTRY _ZTV9S19588C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C11[];
static Base_Class bases_S19588C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(672,380), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(720,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(720,408), //bcp->offset
    54, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19588C6,    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
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C3,    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_S19588C6,    ABISELECT(824,464), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(832,468), //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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(832,468), //bcp->offset
    66, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(208,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19588C6,    ABISELECT(896,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(896,504), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(848,476), //bcp->offset
    73, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(320,180), //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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(320,180), //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
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(528,304), //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
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(576,332), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C9,    ABISELECT(320,180), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(592,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
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(640,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(640,364), //bcp->offset
    43, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(592,336), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19588C7,    ABISELECT(208,124), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19588C6,    ABISELECT(912,516), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(912,516), //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
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19588C11,    ABISELECT(912,516), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C2[];
extern void _ZN8S19588C2D1Ev();
extern void _ZN8S19588C2D0Ev();
extern void ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C2D1Ev,_ZThn304_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C2D0Ev,_ZThn304_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C2[] = {
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&_ZN8S19588C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C2D0Ev,
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev),
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N8S19588C2D1Ev,_ZThn304_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn528_N8S19588C2D0Ev,_ZThn304_N8S19588C2D0Ev),
  ABISELECT(96,48),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev),
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev),
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev),
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev),
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
  ABISELECT(-824,-464),
  ABISELECT(-152,-84),
  ABISELECT(-824,-464),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
  ABISELECT(-832,-468),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
  ABISELECT(-848,-476),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-896,-504),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev),
  ABISELECT(-912,-516),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-912,-516),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C2[];
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C3__8S19588C2[] = {
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C3__A1__8S19588C2[] = {
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C3__A1__8S19588C2[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C3__8S19588C2[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C3__8S19588C2[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C7D1Ev();
extern void _ZN8S19588C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C7__8S19588C2[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&_ZN8S19588C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C7D0Ev,
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C58S19588C7__A1__8S19588C2[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C58S19588C7__A4__8S19588C2[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C58S19588C7__A4__8S19588C2[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C58S19588C7__A1__8S19588C2[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C98S19588C7__A1__8S19588C2[] = {
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[] = {
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C98S19588C7__A1__8S19588C2[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C98S19588C7__A1__8S19588C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C98S19588C7__A7__8S19588C2[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-528,-296),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-504,-284),
  ABISELECT(-152,-84),
  ABISELECT(-504,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C98S19588C7__8S19588C2[] = {
  ABISELECT(96,48),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C108S19588C7__A2__8S19588C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C108S19588C7__A2__8S19588C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(-232,-128),
  ABISELECT(-152,-84),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C108S19588C7__A1__8S19588C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C7__8S19588C2[] = {
  ABISELECT(-616,-340),
  ABISELECT(-152,-84),
  ABISELECT(-616,-340),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C7__8S19588C2[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C7__8S19588C2[] = {
  ABISELECT(-624,-344),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-624,-344),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C7__8S19588C2[] = {
  ABISELECT(-512,-284),
  ABISELECT(-48,-28),
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C9__8S19588C7__8S19588C2[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C7__8S19588C2[] = {
  ABISELECT(-640,-352),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C7__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C9__A6__8S19588C7__8S19588C2[] = {
  ABISELECT(96,48),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C7__8S19588C2[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A2__8S19588C7__8S19588C2[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A2__8S19588C2[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A2__8S19588C2[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A3__8S19588C2[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__8S19588C2[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__8S19588C2[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C2[] = {
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C2[] = {
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C2[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C2[] = {
  ABISELECT(176,96),
  ABISELECT(-48,-28),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C2[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C2[] = {
  ABISELECT(24,12),
  ABISELECT(-152,-84),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C2[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C2[] = {
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN9S19588C11D1Ev();
extern void _ZN9S19588C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C11__8S19588C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&_ZN9S19588C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C11D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C11__A3__8S19588C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C2[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C2[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C11__8S19588C2[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19588C11__8S19588C2[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev),
};
static  VTT_ENTRY vtt_S19588C2[] = {
  {&(_ZTV8S19588C2[8]),  8,94},
  {&(_tg__ZTV8S19588C3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C3__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C3__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C7__8S19588C2[7]),  7,9},
  {&(_tg__ZTV8S19588C58S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C58S19588C7__A4__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C58S19588C7__A4__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C58S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C98S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV8S19588C38S19588C98S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C7__A6__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C98S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C98S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C98S19588C7__A7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C98S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C98S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C98S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV8S19588C6__A1__8S19588C98S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C98S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C98S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C108S19588C7__A1__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C7__A8__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C108S19588C7__A2__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C108S19588C7__A2__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C108S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C108S19588C7__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C108S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C108S19588C7__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C6__8S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C7__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C5__8S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C9__8S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV9S19588C10__8S19588C7__8S19588C2[6]),  6,8},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C7__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C9__A6__8S19588C7__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C10__A__8S19588C7__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A2__8S19588C7__8S19588C2[4]),  4,6},
  {&(_ZTV8S19588C2[52]),  52,94},
  {&(_ZTV8S19588C2[58]),  58,94},
  {&(_ZTV8S19588C2[17]),  17,94},
  {&(_ZTV8S19588C2[64]),  64,94},
  {&(_ZTV8S19588C2[71]),  71,94},
  {&(_ZTV8S19588C2[25]),  25,94},
  {&(_ZTV8S19588C2[79]),  79,94},
  {&(_ZTV8S19588C2[85]),  85,94},
  {&(_ZTV8S19588C2[34]),  34,94},
  {&(_ZTV8S19588C2[41]),  41,94},
  {&(_ZTV8S19588C2[47]),  47,94},
  {&(_ZTV8S19588C2[92]),  92,94},
  {&(_tg__ZTV8S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C6__A2__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A2__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__8S19588C2[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C2[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C2[4]),  4,6},
  {&(_tg__ZTV9S19588C11__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C11__A3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C2[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C11__8S19588C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19588C11__8S19588C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C2[];
extern  VTBL_ENTRY _ZTV8S19588C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C2[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C2 = {  "S19588C2", // class name
  bases_S19588C2, 27,
  &(vtc_S19588C2[0]), // expected_vtbl_contents
  &(vtt_S19588C2[0]), // expected_vtt_contents
  ABISELECT(928,524), // object size
  NSPAIRA(_ZTI8S19588C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19588C2),94, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C2),86, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19588C12  : virtual S19676C9 , virtual S19588C5 {
  int s19588c12f0;
  ::S19763C18_nt s19588c12f1;
  virtual  ~S19588C12(); // _ZN9S19588C12D2Ev
  S19588C12(); // tgen
};
//SIG(-1 S19588C12) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} vd Fi FC5{}}


 S19588C12 ::~S19588C12(){ note_dtor("S19588C12", this);}
S19588C12 ::S19588C12(){ note_ctor("S19588C12", this);} // tgen

static void Test_S19588C12()
{
  extern Class_Descriptor cd_S19588C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S19588C12, buf);
    S19588C12 *dp, &lv = *(dp=new (buf) S19588C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S19588C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C12)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,12), "S19588C12");
    check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(16,12), "S19588C12");
    check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(16,12), "S19588C12");
    check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(64,40), "S19588C12");
    check_base_class_offset(lv, (S19588C5*), ABISELECT(64,40), "S19588C12");
    check_field_offset(lv, s19588c12f0, ABISELECT(8,4), "S19588C12.s19588c12f0");
    check_field_offset(lv, s19588c12f1, ABISELECT(12,8), "S19588C12.s19588c12f1");
    test_class_info(&lv, &cd_S19588C12);
    dp->~S19588C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C12(Test_S19588C12, "S19588C12", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN9S19588C12C1Ev();
extern void _ZN9S19588C12D2Ev();
Name_Map name_map_S19588C12[] = {
  NSPAIR(_ZN9S19588C12C1Ev),
  NSPAIR(_ZN9S19588C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
static Base_Class bases_S19588C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,12), //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
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(64,40), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19588C12[];
extern void _ZN9S19588C12D1Ev();
extern void _ZN9S19588C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19588C12D1Ev,_ZThn12_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19588C12D0Ev,_ZThn12_N9S19588C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S19588C12D1Ev,_ZThn40_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn64_N9S19588C12D0Ev,_ZThn40_N9S19588C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C12[] = {
  ABISELECT(64,40),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&_ZN9S19588C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19588C12[];
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__9S19588C12[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__9S19588C12[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
static  VTT_ENTRY vtt_S19588C12[] = {
  {&(_ZTV9S19588C12[4]),  4,17},
  {&(_ZTV9S19588C12[9]),  9,17},
  {&(_ZTV9S19588C12[15]),  15,17},
  {&(_tg__ZTV8S19588C5__9S19588C12[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__9S19588C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__9S19588C12[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__9S19588C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19588C12[];
extern  VTBL_ENTRY _ZTV9S19588C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C12[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C12D0Ev,_ZThn40_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19588C12D1Ev,_ZThn40_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C12D0Ev,_ZThn12_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19588C12D1Ev,_ZThn12_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C12 = {  "S19588C12", // class name
  bases_S19588C12, 3,
  &(vtc_S19588C12[0]), // expected_vtbl_contents
  &(vtt_S19588C12[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI9S19588C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19588C12),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19588C12),7, //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  S19588C1  : virtual S19588C2 , S19588C12 , S19588C10 {
  virtual  ~S19588C1(); // _ZN8S19588C1D2Ev
  S19588C1(); // tgen
};
//SIG(1 S19588C1) C1{ VBC2{ BC3{ VBC4{ vd m Fp Fi Fc FD} VBC5{ VBC4 BC6{ VBC4 vd} Fp[10] Fi FL} BC6 vd Fp Fi FC4[3] Fi[7]} BC7{ VBC6 VBC8{ VBC5 BC6 vd Fi} BC5 BC9{ VBC5 VBC10{ BC4 VBC6 VBC5 BC8 vd Fi} BC3 BC4 BC6 vd} BC10 vd Fs} VBC11{ VBC5 BC8 vd Fs:0} vd} BC12{ VBC4 VBC5 vd Fi FC13{}} BC10 vd}


 S19588C1 ::~S19588C1(){ note_dtor("S19588C1", this);}
S19588C1 ::S19588C1(){ note_ctor("S19588C1", this);} // tgen

static void Test_S19588C1()
{
  extern Class_Descriptor cd_S19588C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,145)];
    init_test(&cd_S19588C1, buf);
    S19588C1 *dp, &lv = *(dp=new (buf) S19588C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,576), "sizeof(S19588C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19588C1)");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(752,432), "S19588C1");
    check_base_class_offset(lv, (S19676C9*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(752,432), "S19588C1");
    check_base_class_offset(lv, (S19676C9*)(S19588C12*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(752,432), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C11*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C11*), ABISELECT(800,460), "S19588C1");
    check_base_class_offset(lv, (S19588C5*)(S19588C12*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C8*)(S19588C10*), ABISELECT(800,460), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C2*), ABISELECT(80,52), "S19588C1");
    /*is_ambiguous_... S19588C2::S19588C3 */ AMB_check_base_class_offset(lv, (S19588C3*)(S19588C2*), ABISELECT(80,52), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C7*)(S19588C2*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C10*), ABISELECT(904,516), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*), ABISELECT(912,520), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C8 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C7*)(S19588C2*), ABISELECT(912,520), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(288,176), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C5 */ AMB_check_base_class_offset(lv, (S19588C5*)(S19588C7*)(S19588C2*), ABISELECT(288,176), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(928,528), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(976,556), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(976,556), "S19588C1");
    check_base_class_offset(lv, (S19588C10*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(928,528), "S19588C1");
    /*is_ambiguous_... S19588C3::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(400,232), "S19588C1");
    check_base_class_offset(lv, (S19588C3*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(400,232), "S19588C1");
    /*is_ambiguous_... S19588C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(608,356), "S19588C1");
    /*is_ambiguous_... S19588C9::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(656,384), "S19588C1");
    check_base_class_offset(lv, (S19588C9*)(S19588C7*)(S19588C2*), ABISELECT(400,232), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(672,388), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(720,416), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(720,416), "S19588C1");
    /*is_ambiguous_... S19588C7::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*)(S19588C7*)(S19588C2*), ABISELECT(672,388), "S19588C1");
    check_base_class_offset(lv, (S19588C7*)(S19588C2*), ABISELECT(288,176), "S19588C1");
    /*is_ambiguous_... S19588C8::S19588C6 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C11*), ABISELECT(992,568), "S19588C1");
    check_base_class_offset(lv, (S19588C8*)(S19588C11*), ABISELECT(992,568), "S19588C1");
    check_base_class_offset(lv, (S19588C11*)(S19588C2*), ABISELECT(992,568), "S19588C1");
    check_base_class_offset(lv, (S19588C2*), ABISELECT(80,52), "S19588C1");
    check_base_class_offset(lv, (S19588C12*), 0, "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19676C9*)(S19588C10*), ABISELECT(16,12), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C6*)(S19588C8*)(S19588C10*), ABISELECT(64,40), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C8*)(S19588C10*), ABISELECT(64,40), "S19588C1");
    /*is_ambiguous_... S19588C1::S19588C10 */ AMB_check_base_class_offset(lv, (S19588C10*), ABISELECT(16,12), "S19588C1");
    test_class_info(&lv, &cd_S19588C1);
    dp->~S19588C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19588C1(Test_S19588C1, "S19588C1", ABISELECT(1008,576));

#else // __cplusplus

extern void _ZN8S19588C1C1Ev();
extern void _ZN8S19588C1D2Ev();
Name_Map name_map_S19588C1[] = {
  NSPAIR(_ZN8S19588C1C1Ev),
  NSPAIR(_ZN8S19588C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C5;
extern VTBL_ENTRY _ZTI8S19588C5[];
extern  VTBL_ENTRY _ZTV8S19588C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C5[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C3;
extern VTBL_ENTRY _ZTI8S19588C3[];
extern  VTBL_ENTRY _ZTV8S19588C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C9;
extern VTBL_ENTRY _ZTI8S19588C9[];
extern  VTBL_ENTRY _ZTV8S19588C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
extern Class_Descriptor cd_S19588C7;
extern VTBL_ENTRY _ZTI8S19588C7[];
extern  VTBL_ENTRY _ZTV8S19588C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C7[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C11;
extern VTBL_ENTRY _ZTI9S19588C11[];
extern  VTBL_ENTRY _ZTV9S19588C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C11[];
extern Class_Descriptor cd_S19588C2;
extern VTBL_ENTRY _ZTI8S19588C2[];
extern  VTBL_ENTRY _ZTV8S19588C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C2[];
extern Class_Descriptor cd_S19588C12;
extern VTBL_ENTRY _ZTI9S19588C12[];
extern  VTBL_ENTRY _ZTV9S19588C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C12[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19588C6;
extern VTBL_ENTRY _ZTI8S19588C6[];
extern  VTBL_ENTRY _ZTV8S19588C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C6[];
extern Class_Descriptor cd_S19588C8;
extern VTBL_ENTRY _ZTI8S19588C8[];
extern  VTBL_ENTRY _ZTV8S19588C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C8[];
extern Class_Descriptor cd_S19588C10;
extern VTBL_ENTRY _ZTI9S19588C10[];
extern  VTBL_ENTRY _ZTV9S19588C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19588C10[];
static Base_Class bases_S19588C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(752,432), //bcp->offset
    74, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(800,460), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(800,460), //bcp->offset
    79, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(80,52), //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
    15, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(904,516), //bcp->offset
    85, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(912,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(912,520), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19588C5,    ABISELECT(288,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(928,528), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19588C6,    ABISELECT(976,556), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(976,556), //bcp->offset
    106, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(928,528), //bcp->offset
    98, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19588C6,    ABISELECT(400,232), //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
    18, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19588C3,    ABISELECT(400,232), //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
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(608,356), //bcp->offset
    52, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(656,384), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19588C9,    ABISELECT(400,232), //bcp->offset
    44, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(672,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(720,416), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(720,416), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(672,388), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19588C7,    ABISELECT(288,176), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(992,568), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(992,568), //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
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19588C11,    ABISELECT(992,568), //bcp->offset
    112, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19588C2,    ABISELECT(80,52), //bcp->offset
    24, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19588C12,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    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
    30, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19588C6,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19588C8,    ABISELECT(64,40), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19588C10,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19588C1[];
extern void _ZN8S19588C1D1Ev();
extern void _ZN8S19588C1D0Ev();
extern void ABISELECT(_ZThn16_N8S19588C1D1Ev,_ZThn12_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19588C1D0Ev,_ZThn12_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19588C1D1Ev,_ZThn40_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19588C1D0Ev,_ZThn40_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTv0_n72_N8S19588C1D1Ev,_ZTv0_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C1D1Ev,_ZThn52_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19588C1D0Ev,_ZTv0_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C1D0Ev,_ZThn52_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n72_N8S19588C1D1Ev,_ZTvn124_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn208_n72_N8S19588C1D0Ev,_ZTvn124_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19588C1D1Ev,_ZTvn180_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn320_n72_N8S19588C1D0Ev,_ZTvn180_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19588C1D1Ev,_ZTvn304_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn528_n72_N8S19588C1D0Ev,_ZTvn304_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19588C1D1Ev,_ZTvn332_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn576_n72_N8S19588C1D0Ev,_ZTvn332_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19588C1D1Ev,_ZTvn336_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn592_n72_N8S19588C1D0Ev,_ZTvn336_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19588C1D1Ev,_ZTvn364_n36_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn640_n72_N8S19588C1D0Ev,_ZTvn364_n36_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C1D1Ev,_ZTv0_n12_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn752_N8S19588C1D1Ev,_ZThn432_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C1D0Ev,_ZTv0_n12_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn752_N8S19588C1D0Ev,_ZThn432_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn800_N8S19588C1D1Ev,_ZThn460_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn800_N8S19588C1D0Ev,_ZThn460_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn904_N8S19588C1D1Ev,_ZThn516_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn904_N8S19588C1D0Ev,_ZThn516_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn912_N8S19588C1D1Ev,_ZThn520_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn912_N8S19588C1D0Ev,_ZThn520_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C1D1Ev,_ZTv0_n24_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn928_N8S19588C1D1Ev,_ZThn528_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C1D0Ev,_ZTv0_n24_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn928_N8S19588C1D0Ev,_ZThn528_N8S19588C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S19588C1D1Ev,_ZTvn28_n24_N8S19588C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C1D0Ev,_ZTvn28_n24_N8S19588C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev)();
extern void ABISELECT(_ZThn992_N8S19588C1D1Ev,_ZThn568_N8S19588C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev)();
extern void ABISELECT(_ZThn992_N8S19588C1D0Ev,_ZThn568_N8S19588C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19588C1[] = {
  ABISELECT(992,568),
  ABISELECT(928,528),
  ABISELECT(912,520),
  ABISELECT(904,516),
  ABISELECT(80,52),
  ABISELECT(800,460),
  ABISELECT(752,432),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&_ZN8S19588C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C1D0Ev,
  ABISELECT(784,448),
  ABISELECT(736,420),
  ABISELECT(888,504),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19588C1D1Ev,_ZThn12_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19588C1D0Ev,_ZThn12_N8S19588C1D0Ev),
  ABISELECT(736,420),
  ABISELECT(688,392),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19588C1D1Ev,_ZThn40_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19588C1D0Ev,_ZThn40_N8S19588C1D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19588C1D1Ev,_ZTv0_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19588C1D0Ev,_ZTv0_n36_N8S19588C1D0Ev),
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19588C1D1Ev,_ZTvn124_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n72_N8S19588C1D0Ev,_ZTvn124_n36_N8S19588C1D0Ev),
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19588C1D1Ev,_ZTvn180_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n72_N8S19588C1D0Ev,_ZTvn180_n36_N8S19588C1D0Ev),
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19588C1D1Ev,_ZTvn304_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn528_n72_N8S19588C1D0Ev,_ZTvn304_n36_N8S19588C1D0Ev),
  ABISELECT(96,48),
  ABISELECT(-656,-384),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19588C1D1Ev,_ZTvn332_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn576_n72_N8S19588C1D0Ev,_ZTvn332_n36_N8S19588C1D0Ev),
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-672,-388),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19588C1D1Ev,_ZTvn336_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn592_n72_N8S19588C1D0Ev,_ZTvn336_n36_N8S19588C1D0Ev),
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-720,-416),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19588C1D1Ev,_ZTvn364_n36_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn640_n72_N8S19588C1D0Ev,_ZTvn364_n36_N8S19588C1D0Ev),
  ABISELECT(-752,-432),
  ABISELECT(-752,-432),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C1D1Ev,_ZTv0_n12_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C1D0Ev,_ZTv0_n12_N8S19588C1D0Ev),
  ABISELECT(-800,-460),
  ABISELECT(-48,-28),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev),
  ABISELECT(-904,-516),
  ABISELECT(-152,-84),
  ABISELECT(-904,-516),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev),
  ABISELECT(-912,-520),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-912,-520),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev),
  ABISELECT(-928,-528),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-928,-528),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C1D1Ev,_ZTv0_n24_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C1D0Ev,_ZTv0_n24_N8S19588C1D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-976,-556),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C1D1Ev,_ZTvn28_n24_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C1D0Ev,_ZTvn28_n24_N8S19588C1D0Ev),
  ABISELECT(-992,-568),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI8S19588C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19588C1[];
extern void _ZN9S19588C12D1Ev();
extern void _ZN9S19588C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C12__8S19588C1[] = {
  ABISELECT(800,460),
  ABISELECT(752,432),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&_ZN9S19588C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn752_N9S19588C12D1Ev,_ZThn432_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn752_N9S19588C12D0Ev,_ZThn432_N9S19588C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19588C12__8S19588C1[] = {
  ABISELECT(-752,-432),
  ABISELECT(-752,-432),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev)();
extern void ABISELECT(_ZThn800_N9S19588C12D1Ev,_ZThn460_N9S19588C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev)();
extern void ABISELECT(_ZThn800_N9S19588C12D0Ev,_ZThn460_N9S19588C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C12__8S19588C1[] = {
  ABISELECT(-800,-460),
  ABISELECT(-48,-28),
  ABISELECT(-800,-460),
  (VTBL_ENTRY)&(_ZTI9S19588C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C1[] = {
  ABISELECT(784,448),
  ABISELECT(736,420),
  ABISELECT(888,504),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A4__8S19588C1[] = {
  ABISELECT(736,420),
  ABISELECT(688,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A10__8S19588C1[] = {
  ABISELECT(688,392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn688_N8S19588C6D1Ev,_ZThn392_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn688_N8S19588C6D0Ev,_ZThn392_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A10__8S19588C1[] = {
  ABISELECT(-688,-392),
  ABISELECT(-688,-392),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn736_N8S19588C8D1Ev,_ZThn420_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn736_N8S19588C8D0Ev,_ZThn420_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A4__8S19588C1[] = {
  ABISELECT(-736,-420),
  ABISELECT(-48,-28),
  ABISELECT(-736,-420),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn688_N8S19588C8D1Ev,_ZThn392_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn688_N8S19588C8D0Ev,_ZThn392_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A4__8S19588C1[] = {
  ABISELECT(-688,-392),
  ABISELECT(-688,-392),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn888_N9S19588C10D1Ev,_ZThn504_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn888_N9S19588C10D0Ev,_ZThn504_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__A__8S19588C1[] = {
  ABISELECT(-888,-504),
  ABISELECT(-152,-84),
  ABISELECT(-888,-504),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn736_N9S19588C10D1Ev,_ZThn420_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn736_N9S19588C10D0Ev,_ZThn420_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C1[] = {
  ABISELECT(-736,-420),
  ABISELECT(-736,-420),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn784_N9S19588C10D1Ev,_ZThn448_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn784_N9S19588C10D0Ev,_ZThn448_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__A__8S19588C1[] = {
  ABISELECT(-784,-448),
  ABISELECT(-48,-28),
  ABISELECT(-784,-448),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__A__8S19588C1[] = {
  ABISELECT(736,420),
  ABISELECT(688,392),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN8S19588C2D1Ev();
extern void _ZN8S19588C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C2__8S19588C1[] = {
  ABISELECT(912,516),
  ABISELECT(848,476),
  ABISELECT(832,468),
  ABISELECT(824,464),
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&_ZN8S19588C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C2D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C2__8S19588C1[] = {
  ABISELECT(720,408),
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C2__A1__8S19588C1[] = {
  ABISELECT(672,380),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C2__A1__8S19588C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C2__8S19588C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C2__8S19588C1[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C7D1Ev();
extern void _ZN8S19588C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&_ZN8S19588C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C7D0Ev,
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C58S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[] = {
  ABISELECT(464,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C58S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C9D1Ev();
extern void _ZN8S19588C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&_ZN8S19588C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C9D0Ev,
};
extern void _ZN8S19588C3D1Ev();
extern void _ZN8S19588C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(400,228),
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&_ZN8S19588C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C3D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[] = {
  ABISELECT(352,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[] = {
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-48,-28),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-352,-200),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-528,-296),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev)();
extern void ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A1__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-504,-284),
  ABISELECT(-152,-84),
  ABISELECT(-504,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D1Ev,_ZTvn28_n24_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C9D0Ev,_ZTvn28_n24_N8S19588C9D0Ev),
};
extern void ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A__8S19588C98S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(96,48),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19588C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D1Ev,_ZThn152_N8S19588C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N8S19588C9D0Ev,_ZThn152_N8S19588C9D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-232,-128),
  ABISELECT(-152,-84),
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C108S19588C78S19588C2__A1__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-616,-340),
  ABISELECT(-152,-84),
  ABISELECT(-616,-340),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-464,-256),
  ABISELECT(-464,-256),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-624,-344),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-624,-344),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-512,-284),
  ABISELECT(-48,-28),
  ABISELECT(-512,-284),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C9__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D1Ev,_ZThn56_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19588C7D0Ev,_ZThn56_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev)();
extern void ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-640,-352),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D1Ev,_ZTvn28_n24_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C7D0Ev,_ZTvn28_n24_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C9__A6__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(96,48),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D1Ev,_ZThn208_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N8S19588C7D0Ev,_ZThn208_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19588C10__A__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D1Ev,_ZThn212_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N8S19588C7D0Ev,_ZThn212_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A2__8S19588C78S19588C2__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI8S19588C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D1Ev,_ZThn240_N8S19588C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N8S19588C7D0Ev,_ZThn240_N8S19588C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C2__8S19588C1[] = {
  ABISELECT(-672,-380),
  ABISELECT(-672,-380),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C2__8S19588C1[] = {
  ABISELECT(-720,-408),
  ABISELECT(-48,-28),
  ABISELECT(-720,-408),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C7__8S19588C2__8S19588C1[] = {
  ABISELECT(640,352),
  ABISELECT(512,284),
  ABISELECT(624,344),
  ABISELECT(616,340),
  ABISELECT(464,256),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D1Ev,_ZThn124_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N8S19588C2D0Ev,_ZThn124_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C6__A2__8S19588C2__8S19588C1[] = {
  ABISELECT(-824,-464),
  ABISELECT(-152,-84),
  ABISELECT(-824,-464),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C2__8S19588C1[] = {
  ABISELECT(-832,-468),
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  ABISELECT(-832,-468),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C98S19588C7__8S19588C2__8S19588C1[] = {
  ABISELECT(504,284),
  ABISELECT(528,296),
  ABISELECT(400,228),
  ABISELECT(352,200),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D1Ev,_ZThn180_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19588C2D0Ev,_ZThn180_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C2__8S19588C1[] = {
  ABISELECT(-848,-476),
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C2__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-896,-504),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D1Ev,_ZTvn28_n24_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S19588C2D0Ev,_ZTvn28_n24_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2__8S19588C1[] = {
  ABISELECT(96,48),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D1Ev,_ZThn332_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn576_N8S19588C2D0Ev,_ZThn332_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19588C108S19588C7__A1__8S19588C2__8S19588C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(232,128),
  ABISELECT(-592,-336),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D1Ev,_ZThn336_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn592_N8S19588C2D0Ev,_ZThn336_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2__8S19588C1[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-640,-364),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D1Ev,_ZThn364_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn640_N8S19588C2D0Ev,_ZThn364_N8S19588C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev)();
extern void ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19588C11__8S19588C2__8S19588C1[] = {
  ABISELECT(-912,-516),
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  ABISELECT(-912,-516),
  (VTBL_ENTRY)&(_ZTI8S19588C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev),
};
extern void _ZN8S19588C5D1Ev();
extern void _ZN8S19588C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&_ZN8S19588C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C5D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C5__8S19588C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C5__8S19588C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S19588C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev),
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C6__A2__8S19588C1[] = {
  ABISELECT(-152,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C6__A2__8S19588C1[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C8__8S19588C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C8__A3__8S19588C1[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C8__8S19588C1[] = {
  ABISELECT(112,60),
  ABISELECT(-48,-28),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C8__8S19588C1[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void _ZN9S19588C10D1Ev();
extern void _ZN9S19588C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C10__8S19588C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-176,-96),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&_ZN9S19588C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C10D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C10__A1__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C1[] = {
  ABISELECT(-224,-124),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C1[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C1[] = {
  ABISELECT(176,96),
  ABISELECT(-48,-28),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C1[] = {
  ABISELECT(224,124),
  ABISELECT(224,124),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C6__9S19588C10__8S19588C1[] = {
  ABISELECT(24,12),
  ABISELECT(-152,-84),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__9S19588C10__8S19588C1[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C10__8S19588C1[] = {
  ABISELECT(128,68),
  ABISELECT(-48,-28),
  ABISELECT(128,68),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev),
};
extern void ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C8__9S19588C10__8S19588C1[] = {
  ABISELECT(-176,-96),
  ABISELECT(-224,-124),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19588C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D1Ev,_ZThn28_N9S19588C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19588C10D0Ev,_ZThn28_N9S19588C10D0Ev),
};
extern void _ZN9S19588C11D1Ev();
extern void _ZN9S19588C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19588C11__8S19588C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&_ZN9S19588C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19588C11D0Ev,
};
extern void _ZN8S19588C8D1Ev();
extern void _ZN8S19588C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C89S19588C11__A3__8S19588C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&_ZN8S19588C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C8D0Ev,
};
extern void _ZN8S19588C6D1Ev();
extern void _ZN8S19588C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C1[] = {
  ABISELECT(-240,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&_ZN8S19588C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19588C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C1[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI8S19588C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19588C5__9S19588C11__8S19588C1[] = {
  ABISELECT(192,108),
  ABISELECT(-48,-28),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D1Ev,_ZTv0_n16_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19588C11D0Ev,_ZTv0_n16_N9S19588C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S19588C11__8S19588C1[] = {
  ABISELECT(240,136),
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S19588C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D1Ev,_ZTv0_n12_N9S19588C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19588C11D0Ev,_ZTv0_n12_N9S19588C11D0Ev),
};
static  VTT_ENTRY vtt_S19588C1[] = {
  {&(_ZTV8S19588C1[9]),  9,119},
  {&(_tg__ZTV9S19588C12__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19588C12__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C12__8S19588C1[4]),  4,6},
  {&(_tg__ZTV9S19588C10__A__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A4__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A10__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A10__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A4__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A4__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__A__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__A__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__A__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__A__8S19588C1[4]),  4,6},
  {&(_ZTV8S19588C1[33]),  33,119},
  {&(_ZTV8S19588C1[77]),  77,119},
  {&(_ZTV8S19588C1[83]),  83,119},
  {&(_ZTV8S19588C1[42]),  42,119},
  {&(_ZTV8S19588C1[89]),  89,119},
  {&(_ZTV8S19588C1[96]),  96,119},
  {&(_ZTV8S19588C1[50]),  50,119},
  {&(_ZTV8S19588C1[104]),  104,119},
  {&(_ZTV8S19588C1[110]),  110,119},
  {&(_ZTV8S19588C1[54]),  54,119},
  {&(_ZTV8S19588C1[59]),  59,119},
  {&(_ZTV8S19588C1[66]),  66,119},
  {&(_ZTV8S19588C1[72]),  72,119},
  {&(_ZTV8S19588C1[117]),  117,119},
  {&(_ZTV8S19588C1[16]),  16,119},
  {&(_ZTV8S19588C1[22]),  22,119},
  {&(_tg__ZTV8S19588C2__8S19588C1[8]),  8,10},
  {&(_tg__ZTV8S19588C38S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C78S19588C2__8S19588C1[7]),  7,9},
  {&(_tg__ZTV8S19588C58S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C58S19588C78S19588C2__A4__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C58S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C98S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C38S19588C98S19588C78S19588C2__A6__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C38S19588C98S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C98S19588C78S19588C2__A7__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C98S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C98S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C6__A1__8S19588C98S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C10__8S19588C98S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C6__A__8S19588C98S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C108S19588C78S19588C2__A1__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C108S19588C78S19588C2__A8__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C108S19588C78S19588C2__A2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C108S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C108S19588C78S19588C2__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C108S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C108S19588C78S19588C2__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C6__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C78S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C5__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C9__8S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV9S19588C10__8S19588C78S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C9__A6__8S19588C78S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C10__A__8S19588C78S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A2__8S19588C78S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C7__8S19588C2__8S19588C1[7]),  7,9},
  {&(_tg__ZTV8S19588C6__A2__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__8S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C98S19588C7__8S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV9S19588C10__8S19588C2__8S19588C1[6]),  6,8},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C98S19588C7__A7__8S19588C2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C108S19588C7__A1__8S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C108S19588C7__A2__8S19588C2__8S19588C1[4]),  4,6},
  {&(_tg__ZTV9S19588C11__8S19588C2__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C68S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__A2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C6__A2__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C8__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C8__A3__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C8__A3__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C8__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C8__8S19588C1[3]),  3,5},
  {&(_tg__ZTV9S19588C10__8S19588C1[5]),  5,7},
  {&(_tg__ZTV8S19588C89S19588C10__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C10__A5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C10__A5__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C10__A1__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C10__A1__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C6__9S19588C10__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__9S19588C10__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C10__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C8__9S19588C10__8S19588C1[4]),  4,6},
  {&(_tg__ZTV9S19588C11__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C89S19588C11__A3__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19588C68S19588C89S19588C11__A9__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S19588C68S19588C89S19588C11__A9__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__8S19588C89S19588C11__A3__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__8S19588C89S19588C11__A3__8S19588C1[3]),  3,5},
  {&(_tg__ZTV8S19588C5__9S19588C11__8S19588C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S19588C11__8S19588C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19588C1[];
extern  VTBL_ENTRY _ZTV8S19588C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19588C1[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D0Ev,_ZTv0_n24_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D0Ev,_ZThn476_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C2D1Ev,_ZTv0_n24_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N8S19588C2D1Ev,_ZThn476_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D0Ev,_ZTv0_n20_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D0Ev,_ZThn516_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D0Ev,_ZThn468_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C2D1Ev,_ZTv0_n20_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C2D1Ev,_ZThn516_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn832_N8S19588C2D1Ev,_ZThn468_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D0Ev,_ZTv0_n16_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D0Ev,_ZThn464_N8S19588C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D0Ev,_ZThn408_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C2D1Ev,_ZTv0_n16_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn824_N8S19588C2D1Ev,_ZThn464_N8S19588C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C2D1Ev,_ZThn408_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D0Ev,_ZTv0_n12_N8S19588C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D0Ev,_ZThn380_N8S19588C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C2D1Ev,_ZTv0_n12_N8S19588C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C2D1Ev,_ZThn380_N8S19588C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D0Ev,_ZTv0_n24_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D0Ev,_ZThn352_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C7D1Ev,_ZTv0_n24_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S19588C7D1Ev,_ZThn352_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D0Ev,_ZTv0_n20_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D0Ev,_ZThn344_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C7D1Ev,_ZTv0_n20_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn624_N8S19588C7D1Ev,_ZThn344_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D0Ev,_ZTv0_n12_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D0Ev,_ZThn256_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C7D1Ev,_ZTv0_n12_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C7D1Ev,_ZThn256_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D0Ev,_ZTv0_n16_N8S19588C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D0Ev,_ZThn284_N8S19588C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D0Ev,_ZThn340_N8S19588C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C7D1Ev,_ZTv0_n16_N8S19588C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S19588C7D1Ev,_ZThn284_N8S19588C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn616_N8S19588C7D1Ev,_ZThn340_N8S19588C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D0Ev,_ZTv0_n24_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D0Ev,_ZThn296_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C9D1Ev,_ZTv0_n24_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S19588C9D1Ev,_ZThn296_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D0Ev,_ZTv0_n12_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D0Ev,_ZThn200_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C9D1Ev,_ZTv0_n12_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C9D1Ev,_ZThn200_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D0Ev,_ZTv0_n16_N8S19588C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D0Ev,_ZThn284_N8S19588C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D0Ev,_ZThn228_N8S19588C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C9D1Ev,_ZTv0_n16_N8S19588C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn504_N8S19588C9D1Ev,_ZThn284_N8S19588C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C9D1Ev,_ZThn228_N8S19588C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D0Ev,_ZTv0_n12_N8S19588C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D0Ev,_ZThn256_N8S19588C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C5D1Ev,_ZTv0_n12_N8S19588C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C5D1Ev,_ZThn256_N8S19588C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D0Ev,_ZTv0_n16_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D0Ev,_ZThn228_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D0Ev,_ZThn408_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C3D1Ev,_ZTv0_n16_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19588C3D1Ev,_ZThn228_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S19588C3D1Ev,_ZThn408_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D0Ev,_ZTv0_n12_N8S19588C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D0Ev,_ZThn200_N8S19588C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D0Ev,_ZThn380_N8S19588C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C3D1Ev,_ZTv0_n12_N8S19588C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C3D1Ev,_ZThn200_N8S19588C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C3D1Ev,_ZThn380_N8S19588C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D0Ev,_ZTv0_n12_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D0Ev,_ZThn44_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S19588C10D0Ev,_ZThn420_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C10D1Ev,_ZTv0_n12_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19588C10D1Ev,_ZThn44_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N9S19588C10D1Ev,_ZThn420_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D0Ev,_ZTv0_n16_N9S19588C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D0Ev,_ZThn72_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D0Ev,_ZThn128_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19588C10D0Ev,_ZThn448_N9S19588C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N9S19588C10D0Ev,_ZThn504_N9S19588C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C10D1Ev,_ZTv0_n16_N9S19588C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19588C10D1Ev,_ZThn72_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19588C10D1Ev,_ZThn128_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn784_N9S19588C10D1Ev,_ZThn448_N9S19588C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn888_N9S19588C10D1Ev,_ZThn504_N9S19588C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D0Ev,_ZTv0_n12_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D0Ev,_ZThn16_N8S19588C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C8D0Ev,_ZThn392_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C8D1Ev,_ZTv0_n12_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C8D1Ev,_ZThn16_N8S19588C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C8D1Ev,_ZThn392_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D0Ev,_ZTv0_n16_N8S19588C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D0Ev,_ZThn44_N8S19588C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S19588C8D0Ev,_ZThn420_N8S19588C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C8D1Ev,_ZTv0_n16_N8S19588C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C8D1Ev,_ZThn44_N8S19588C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn736_N8S19588C8D1Ev,_ZThn420_N8S19588C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D0Ev,_ZTv0_n12_N8S19588C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D0Ev,_ZThn16_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D0Ev,_ZThn48_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D0Ev,_ZThn200_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D0Ev,_ZThn256_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D0Ev,_ZThn380_N8S19588C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C6D0Ev,_ZThn392_N8S19588C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C6D1Ev,_ZTv0_n12_N8S19588C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19588C6D1Ev,_ZThn16_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19588C6D1Ev,_ZThn48_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S19588C6D1Ev,_ZThn200_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N8S19588C6D1Ev,_ZThn256_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn672_N8S19588C6D1Ev,_ZThn380_N8S19588C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn688_N8S19588C6D1Ev,_ZThn392_N8S19588C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D0Ev,_ZTv0_n16_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19588C12D0Ev,_ZThn460_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19588C12D1Ev,_ZTv0_n16_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn800_N9S19588C12D1Ev,_ZThn460_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D0Ev,_ZTv0_n12_N9S19588C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N9S19588C12D0Ev,_ZThn432_N9S19588C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19588C12D1Ev,_ZTv0_n12_N9S19588C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N9S19588C12D1Ev,_ZThn432_N9S19588C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C1D0Ev,_ZTv0_n24_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S19588C1D0Ev,_ZThn528_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19588C1D1Ev,_ZTv0_n24_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn928_N8S19588C1D1Ev,_ZThn528_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C1D0Ev,_ZTv0_n20_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S19588C1D0Ev,_ZThn568_N8S19588C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C1D0Ev,_ZThn520_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19588C1D1Ev,_ZTv0_n20_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn992_N8S19588C1D1Ev,_ZThn568_N8S19588C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn912_N8S19588C1D1Ev,_ZThn520_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C1D0Ev,_ZTv0_n16_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn904_N8S19588C1D0Ev,_ZThn516_N8S19588C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19588C1D0Ev,_ZThn460_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19588C1D1Ev,_ZTv0_n16_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn904_N8S19588C1D1Ev,_ZThn516_N8S19588C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn800_N8S19588C1D1Ev,_ZThn460_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C1D0Ev,_ZTv0_n12_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N8S19588C1D0Ev,_ZThn432_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19588C1D1Ev,_ZTv0_n12_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn752_N8S19588C1D1Ev,_ZThn432_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19588C1D0Ev,_ZTv0_n36_N8S19588C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C1D0Ev,_ZThn52_N8S19588C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19588C1D1Ev,_ZTv0_n36_N8S19588C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19588C1D1Ev,_ZThn52_N8S19588C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19588C1 = {  "S19588C1", // class name
  bases_S19588C1, 33,
  &(vtc_S19588C1[0]), // expected_vtbl_contents
  &(vtt_S19588C1[0]), // expected_vtt_contents
  ABISELECT(1008,576), // object size
  NSPAIRA(_ZTI8S19588C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19588C1),119, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19588C1),116, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C3  : virtual S20760C9 {
  char s21150c3f0[2];
  virtual  ~S21150C3(); // _ZN8S21150C3D2Ev
  S21150C3(); // tgen
};
//SIG(-1 S21150C3) C1{ VBC2{ vd m FL} vd Fc[2]}


 S21150C3 ::~S21150C3(){ note_dtor("S21150C3", this);}
S21150C3 ::S21150C3(){ note_ctor("S21150C3", this);} // tgen

static void Test_S21150C3()
{
  extern Class_Descriptor cd_S21150C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21150C3, buf);
    S21150C3 *dp, &lv = *(dp=new (buf) S21150C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21150C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C3)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S21150C3");
    check_field_offset(lv, s21150c3f0, ABISELECT(8,4), "S21150C3.s21150c3f0");
    test_class_info(&lv, &cd_S21150C3);
    dp->~S21150C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C3(Test_S21150C3, "S21150C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21150C3C1Ev();
extern void _ZN8S21150C3D2Ev();
Name_Map name_map_S21150C3[] = {
  NSPAIR(_ZN8S21150C3C1Ev),
  NSPAIR(_ZN8S21150C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21150C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI8S21150C3[];
extern void _ZN8S21150C3D1Ev();
extern void _ZN8S21150C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C3[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&_ZN8S21150C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C3[];
static  VTT_ENTRY vtt_S21150C3[] = {
  {&(_ZTV8S21150C3[3]),  3,10},
  {&(_ZTV8S21150C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21150C3[];
extern  VTBL_ENTRY _ZTV8S21150C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C3[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C3 = {  "S21150C3", // class name
  bases_S21150C3, 1,
  &(vtc_S21150C3[0]), // expected_vtbl_contents
  &(vtt_S21150C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21150C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21150C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C6  : virtual S20760C5_nt {
  ::S4228C37 s21150c6f0;
  virtual  ~S21150C6(); // _ZN8S21150C6D2Ev
  S21150C6(); // tgen
};
//SIG(-1 S21150C6) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S21150C6 ::~S21150C6(){ note_dtor("S21150C6", this);}
S21150C6 ::S21150C6(){ note_ctor("S21150C6", this);} // tgen

static void Test_S21150C6()
{
  extern Class_Descriptor cd_S21150C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21150C6, buf);
    S21150C6 *dp, &lv = *(dp=new (buf) S21150C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21150C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C6)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(16,8), "S21150C6");
    check_field_offset(lv, s21150c6f0, ABISELECT(8,4), "S21150C6.s21150c6f0");
    test_class_info(&lv, &cd_S21150C6);
    dp->~S21150C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C6(Test_S21150C6, "S21150C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21150C6C1Ev();
extern void _ZN8S21150C6D2Ev();
Name_Map name_map_S21150C6[] = {
  NSPAIR(_ZN8S21150C6C1Ev),
  NSPAIR(_ZN8S21150C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21150C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(16,8), //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 _ZTI8S21150C6[];
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C6[];
static  VTT_ENTRY vtt_S21150C6[] = {
  {&(_ZTV8S21150C6[3]),  3,10},
  {&(_ZTV8S21150C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C6 = {  "S21150C6", // class name
  bases_S21150C6, 1,
  &(vtc_S21150C6[0]), // expected_vtbl_contents
  &(vtt_S21150C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21150C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21150C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C10  : S20760C13 , virtual S4228C23 , virtual S4228C37 {
  short s21150c10f0;
  ~S21150C10(); // tgen
  S21150C10(); // tgen
};
//SIG(-1 S21150C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21150C10 ::~S21150C10(){ note_dtor("S21150C10", this);} // tgen
S21150C10 ::S21150C10(){ note_ctor("S21150C10", this);} // tgen

static void Test_S21150C10()
{
  extern Class_Descriptor cd_S21150C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21150C10, buf);
    S21150C10 *dp, &lv = *(dp=new (buf) S21150C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21150C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21150C10");
    check_base_class_offset(lv, (S4228C23*), 0, "S21150C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21150C10");
    check_field_offset(lv, s21150c10f0, ABISELECT(32,28), "S21150C10.s21150c10f0");
    test_class_info(&lv, &cd_S21150C10);
    dp->~S21150C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C10(Test_S21150C10, "S21150C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21150C10C1Ev();
extern void _ZN9S21150C10D1Ev();
Name_Map name_map_S21150C10[] = {
  NSPAIR(_ZN9S21150C10C1Ev),
  NSPAIR(_ZN9S21150C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S21150C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21150C10[];
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY vtc_S21150C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21150C10[];
static  VTT_ENTRY vtt_S21150C10[] = {
  {&(_ZTV9S21150C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
Class_Descriptor cd_S21150C10 = {  "S21150C10", // class name
  bases_S21150C10, 3,
  &(vtc_S21150C10[0]), // expected_vtbl_contents
  &(vtt_S21150C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21150C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21150C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C10),1, //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  S21150C5  : virtual S21150C6 , virtual S4228C27 , S21150C10 {
  int s21150c5f0;
  virtual  ~S21150C5(); // _ZN8S21150C5D2Ev
  S21150C5(); // tgen
};
//SIG(-1 S21150C5) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S21150C5 ::~S21150C5(){ note_dtor("S21150C5", this);}
S21150C5 ::S21150C5(){ note_ctor("S21150C5", this);} // tgen

static void Test_S21150C5()
{
  extern Class_Descriptor cd_S21150C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S21150C5, buf);
    S21150C5 *dp, &lv = *(dp=new (buf) S21150C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S21150C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C5)");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C6*), ABISELECT(56,44), "S21150C5");
    check_base_class_offset(lv, (S21150C6*), ABISELECT(40,36), "S21150C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S21150C5");
    check_base_class_offset(lv, (S20760C13*)(S21150C10*), 0, "S21150C5");
    check_base_class_offset(lv, (S4228C23*)(S21150C10*), 0, "S21150C5");
    check_base_class_offset(lv, (S4228C37*)(S21150C10*), 0, "S21150C5");
    check_base_class_offset(lv, (S21150C10*), 0, "S21150C5");
    check_field_offset(lv, s21150c5f0, ABISELECT(36,32), "S21150C5.s21150c5f0");
    test_class_info(&lv, &cd_S21150C5);
    dp->~S21150C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C5(Test_S21150C5, "S21150C5", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S21150C5C1Ev();
extern void _ZN8S21150C5D2Ev();
Name_Map name_map_S21150C5[] = {
  NSPAIR(_ZN8S21150C5C1Ev),
  NSPAIR(_ZN8S21150C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C6;
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C10;
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
static Base_Class bases_S21150C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(56,44), //bcp->offset
    15, //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_S21150C6,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21150C10,    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 _ZTI8S21150C5[];
extern void _ZN8S21150C5D1Ev();
extern void _ZN8S21150C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S21150C5D1Ev,_ZThn36_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S21150C5D0Ev,_ZThn36_N8S21150C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21150C5D1Ev,_ZThn44_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21150C5D0Ev,_ZThn44_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C5[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&_ZN8S21150C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C5D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C5[];
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C10__8S21150C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C6__8S21150C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
static  VTT_ENTRY vtt_S21150C5[] = {
  {&(_ZTV8S21150C5[7]),  7,20},
  {&(_tg__ZTV9S21150C10__8S21150C5[4]),  4,6},
  {&(_ZTV8S21150C5[13]),  13,20},
  {&(_ZTV8S21150C5[18]),  18,20},
  {&(_tg__ZTV8S21150C6__8S21150C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21150C6__8S21150C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21150C5[];
extern  VTBL_ENTRY _ZTV8S21150C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C5[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21150C5D0Ev,_ZThn44_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21150C5D1Ev,_ZThn44_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C5D0Ev,_ZThn36_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C5D1Ev,_ZThn36_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C5 = {  "S21150C5", // class name
  bases_S21150C5, 7,
  &(vtc_S21150C5[0]), // expected_vtbl_contents
  &(vtt_S21150C5[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S21150C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21150C5),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C5),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C16  : virtual S20760C5_nt {
  virtual  ~S21150C16(); // _ZN9S21150C16D2Ev
  S21150C16(); // tgen
};
//SIG(-1 S21150C16) C1{ VBC2{ vd m FL} vd}


 S21150C16 ::~S21150C16(){ note_dtor("S21150C16", this);}
S21150C16 ::S21150C16(){ note_ctor("S21150C16", this);} // tgen

static void Test_S21150C16()
{
  extern Class_Descriptor cd_S21150C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21150C16, buf);
    S21150C16 *dp, &lv = *(dp=new (buf) S21150C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21150C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C16)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(8,4), "S21150C16");
    test_class_info(&lv, &cd_S21150C16);
    dp->~S21150C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C16(Test_S21150C16, "S21150C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S21150C16C1Ev();
extern void _ZN9S21150C16D2Ev();
Name_Map name_map_S21150C16[] = {
  NSPAIR(_ZN9S21150C16C1Ev),
  NSPAIR(_ZN9S21150C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21150C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C16[];
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S21150C16D1Ev,_ZThn4_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S21150C16D0Ev,_ZThn4_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C16[];
static  VTT_ENTRY vtt_S21150C16[] = {
  {&(_ZTV9S21150C16[3]),  3,10},
  {&(_ZTV9S21150C16[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21150C16D0Ev,_ZThn4_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21150C16D1Ev,_ZThn4_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C16 = {  "S21150C16", // class name
  bases_S21150C16, 1,
  &(vtc_S21150C16[0]), // expected_vtbl_contents
  &(vtt_S21150C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S21150C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21150C16),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C15  : S20760C5_nt , virtual S20760C13 , S21150C16 {
  ::S20760C13 s21150c15f0;
  ~S21150C15(); // tgen
  S21150C15(); // tgen
};
//SIG(-1 S21150C15) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21150C15 ::~S21150C15(){ note_dtor("S21150C15", this);} // tgen
S21150C15 ::S21150C15(){ note_ctor("S21150C15", this);} // tgen

static void Test_S21150C15()
{
  extern Class_Descriptor cd_S21150C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21150C15, buf);
    S21150C15 *dp, &lv = *(dp=new (buf) S21150C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21150C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21150C15)");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), 0, "S21150C15");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21150C15");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(88,72), "S21150C15");
    check_base_class_offset(lv, (S21150C16*), ABISELECT(16,12), "S21150C15");
    check_field_offset(lv, s21150c15f0, ABISELECT(24,16), "S21150C15.s21150c15f0");
    test_class_info(&lv, &cd_S21150C15);
    dp->~S21150C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C15(Test_S21150C15, "S21150C15", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S21150C15C1Ev();
extern void _ZN9S21150C15D1Ev();
Name_Map name_map_S21150C15[] = {
  NSPAIR(_ZN9S21150C15C1Ev),
  NSPAIR(_ZN9S21150C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static Base_Class bases_S21150C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C15[];
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S21150C15D1Ev,_ZThn72_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S21150C15D0Ev,_ZThn72_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C15[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C15[];
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn60_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn60_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__9S21150C15[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C15[] = {
  {&(_ZTV9S21150C15[4]),  4,21},
  {&(_tg__ZTV9S21150C16__9S21150C15[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__9S21150C15[3]),  3,5},
  {&(_ZTV9S21150C15[14]),  14,21},
  {&(_ZTV9S21150C15[9]),  9,21},
  {&(_ZTV9S21150C15[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn60_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn60_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C15D0Ev,_ZThn72_N9S21150C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C15D1Ev,_ZThn72_N9S21150C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C15 = {  "S21150C15", // class name
  bases_S21150C15, 4,
  &(vtc_S21150C15[0]), // expected_vtbl_contents
  &(vtt_S21150C15[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S21150C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21150C15),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C15),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C14  : virtual S20760C13 , virtual S21150C15 {
  long double s21150c14f0;
  ~S21150C14(); // tgen
  S21150C14(); // tgen
};
//SIG(-1 S21150C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21150C14 ::~S21150C14(){ note_dtor("S21150C14", this);} // tgen
S21150C14 ::S21150C14(){ note_ctor("S21150C14", this);} // tgen

static void Test_S21150C14()
{
  extern Class_Descriptor cd_S21150C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21150C14, buf);
    S21150C14 *dp, &lv = *(dp=new (buf) S21150C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21150C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21150C14");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(32,16), "S21150C14");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(64,44), "S21150C14");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(120,88), "S21150C14");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(80,56), "S21150C14");
    check_base_class_offset(lv, (S21150C15*), ABISELECT(64,44), "S21150C14");
    check_field_offset(lv, s21150c14f0, ABISELECT(16,4), "S21150C14.s21150c14f0");
    test_class_info(&lv, &cd_S21150C14);
    dp->~S21150C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C14(Test_S21150C14, "S21150C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21150C14C1Ev();
extern void _ZN9S21150C14D1Ev();
Name_Map name_map_S21150C14[] = {
  NSPAIR(_ZN9S21150C14C1Ev),
  NSPAIR(_ZN9S21150C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
static Base_Class bases_S21150C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C14[];
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C14[];
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
static  VTT_ENTRY vtt_S21150C14[] = {
  {&(_ZTV9S21150C14[5]),  5,29},
  {&(_ZTV9S21150C14[10]),  10,29},
  {&(_ZTV9S21150C14[17]),  17,29},
  {&(_ZTV9S21150C14[22]),  22,29},
  {&(_ZTV9S21150C14[27]),  27,29},
  {&(_tg__ZTV9S21150C15__9S21150C14[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C14[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
static VTBL_ENTRY alt_thunk_names170[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C14 = {  "S21150C14", // class name
  bases_S21150C14, 5,
  &(vtc_S21150C14[0]), // expected_vtbl_contents
  &(vtt_S21150C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21150C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21150C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names170,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C18  : S4161C4_nt , S21150C14 , S20760C22_nt , virtual S21150C16 {
  virtual  ~S21150C18(); // _ZN9S21150C18D2Ev
  S21150C18(); // tgen
};
//SIG(-1 S21150C18) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21150C18 ::~S21150C18(){ note_dtor("S21150C18", this);}
S21150C18 ::S21150C18(){ note_ctor("S21150C18", this);} // tgen

static void Test_S21150C18()
{
  extern Class_Descriptor cd_S21150C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21150C18, buf);
    S21150C18 *dp, &lv = *(dp=new (buf) S21150C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21150C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C18)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21150C18");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(48,24), "S21150C18");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(48,24), "S21150C18");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(80,52), "S21150C18");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(136,96), "S21150C18");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(136,96), "S21150C18");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(96,64), "S21150C18");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(80,52), "S21150C18");
    check_base_class_offset(lv, (S21150C14*), 0, "S21150C18");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21150C18");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*), ABISELECT(152,108), "S21150C18");
    test_class_info(&lv, &cd_S21150C18);
    dp->~S21150C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C18(Test_S21150C18, "S21150C18", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S21150C18C1Ev();
extern void _ZN9S21150C18D2Ev();
Name_Map name_map_S21150C18[] = {
  NSPAIR(_ZN9S21150C18C1Ev),
  NSPAIR(_ZN9S21150C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static Base_Class bases_S21150C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21150C14,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21150C16,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C18[];
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
extern void ABISELECT(_ZThn40_N9S21150C18D1Ev,_ZThn20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C18D0Ev,_ZThn20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C18[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21150C18D1Ev,_ZThn20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21150C18D0Ev,_ZThn20_N9S21150C18D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C18[];
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C18[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__9S21150C18[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__9S21150C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C18[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C18[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C18[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C18[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C18[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C18[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C18[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C18[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C18[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C18[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C18[] = {
  {&(_ZTV9S21150C18[6]),  6,40},
  {&(_tg__ZTV9S21150C14__9S21150C18[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__9S21150C18[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C18[3]),  3,5},
  {&(_ZTV9S21150C18[15]),  15,40},
  {&(_ZTV9S21150C18[22]),  22,40},
  {&(_ZTV9S21150C18[27]),  27,40},
  {&(_ZTV9S21150C18[32]),  32,40},
  {&(_ZTV9S21150C18[38]),  38,40},
  {&(_tg__ZTV9S21150C15__9S21150C18[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C18[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C18[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
static VTBL_ENTRY alt_thunk_names171[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C18 = {  "S21150C18", // class name
  bases_S21150C18, 9,
  &(vtc_S21150C18[0]), // expected_vtbl_contents
  &(vtt_S21150C18[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S21150C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21150C18),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C18),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names171,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C17  : S20760C5_nt , S21150C18 {
  virtual  ~S21150C17(); // _ZN9S21150C17D2Ev
  S21150C17(); // tgen
};
//SIG(-1 S21150C17) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21150C17 ::~S21150C17(){ note_dtor("S21150C17", this);}
S21150C17 ::S21150C17(){ note_ctor("S21150C17", this);} // tgen

static void Test_S21150C17()
{
  extern Class_Descriptor cd_S21150C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21150C17, buf);
    S21150C17 *dp, &lv = *(dp=new (buf) S21150C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21150C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C17)");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), 0, "S21150C17");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*), ABISELECT(48,28), "S21150C17");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*), ABISELECT(64,36), "S21150C17");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(64,36), "S21150C17");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(96,64), "S21150C17");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(152,108), "S21150C17");
    /*is_ambiguous_... S21150C17::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(152,108), "S21150C17");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(112,76), "S21150C17");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*), ABISELECT(96,64), "S21150C17");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*), ABISELECT(16,12), "S21150C17");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*), ABISELECT(56,32), "S21150C17");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*), ABISELECT(168,120), "S21150C17");
    check_base_class_offset(lv, (S21150C18*), ABISELECT(16,12), "S21150C17");
    test_class_info(&lv, &cd_S21150C17);
    dp->~S21150C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C17(Test_S21150C17, "S21150C17", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S21150C17C1Ev();
extern void _ZN9S21150C17D2Ev();
Name_Map name_map_S21150C17[] = {
  NSPAIR(_ZN9S21150C17C1Ev),
  NSPAIR(_ZN9S21150C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
static Base_Class bases_S21150C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21150C14,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI9S21150C17[];
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C17D1Ev,_ZThn32_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C17D0Ev,_ZThn32_N9S21150C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C17D1Ev,_ZThn36_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C17D0Ev,_ZThn36_N9S21150C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn96_N9S21150C17D1Ev,_ZThn64_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn96_N9S21150C17D0Ev,_ZThn64_N9S21150C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C17D1Ev,_ZThn108_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C17D0Ev,_ZThn108_N9S21150C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S21150C17D1Ev,_ZThn120_N9S21150C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S21150C17D0Ev,_ZThn120_N9S21150C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C17[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21150C17D1Ev,_ZThn32_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21150C17D0Ev,_ZThn32_N9S21150C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C17[];
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C18__9S21150C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C18__9S21150C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C18__9S21150C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C18__9S21150C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C18__9S21150C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C18__9S21150C17[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C17[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C17[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C17[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C17[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C17[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C17[] = {
  {&(_ZTV9S21150C17[6]),  6,48},
  {&(_tg__ZTV9S21150C18__9S21150C17[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C18__9S21150C17[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C18__9S21150C17[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C18__9S21150C17[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C18__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C18__9S21150C17[4]),  4,6},
  {&(_ZTV9S21150C17[14]),  14,48},
  {&(_ZTV9S21150C17[23]),  23,48},
  {&(_ZTV9S21150C17[30]),  30,48},
  {&(_ZTV9S21150C17[35]),  35,48},
  {&(_ZTV9S21150C17[40]),  40,48},
  {&(_ZTV9S21150C17[46]),  46,48},
  {&(_tg__ZTV9S21150C15__9S21150C17[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C17[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
static VTBL_ENTRY alt_thunk_names172[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D0Ev,_ZThn108_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C18D1Ev,_ZThn108_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D0Ev,_ZThn52_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C18D1Ev,_ZThn52_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D0Ev,_ZThn96_N9S21150C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D0Ev,_ZThn24_N9S21150C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C18D1Ev,_ZThn96_N9S21150C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C18D1Ev,_ZThn24_N9S21150C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D0Ev,_ZThn52_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C14D1Ev,_ZThn52_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D0Ev,_ZThn96_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D0Ev,_ZThn24_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C14D1Ev,_ZThn96_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C14D1Ev,_ZThn24_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21150C17D0Ev,_ZThn120_N9S21150C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21150C17D1Ev,_ZThn120_N9S21150C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C17D0Ev,_ZThn64_N9S21150C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C17D1Ev,_ZThn64_N9S21150C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C17D0Ev,_ZThn108_N9S21150C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C17D0Ev,_ZThn36_N9S21150C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C17D1Ev,_ZThn108_N9S21150C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C17D1Ev,_ZThn36_N9S21150C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C17 = {  "S21150C17", // class name
  bases_S21150C17, 11,
  &(vtc_S21150C17[0]), // expected_vtbl_contents
  &(vtt_S21150C17[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S21150C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21150C17),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C17),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names172,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C13  : virtual S21150C14 , virtual S21150C17 , S4228C37 , virtual S20760C9 {
  virtual  ~S21150C13(); // _ZN9S21150C13D2Ev
  virtual void  v1(); // _ZN9S21150C132v1Ev
  S21150C13(); // tgen
};
//SIG(-1 S21150C13) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m FL} vd v1}


 S21150C13 ::~S21150C13(){ note_dtor("S21150C13", this);}
void  S21150C13 ::v1(){vfunc_called(this, "_ZN9S21150C132v1Ev");}
S21150C13 ::S21150C13(){ note_ctor("S21150C13", this);} // tgen

static void Test_S21150C13()
{
  extern Class_Descriptor cd_S21150C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S21150C13, buf);
    S21150C13 *dp, &lv = *(dp=new (buf) S21150C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S21150C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C13)");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(48,20), "S21150C13");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(48,20), "S21150C13");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(48,20), "S21150C13");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(80,48), "S21150C13");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(136,92), "S21150C13");
    /*is_ambiguous_... S21150C13::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(136,92), "S21150C13");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(96,60), "S21150C13");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(80,48), "S21150C13");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(80,48), "S21150C13");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C14*), ABISELECT(16,4), "S21150C13");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C17*), ABISELECT(160,104), "S21150C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*)(S21150C17*), ABISELECT(208,132), "S21150C13");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(176,116), "S21150C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*)(S21150C17*), ABISELECT(216,136), "S21150C13");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*)(S21150C17*), 0, "S21150C13");
    check_base_class_offset(lv, (S21150C18*)(S21150C17*), ABISELECT(176,116), "S21150C13");
    check_base_class_offset(lv, (S21150C17*), ABISELECT(160,104), "S21150C13");
    check_base_class_offset(lv, (S4228C37*), 0, "S21150C13");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(224,140), "S21150C13");
    test_class_info(&lv, &cd_S21150C13);
    dp->~S21150C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C13(Test_S21150C13, "S21150C13", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN9S21150C13C1Ev();
extern void _ZN9S21150C13D2Ev();
Name_Map name_map_S21150C13[] = {
  NSPAIR(_ZN9S21150C13C1Ev),
  NSPAIR(_ZN9S21150C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
extern Class_Descriptor cd_S21150C17;
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21150C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C5_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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(136,92), //bcp->offset
    38, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21150C16,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(16,4), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21150C14,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21150C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21150C17,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21150C13[];
extern void ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev)();
extern void _ZN9S21150C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev)();
extern void _ZN9S21150C13D0Ev() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C13D1Ev,_ZThn4_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S21150C13D0Ev,_ZThn4_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S21150C13D1Ev,_ZThn20_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S21150C13D0Ev,_ZThn20_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21150C13D1Ev,_ZThn48_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21150C13D0Ev,_ZThn48_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C13D1Ev,_ZThn92_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C13D0Ev,_ZThn92_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn104_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn104_N9S21150C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn140_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn140_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21150C13[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21150C13[];
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C13[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__9S21150C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__9S21150C13[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C13[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__9S21150C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C17__9S21150C13[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
};
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__9S21150C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C189S21150C17__9S21150C13[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17__9S21150C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C17__9S21150C13[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17__9S21150C13[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17__9S21150C13[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A2__9S21150C17__9S21150C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17__9S21150C13[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C13[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S21150C16D1Ev,_ZThn92_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S21150C16D0Ev,_ZThn92_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C13[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C13[] = {
  {&(_ZTV9S21150C13[10]),  10,69},
  {&(_ZTV9S21150C13[19]),  19,69},
  {&(_ZTV9S21150C13[24]),  24,69},
  {&(_ZTV9S21150C13[31]),  31,69},
  {&(_ZTV9S21150C13[36]),  36,69},
  {&(_ZTV9S21150C13[41]),  41,69},
  {&(_ZTV9S21150C13[50]),  50,69},
  {&(_ZTV9S21150C13[58]),  58,69},
  {&(_ZTV9S21150C13[62]),  62,69},
  {&(_ZTV9S21150C13[10]),  10,69},
  {&(_ZTV9S21150C13[67]),  67,69},
  {&(_tg__ZTV9S21150C14__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C13[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C17__9S21150C13[6]),  6,8},
  {&(_tg__ZTV9S21150C189S21150C17__9S21150C13[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C189S21150C17__A1__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C189S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C189S21150C17__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C189S21150C17__9S21150C13[4]),  4,6},
  {&(_tg__ZTV9S21150C18__9S21150C17__9S21150C13[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C17__9S21150C13[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A2__9S21150C17__9S21150C13[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17__9S21150C13[4]),  4,6},
  {&(_tg__ZTV9S21150C16__A1__9S21150C13[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__9S21150C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21150C13[];
extern  VTBL_ENTRY _ZTV9S21150C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C13[];
static VTBL_ENTRY alt_thunk_names173[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D0Ev,_ZThn44_N9S21150C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21150C15D1Ev,_ZThn44_N9S21150C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C16D0Ev,_ZThn92_N9S21150C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D0Ev,_ZThn32_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C16D1Ev,_ZThn92_N9S21150C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C16D1Ev,_ZThn32_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D0Ev,_ZThn88_N9S21150C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C14D1Ev,_ZThn88_N9S21150C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn104_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn104_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C13D0Ev,_ZThn48_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21150C13D1Ev,_ZThn48_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn140_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C13D0Ev,_ZThn92_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C13D0Ev,_ZThn20_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn140_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21150C13D1Ev,_ZThn92_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21150C13D1Ev,_ZThn20_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21150C13D0Ev,_ZThn4_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21150C13D1Ev,_ZThn4_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C13 = {  "S21150C13", // class name
  bases_S21150C13, 15,
  &(vtc_S21150C13[0]), // expected_vtbl_contents
  &(vtt_S21150C13[0]), // expected_vtt_contents
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI9S21150C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21150C13),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21150C13),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names173,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C2  : virtual S21150C3 , S21150C5 , S21150C13 , S20760C5_nt {
  virtual  ~S21150C2(); // _ZN8S21150C2D2Ev
  S21150C2(); // tgen
};
//SIG(-1 S21150C2) C1{ VBC2{ VBC3{ vd m FL} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S21150C2 ::~S21150C2(){ note_dtor("S21150C2", this);}
S21150C2 ::S21150C2(){ note_ctor("S21150C2", this);} // tgen

static void Test_S21150C2()
{
  extern Class_Descriptor cd_S21150C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S21150C2, buf);
    S21150C2 *dp, &lv = *(dp=new (buf) S21150C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S21150C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C2)");
    check_base_class_offset(lv, (S20760C9*)(S21150C3*), ABISELECT(80,60), "S21150C2");
    check_base_class_offset(lv, (S20760C9*)(S21150C13*), ABISELECT(80,60), "S21150C2");
    check_base_class_offset(lv, (S21150C3*), ABISELECT(64,52), "S21150C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C6*), ABISELECT(112,80), "S21150C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(112,80), "S21150C2");
    /*is_ambiguous_... S21150C2::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(112,80), "S21150C2");
    check_base_class_offset(lv, (S21150C6*)(S21150C5*), ABISELECT(96,72), "S21150C2");
    check_base_class_offset(lv, (S4228C27*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S20760C13*)(S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S4228C23*)(S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S4228C37*)(S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S21150C10*)(S21150C5*), 0, "S21150C2");
    check_base_class_offset(lv, (S21150C5*), 0, "S21150C2");
    /*is_ambiguous_... S21150C2::S21150C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(160,108), "S21150C2");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(160,108), "S21150C2");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(160,108), "S21150C2");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(192,136), "S21150C2");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(208,148), "S21150C2");
    /*is_ambiguous_... S21150C2::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(192,136), "S21150C2");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(192,136), "S21150C2");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C14*)(S21150C13*), ABISELECT(128,92), "S21150C2");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C17*), ABISELECT(256,180), "S21150C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*)(S21150C17*), ABISELECT(304,208), "S21150C2");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(272,192), "S21150C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*)(S21150C17*), ABISELECT(312,212), "S21150C2");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*)(S21150C17*), ABISELECT(40,36), "S21150C2");
    check_base_class_offset(lv, (S21150C18*)(S21150C17*), ABISELECT(272,192), "S21150C2");
    check_base_class_offset(lv, (S21150C17*)(S21150C13*), ABISELECT(256,180), "S21150C2");
    check_base_class_offset(lv, (S4228C37*)(S21150C13*), ABISELECT(40,36), "S21150C2");
    check_base_class_offset(lv, (S21150C13*), ABISELECT(40,36), "S21150C2");
    /*is_ambiguous_... S21150C2::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(48,40), "S21150C2");
    test_class_info(&lv, &cd_S21150C2);
    dp->~S21150C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C2(Test_S21150C2, "S21150C2", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S21150C2C1Ev();
extern void _ZN8S21150C2D2Ev();
Name_Map name_map_S21150C2[] = {
  NSPAIR(_ZN8S21150C2C1Ev),
  NSPAIR(_ZN8S21150C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21150C3;
extern VTBL_ENTRY _ZTI8S21150C3[];
extern  VTBL_ENTRY _ZTV8S21150C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C3[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C6;
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C10;
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
extern Class_Descriptor cd_S21150C5;
extern VTBL_ENTRY _ZTI8S21150C5[];
extern  VTBL_ENTRY _ZTV8S21150C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
extern Class_Descriptor cd_S21150C17;
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C13;
extern VTBL_ENTRY _ZTI9S21150C13[];
extern  VTBL_ENTRY _ZTV9S21150C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21150C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21150C3,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(112,80), //bcp->offset
    50, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C6,    ABISELECT(96,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21150C10,    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
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21150C5,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,108), //bcp->offset
    63, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(192,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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(208,148), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(192,136), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(128,92), //bcp->offset
    55, //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
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(256,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
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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_S21150C14,    ABISELECT(272,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,212), //bcp->offset
    97, //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(272,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21150C17,    ABISELECT(256,180), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(40,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
    23, //immediately_derived
  0, 0},
  {&cd_S21150C13,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(48,40), //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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C2[];
extern void _ZN8S21150C2D1Ev();
extern void _ZN8S21150C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev)() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
extern void ABISELECT(_ZThn48_N8S21150C2D1Ev,_ZThn40_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21150C2D0Ev,_ZThn40_N8S21150C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn256_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn256_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev)();
static  VTBL_ENTRY vtc_S21150C2[] = {
  ABISELECT(40,36),
  ABISELECT(256,180),
  ABISELECT(192,136),
  ABISELECT(160,108),
  ABISELECT(128,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&_ZN8S21150C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C2D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  ABISELECT(-40,-36),
  ABISELECT(72,44),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21150C2D1Ev,_ZThn40_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21150C2D0Ev,_ZThn40_N8S21150C2D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
  ABISELECT(-128,-92),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-92),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev),
  ABISELECT(-160,-108),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev),
  ABISELECT(-256,-180),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev),
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev),
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C2[];
extern void _ZN8S21150C5D1Ev();
extern void _ZN8S21150C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C5__8S21150C2[] = {
  0,
  ABISELECT(112,80),
  ABISELECT(96,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&_ZN8S21150C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C5D0Ev,
};
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C108S21150C5__8S21150C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C5__8S21150C2[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C5__8S21150C2[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev)();
extern void _ZN9S21150C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev)();
extern void _ZN9S21150C13D0Ev() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C13__8S21150C2[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,144),
  ABISELECT(152,100),
  ABISELECT(120,72),
  ABISELECT(88,56),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C13__8S21150C2[] = {
  ABISELECT(-88,-56),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C13__8S21150C2[] = {
  ABISELECT(-120,-72),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C13__8S21150C2[] = {
  ABISELECT(-152,-100),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C13__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C13__8S21150C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn216_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn216_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C17__9S21150C13__8S21150C2[] = {
  ABISELECT(-216,-144),
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__9S21150C13__8S21150C2[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-156),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C13__8S21150C2[] = {
  ABISELECT(-272,-176),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21150C13__8S21150C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void _ZN8S21150C3D1Ev();
extern void _ZN8S21150C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C3__8S21150C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&_ZN8S21150C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21150C3__8S21150C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev),
};
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C6__8S21150C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__8S21150C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__8S21150C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__8S21150C2[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__8S21150C2[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__8S21150C2[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C2[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__8S21150C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C2[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C17__8S21150C2[] = {
  ABISELECT(-216,-144),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
};
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C2[] = {
  ABISELECT(232,156),
  ABISELECT(72,44),
  ABISELECT(232,156),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17__8S21150C2[] = {
  ABISELECT(-232,-156),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C17__8S21150C2[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17__8S21150C2[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C2[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17__8S21150C2[] = {
  ABISELECT(216,144),
  ABISELECT(72,44),
  ABISELECT(216,144),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__8S21150C2[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C2[] = {
  {&(_ZTV8S21150C2[14]),  14,101},
  {&(_tg__ZTV8S21150C5__8S21150C2[7]),  7,9},
  {&(_tg__ZTV9S21150C108S21150C5__8S21150C2[4]),  4,6},
  {&(_tg__ZTV8S21150C6__8S21150C5__8S21150C2[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S21150C5__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C13__8S21150C2[10]),  10,13},
  {&(_tg__ZTV9S21150C14__9S21150C13__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C13__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C13__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C13__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C13__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C17__9S21150C13__8S21150C2[7]),  7,9},
  {&(_tg__ZTV9S21150C189S21150C17__9S21150C13__8S21150C2[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C13__8S21150C2[2]),  2,4},
  {&(_tg__ZTV9S21150C13__8S21150C2[10]),  10,13},
  {&(_tg__ZTV8S20760C9__9S21150C13__8S21150C2[3]),  3,5},
  {&(_ZTV8S21150C2[37]),  37,101},
  {&(_ZTV8S21150C2[42]),  42,101},
  {&(_ZTV8S21150C2[48]),  48,101},
  {&(_ZTV8S21150C2[53]),  53,101},
  {&(_ZTV8S21150C2[26]),  26,101},
  {&(_ZTV8S21150C2[61]),  61,101},
  {&(_ZTV8S21150C2[66]),  66,101},
  {&(_ZTV8S21150C2[73]),  73,101},
  {&(_ZTV8S21150C2[78]),  78,101},
  {&(_ZTV8S21150C2[87]),  87,101},
  {&(_ZTV8S21150C2[95]),  95,101},
  {&(_ZTV8S21150C2[99]),  99,101},
  {&(_ZTV8S21150C2[26]),  26,101},
  {&(_tg__ZTV8S21150C3__8S21150C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21150C3__8S21150C2[3]),  3,5},
  {&(_tg__ZTV8S21150C6__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21150C6__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C14__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__8S21150C2[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C17__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S21150C189S21150C17__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C2[4]),  4,6},
  {&(_tg__ZTV9S21150C18__9S21150C17__8S21150C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C17__8S21150C2[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C2[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17__8S21150C2[4]),  4,6},
  {&(_tg__ZTV9S21150C16__A1__8S21150C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21150C2[];
extern  VTBL_ENTRY _ZTV8S21150C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C2[];
static VTBL_ENTRY alt_thunk_names174[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C2 = {  "S21150C2", // class name
  bases_S21150C2, 25,
  &(vtc_S21150C2[0]), // expected_vtbl_contents
  &(vtt_S21150C2[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S21150C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21150C2),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C2),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names174,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21150C1  : virtual S21150C2 , S21150C16 {
  virtual  ~S21150C1(); // _ZN8S21150C1D2Ev
  S21150C1(); // tgen
};
//SIG(1 S21150C1) C1{ VBC2{ VBC3{ VBC4{ vd m FL} vd Fc[2]} BC5{ VBC6{ VBC7{ vd m FL} vd FC8{ m}} VBC9{ m} BC10{ BC11{ vd m Fi[6]} VBC12{ m} VBC8 Fs} vd Fi} BC13{ VBC14{ VBC11 VBC15{ BC7 VBC11 BC16{ VBC7 vd} FC11} FD} VBC17{ BC7 BC18{ BC19{ m Fp} BC14 BC20{ vd m} VBC16 vd} vd} BC8 VBC4 vd v1} BC7 vd} BC16 vd}


 S21150C1 ::~S21150C1(){ note_dtor("S21150C1", this);}
S21150C1 ::S21150C1(){ note_ctor("S21150C1", this);} // tgen

static void Test_S21150C1()
{
  extern Class_Descriptor cd_S21150C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,56)];
    init_test(&cd_S21150C1, buf);
    S21150C1 *dp, &lv = *(dp=new (buf) S21150C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,220), "sizeof(S21150C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21150C1)");
    check_base_class_offset(lv, (S20760C9*)(S21150C3*), ABISELECT(88,64), "S21150C1");
    check_base_class_offset(lv, (S20760C9*)(S21150C13*)(S21150C2*), ABISELECT(88,64), "S21150C1");
    check_base_class_offset(lv, (S21150C3*)(S21150C2*), ABISELECT(72,56), "S21150C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C6*), ABISELECT(120,84), "S21150C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*)(S21150C15*), ABISELECT(120,84), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(120,84), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C16 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C16*), ABISELECT(120,84), "S21150C1");
    check_base_class_offset(lv, (S21150C6*)(S21150C5*)(S21150C2*), ABISELECT(104,76), "S21150C1");
    check_base_class_offset(lv, (S4228C27*)(S21150C5*)(S21150C2*), 0, "S21150C1");
    check_base_class_offset(lv, (S20760C13*)(S21150C10*)(S21150C5*)(S21150C2*), ABISELECT(8,4), "S21150C1");
    check_base_class_offset(lv, (S4228C23*)(S21150C10*)(S21150C5*)(S21150C2*), 0, "S21150C1");
    check_base_class_offset(lv, (S4228C37*)(S21150C10*)(S21150C5*)(S21150C2*), 0, "S21150C1");
    check_base_class_offset(lv, (S21150C10*)(S21150C5*)(S21150C2*), ABISELECT(8,4), "S21150C1");
    check_base_class_offset(lv, (S21150C5*)(S21150C2*), ABISELECT(8,4), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21150C14*), ABISELECT(176,112), "S21150C1");
    check_base_class_offset(lv, (S20760C13*)(S21150C15*), ABISELECT(176,112), "S21150C1");
    check_base_class_offset(lv, (S20760C13*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(176,112), "S21150C1");
    /*is_ambiguous_... S21150C15::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C15*), ABISELECT(208,140), "S21150C1");
    check_base_class_offset(lv, (S21150C16*)(S21150C15*), ABISELECT(224,152), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C15*)(S21150C14*), ABISELECT(208,140), "S21150C1");
    check_base_class_offset(lv, (S21150C15*)(S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(208,140), "S21150C1");
    /*is_ambiguous_... S21150C13::S21150C14 */ AMB_check_base_class_offset(lv, (S21150C14*)(S21150C13*)(S21150C2*), ABISELECT(144,96), "S21150C1");
    /*is_ambiguous_... S21150C17::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C17*), ABISELECT(272,184), "S21150C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21150C18*)(S21150C17*), ABISELECT(320,212), "S21150C1");
    check_base_class_offset(lv, (S21150C14*)(S21150C18*)(S21150C17*), ABISELECT(288,196), "S21150C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21150C18*)(S21150C17*), ABISELECT(328,216), "S21150C1");
    /*is_ambiguous_... S21150C18::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*)(S21150C18*)(S21150C17*), ABISELECT(48,40), "S21150C1");
    check_base_class_offset(lv, (S21150C18*)(S21150C17*), ABISELECT(288,196), "S21150C1");
    check_base_class_offset(lv, (S21150C17*)(S21150C13*)(S21150C2*), ABISELECT(272,184), "S21150C1");
    check_base_class_offset(lv, (S4228C37*)(S21150C13*)(S21150C2*), ABISELECT(48,40), "S21150C1");
    check_base_class_offset(lv, (S21150C13*)(S21150C2*), ABISELECT(48,40), "S21150C1");
    /*is_ambiguous_... S21150C2::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21150C2*), ABISELECT(56,44), "S21150C1");
    check_base_class_offset(lv, (S21150C2*), ABISELECT(8,4), "S21150C1");
    /*is_ambiguous_... S21150C1::S21150C16 */ AMB_check_base_class_offset(lv, (S21150C16*), 0, "S21150C1");
    test_class_info(&lv, &cd_S21150C1);
    dp->~S21150C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21150C1(Test_S21150C1, "S21150C1", ABISELECT(336,220));

#else // __cplusplus

extern void _ZN8S21150C1C1Ev();
extern void _ZN8S21150C1D2Ev();
Name_Map name_map_S21150C1[] = {
  NSPAIR(_ZN8S21150C1C1Ev),
  NSPAIR(_ZN8S21150C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21150C3;
extern VTBL_ENTRY _ZTI8S21150C3[];
extern  VTBL_ENTRY _ZTV8S21150C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C3[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C6;
extern VTBL_ENTRY _ZTI8S21150C6[];
extern  VTBL_ENTRY _ZTV8S21150C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C10;
extern VTBL_ENTRY _ZTI9S21150C10[];
extern  VTBL_ENTRY _ZTV9S21150C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C10[];
extern Class_Descriptor cd_S21150C5;
extern VTBL_ENTRY _ZTI8S21150C5[];
extern  VTBL_ENTRY _ZTV8S21150C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C15;
extern VTBL_ENTRY _ZTI9S21150C15[];
extern  VTBL_ENTRY _ZTV9S21150C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C15[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21150C14;
extern VTBL_ENTRY _ZTI9S21150C14[];
extern  VTBL_ENTRY _ZTV9S21150C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
extern Class_Descriptor cd_S21150C18;
extern VTBL_ENTRY _ZTI9S21150C18[];
extern  VTBL_ENTRY _ZTV9S21150C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C18[];
extern Class_Descriptor cd_S21150C17;
extern VTBL_ENTRY _ZTI9S21150C17[];
extern  VTBL_ENTRY _ZTV9S21150C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21150C13;
extern VTBL_ENTRY _ZTI9S21150C13[];
extern  VTBL_ENTRY _ZTV9S21150C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21150C2;
extern VTBL_ENTRY _ZTI8S21150C2[];
extern  VTBL_ENTRY _ZTV8S21150C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C2[];
extern Class_Descriptor cd_S21150C16;
extern VTBL_ENTRY _ZTI9S21150C16[];
extern  VTBL_ENTRY _ZTV9S21150C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21150C16[];
static Base_Class bases_S21150C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(88,64), //bcp->offset
    58, //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_S21150C3,    ABISELECT(72,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(120,84), //bcp->offset
    69, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21150C6,    ABISELECT(104,76), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21150C10,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21150C5,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(176,112), //bcp->offset
    82, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(208,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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(224,152), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21150C15,    ABISELECT(208,140), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21150C14,    ABISELECT(144,96), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(272,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
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(320,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C14,    ABISELECT(288,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(328,216), //bcp->offset
    116, //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21150C16,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21150C18,    ABISELECT(288,196), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21150C17,    ABISELECT(272,184), //bcp->offset
    99, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21150C13,    ABISELECT(48,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(56,44), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21150C2,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21150C16,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21150C1[];
extern void _ZN8S21150C1D1Ev();
extern void _ZN8S21150C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S21150C1D1Ev,_ZTv0_n60_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21150C1D1Ev,_ZThn4_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21150C1D0Ev,_ZTv0_n60_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21150C1D0Ev,_ZThn4_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21150C1D1Ev,_ZThn40_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21150C1D0Ev,_ZThn40_N8S21150C1D0Ev)() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
extern void ABISELECT(_ZTvn48_n120_N8S21150C1D1Ev,_ZTvn40_n60_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn48_n120_N8S21150C1D0Ev,_ZTvn40_n60_N8S21150C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S21150C1D1Ev,_ZThn56_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S21150C1D0Ev,_ZThn56_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S21150C1D1Ev,_ZThn64_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S21150C1D0Ev,_ZThn64_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S21150C1D1Ev,_ZThn76_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S21150C1D0Ev,_ZThn76_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S21150C1D1Ev,_ZThn84_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S21150C1D0Ev,_ZThn84_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C1D1Ev,_ZTv0_n24_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21150C1D1Ev,_ZThn96_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C1D0Ev,_ZTv0_n24_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21150C1D0Ev,_ZThn96_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S21150C1D1Ev,_ZThn112_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S21150C1D0Ev,_ZThn112_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C1D1Ev,_ZTv0_n20_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21150C1D1Ev,_ZThn140_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C1D0Ev,_ZTv0_n20_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21150C1D0Ev,_ZThn140_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21150C1D1Ev,_ZTvn12_n20_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21150C1D0Ev,_ZTvn12_n20_N8S21150C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21150C1D1Ev,_ZTv0_n28_N8S21150C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21150C1D1Ev,_ZThn184_N8S21150C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21150C1D0Ev,_ZTv0_n28_N8S21150C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21150C1D0Ev,_ZThn184_N8S21150C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21150C1D1Ev,_ZTvn12_n28_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21150C1D0Ev,_ZTvn12_n28_N8S21150C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C1D1Ev,_ZTvn32_n28_N8S21150C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C1D0Ev,_ZTvn32_n28_N8S21150C1D0Ev)();
static  VTBL_ENTRY vtc_S21150C1[] = {
  ABISELECT(48,40),
  ABISELECT(272,184),
  ABISELECT(208,140),
  ABISELECT(176,112),
  ABISELECT(144,96),
  0,
  0,
  0,
  ABISELECT(104,76),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(8,4),
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&_ZN8S21150C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(-8,-4),
  ABISELECT(40,36),
  ABISELECT(264,180),
  ABISELECT(200,136),
  ABISELECT(168,108),
  ABISELECT(136,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21150C1D1Ev,_ZTv0_n60_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21150C1D0Ev,_ZTv0_n60_N8S21150C1D0Ev),
  ABISELECT(40,24),
  0,
  ABISELECT(224,144),
  ABISELECT(160,100),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(-48,-40),
  ABISELECT(72,44),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21150C1D1Ev,_ZTvn40_n60_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21150C1D0Ev,_ZTvn40_n60_N8S21150C1D0Ev),
  ABISELECT(-72,-56),
  ABISELECT(16,8),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev),
  ABISELECT(-104,-76),
  ABISELECT(16,8),
  ABISELECT(-104,-76),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev),
  ABISELECT(-120,-84),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev),
  ABISELECT(-144,-96),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C1D1Ev,_ZTv0_n24_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C1D0Ev,_ZTv0_n24_N8S21150C1D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C1D1Ev,_ZTv0_n20_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C1D0Ev,_ZTv0_n20_N8S21150C1D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C1D1Ev,_ZTvn12_n20_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C1D0Ev,_ZTvn12_n20_N8S21150C1D0Ev),
  ABISELECT(-272,-184),
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C1D1Ev,_ZTv0_n28_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C1D0Ev,_ZTv0_n28_N8S21150C1D0Ev),
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C1D1Ev,_ZTvn12_n28_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C1D0Ev,_ZTvn12_n28_N8S21150C1D0Ev),
  ABISELECT(-328,-216),
  (VTBL_ENTRY)&(_ZTI8S21150C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C1D1Ev,_ZTvn32_n28_N8S21150C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C1D0Ev,_ZTvn32_n28_N8S21150C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21150C1[];
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A__8S21150C1[] = {
  ABISELECT(120,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21150C16D1Ev,_ZThn84_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21150C16D0Ev,_ZThn84_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A__8S21150C1[] = {
  ABISELECT(-120,-84),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void _ZN8S21150C2D1Ev();
extern void _ZN8S21150C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C2__8S21150C1[] = {
  ABISELECT(40,36),
  ABISELECT(264,180),
  ABISELECT(200,136),
  ABISELECT(168,108),
  ABISELECT(136,92),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&_ZN8S21150C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C2D0Ev,
};
extern void _ZN8S21150C5D1Ev();
extern void _ZN8S21150C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,80),
  ABISELECT(96,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&_ZN8S21150C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C5D0Ev,
};
extern void _ZN9S21150C10D1Ev();
extern void _ZN9S21150C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C108S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C10[0]),
  (VTBL_ENTRY)&_ZN9S21150C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C58S21150C2__8S21150C1[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev)();
extern void _ZN9S21150C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev)();
extern void _ZN9S21150C13D0Ev() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,144),
  ABISELECT(160,100),
  ABISELECT(128,72),
  ABISELECT(96,56),
  0,
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C14__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-160,-100),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D1Ev,_ZTvn12_n20_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C13D0Ev,_ZTvn12_n20_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C17__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-240,-156),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D1Ev,_ZTvn12_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21150C13D0Ev,_ZTvn12_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D1Ev,_ZTvn32_n28_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21150C13D0Ev,_ZTvn32_n28_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21150C138S21150C2__8S21150C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21150C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C3__8S21150C2__8S21150C1[] = {
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21150C2__8S21150C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C2__8S21150C1[] = {
  ABISELECT(-96,-72),
  ABISELECT(16,8),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C2__8S21150C1[] = {
  ABISELECT(-112,-80),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev)() __attribute__((weak));
extern void _ZN9S21150C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C13__8S21150C2__8S21150C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,144),
  ABISELECT(160,100),
  ABISELECT(128,72),
  ABISELECT(96,56),
  ABISELECT(-40,-36),
  ABISELECT(72,44),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21150C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C14__8S21150C2__8S21150C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S21150C2__8S21150C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__8S21150C2__8S21150C1[] = {
  ABISELECT(-200,-136),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__8S21150C2__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-148),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D1Ev,_ZTvn12_n20_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21150C2D0Ev,_ZTvn12_n20_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C17__8S21150C2__8S21150C1[] = {
  ABISELECT(-264,-180),
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__8S21150C2__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-280,-192),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D1Ev,_ZTvn12_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21150C2D0Ev,_ZTvn12_n28_N8S21150C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21150C189S21150C17__8S21150C2__8S21150C1[] = {
  ABISELECT(-320,-212),
  (VTBL_ENTRY)&(_ZTI8S21150C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D1Ev,_ZTvn32_n28_N8S21150C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21150C2D0Ev,_ZTvn32_n28_N8S21150C2D0Ev),
};
extern void _ZN8S21150C3D1Ev();
extern void _ZN8S21150C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C3__8S21150C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&_ZN8S21150C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21150C3__8S21150C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev),
};
extern void _ZN8S21150C6D1Ev();
extern void _ZN8S21150C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21150C6__8S21150C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&_ZN8S21150C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21150C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21150C6__8S21150C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21150C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev),
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C14__8S21150C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C14__8S21150C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C14__8S21150C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void _ZN9S21150C15D1Ev();
extern void _ZN9S21150C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C15__8S21150C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&_ZN9S21150C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C15D0Ev,
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__8S21150C1[] = {
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C1[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C15__8S21150C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__9S21150C15__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D1Ev,_ZThn12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C15D0Ev,_ZThn12_N9S21150C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C1[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S21150C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D1Ev,_ZTv0_n12_N9S21150C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C15D0Ev,_ZTv0_n12_N9S21150C15D0Ev),
};
extern void _ZN9S21150C17D1Ev();
extern void _ZN9S21150C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C17__8S21150C1[] = {
  ABISELECT(-224,-144),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&_ZN9S21150C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C17D0Ev,
};
extern void _ZN9S21150C18D1Ev();
extern void _ZN9S21150C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&_ZN9S21150C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C18D0Ev,
};
extern void _ZN9S21150C14D1Ev();
extern void _ZN9S21150C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&_ZN9S21150C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D1Ev,_ZTvn12_n20_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C14D0Ev,_ZTvn12_n20_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21150C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D1Ev,_ZTv0_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C18D0Ev,_ZTv0_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D1Ev,_ZTvn12_n20_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C18D0Ev,_ZTvn12_n20_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D1Ev,_ZTv0_n12_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C18D0Ev,_ZTv0_n12_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C1[] = {
  ABISELECT(240,156),
  ABISELECT(72,44),
  ABISELECT(240,156),
  (VTBL_ENTRY)&(_ZTI9S21150C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D1Ev,_ZTv0_n16_N9S21150C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C18D0Ev,_ZTv0_n16_N9S21150C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C18__9S21150C17__8S21150C1[] = {
  ABISELECT(-240,-156),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D1Ev,_ZThn12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21150C17D0Ev,_ZThn12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21150C17__8S21150C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C15__9S21150C17__8S21150C1[] = {
  ABISELECT(64,44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D1Ev,_ZTv0_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21150C17D0Ev,_ZTv0_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D1Ev,_ZTvn12_n20_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21150C17D0Ev,_ZTvn12_n20_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C1[] = {
  ABISELECT(152,100),
  ABISELECT(152,100),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D1Ev,_ZTv0_n12_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C17D0Ev,_ZTv0_n12_N9S21150C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__9S21150C17__8S21150C1[] = {
  ABISELECT(224,144),
  ABISELECT(72,44),
  ABISELECT(224,144),
  (VTBL_ENTRY)&(_ZTI9S21150C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D1Ev,_ZTv0_n16_N9S21150C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21150C17D0Ev,_ZTv0_n16_N9S21150C17D0Ev),
};
extern void _ZN9S21150C16D1Ev();
extern void _ZN9S21150C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21150C16__A1__8S21150C1[] = {
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&_ZN9S21150C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21150C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S21150C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev),
};
static  VTT_ENTRY vtt_S21150C1[] = {
  {&(_ZTV8S21150C1[15]),  15,120},
  {&(_tg__ZTV9S21150C16__A__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A__8S21150C1[3]),  3,5},
  {&(_ZTV8S21150C1[33]),  33,120},
  {&(_ZTV8S21150C1[56]),  56,120},
  {&(_ZTV8S21150C1[61]),  61,120},
  {&(_ZTV8S21150C1[67]),  67,120},
  {&(_ZTV8S21150C1[72]),  72,120},
  {&(_ZTV8S21150C1[45]),  45,120},
  {&(_ZTV8S21150C1[80]),  80,120},
  {&(_ZTV8S21150C1[85]),  85,120},
  {&(_ZTV8S21150C1[92]),  92,120},
  {&(_ZTV8S21150C1[97]),  97,120},
  {&(_ZTV8S21150C1[106]),  106,120},
  {&(_ZTV8S21150C1[114]),  114,120},
  {&(_ZTV8S21150C1[118]),  118,120},
  {&(_ZTV8S21150C1[45]),  45,120},
  {&(_ZTV8S21150C1[50]),  50,120},
  {&(_tg__ZTV8S21150C2__8S21150C1[14]),  14,16},
  {&(_tg__ZTV8S21150C58S21150C2__8S21150C1[7]),  7,9},
  {&(_tg__ZTV9S21150C108S21150C58S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV8S21150C6__8S21150C58S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S21150C58S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C138S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV9S21150C14__9S21150C138S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C138S21150C2__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C17__9S21150C138S21150C2__8S21150C1[7]),  7,9},
  {&(_tg__ZTV9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21150C189S21150C17__9S21150C138S21150C2__8S21150C1[2]),  2,4},
  {&(_tg__ZTV9S21150C138S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV8S20760C9__9S21150C138S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S21150C3__8S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S21150C6__8S21150C2__8S21150C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C13__8S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV9S21150C14__8S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__8S21150C2__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__8S21150C2__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C17__8S21150C2__8S21150C1[7]),  7,9},
  {&(_tg__ZTV9S21150C189S21150C17__8S21150C2__8S21150C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21150C189S21150C17__8S21150C2__8S21150C1[2]),  2,4},
  {&(_tg__ZTV9S21150C13__8S21150C2__8S21150C1[10]),  10,13},
  {&(_tg__ZTV8S21150C3__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21150C3__8S21150C1[3]),  3,5},
  {&(_tg__ZTV8S21150C6__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21150C6__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C14__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C14__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C14__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C14__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C14__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__8S21150C1[4]),  4,6},
  {&(_tg__ZTV9S21150C169S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C169S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C16__9S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C15__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C17__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S21150C189S21150C17__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S21150C149S21150C189S21150C17__A1__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21150C149S21150C189S21150C17__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C149S21150C189S21150C17__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C149S21150C189S21150C17__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21150C189S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C189S21150C17__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C189S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21150C189S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C189S21150C17__8S21150C1[4]),  4,6},
  {&(_tg__ZTV9S21150C18__9S21150C17__8S21150C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C15__9S21150C17__8S21150C1[5]),  5,7},
  {&(_tg__ZTV9S21150C169S21150C15__9S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A2__9S21150C17__8S21150C1[3]),  3,5},
  {&(_tg__ZTV9S21150C16__A1__9S21150C17__8S21150C1[4]),  4,6},
  {&(_tg__ZTV9S21150C16__A1__8S21150C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__9S21150C16__A1__8S21150C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21150C1[];
extern  VTBL_ENTRY _ZTV8S21150C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21150C1[];
static VTBL_ENTRY alt_thunk_names175[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D0Ev,_ZTv0_n20_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D0Ev,_ZThn44_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C14D1Ev,_ZTv0_n20_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21150C14D1Ev,_ZThn44_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D0Ev,_ZTv0_n12_N9S21150C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D0Ev,_ZThn16_N9S21150C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C14D1Ev,_ZTv0_n12_N9S21150C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21150C14D1Ev,_ZThn16_N9S21150C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D0Ev,_ZTv0_n12_N8S21150C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D0Ev,_ZThn8_N8S21150C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C6D1Ev,_ZTv0_n12_N8S21150C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C6D1Ev,_ZThn8_N8S21150C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D0Ev,_ZTv0_n12_N8S21150C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D0Ev,_ZThn8_N8S21150C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C3D1Ev,_ZTv0_n12_N8S21150C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21150C3D1Ev,_ZThn8_N8S21150C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D0Ev,_ZTv0_n28_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21150C2D0Ev,_ZThn180_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C2D1Ev,_ZTv0_n28_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21150C2D1Ev,_ZThn180_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D0Ev,_ZTv0_n20_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21150C2D0Ev,_ZThn136_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C2D1Ev,_ZTv0_n20_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21150C2D1Ev,_ZThn136_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D0Ev,_ZTv0_n24_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21150C2D0Ev,_ZThn92_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C2D1Ev,_ZTv0_n24_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21150C2D1Ev,_ZThn92_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D0Ev,_ZTv0_n12_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21150C2D0Ev,_ZThn108_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D0Ev,_ZThn80_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D0Ev,_ZThn60_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C2D1Ev,_ZTv0_n12_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21150C2D1Ev,_ZThn108_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C2D1Ev,_ZThn80_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21150C2D1Ev,_ZThn60_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D0Ev,_ZTv0_n16_N8S21150C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D0Ev,_ZThn36_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D0Ev,_ZThn72_N8S21150C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D0Ev,_ZThn52_N8S21150C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C2D1Ev,_ZTv0_n16_N8S21150C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21150C2D1Ev,_ZThn36_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C2D1Ev,_ZThn72_N8S21150C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21150C2D1Ev,_ZThn52_N8S21150C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D0Ev,_ZTv0_n28_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D0Ev,_ZThn144_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21150C13D1Ev,_ZTv0_n28_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21150C13D1Ev,_ZThn144_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D0Ev,_ZTv0_n20_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D0Ev,_ZThn100_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21150C13D1Ev,_ZTv0_n20_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21150C13D1Ev,_ZThn100_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D0Ev,_ZTv0_n12_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D0Ev,_ZThn24_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D0Ev,_ZThn44_N9S21150C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21150C13D0Ev,_ZThn72_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C13D1Ev,_ZTv0_n12_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21150C13D1Ev,_ZThn24_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C13D1Ev,_ZThn44_N9S21150C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21150C13D1Ev,_ZThn72_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D0Ev,_ZTv0_n24_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C13D0Ev,_ZThn56_N9S21150C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21150C13D1Ev,_ZTv0_n24_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21150C13D1Ev,_ZThn56_N9S21150C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D0Ev,_ZTv0_n16_N9S21150C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21150C13D1Ev,_ZTv0_n16_N9S21150C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21150C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D0Ev,_ZTv0_n12_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D0Ev,_ZThn80_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C5D1Ev,_ZTv0_n12_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21150C5D1Ev,_ZThn80_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D0Ev,_ZTv0_n16_N8S21150C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D0Ev,_ZThn72_N8S21150C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C5D1Ev,_ZTv0_n16_N8S21150C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21150C5D1Ev,_ZThn72_N8S21150C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D0Ev,_ZTv0_n12_N9S21150C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D0Ev,_ZThn44_N9S21150C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C16D0Ev,_ZThn84_N9S21150C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21150C16D1Ev,_ZTv0_n12_N9S21150C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21150C16D1Ev,_ZThn44_N9S21150C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21150C16D1Ev,_ZThn84_N9S21150C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C1D0Ev,_ZTv0_n28_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21150C1D0Ev,_ZThn184_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21150C1D1Ev,_ZTv0_n28_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21150C1D1Ev,_ZThn184_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C1D0Ev,_ZTv0_n20_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21150C1D0Ev,_ZThn140_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21150C1D1Ev,_ZTv0_n20_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21150C1D1Ev,_ZThn140_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C1D0Ev,_ZTv0_n24_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21150C1D0Ev,_ZThn96_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21150C1D1Ev,_ZTv0_n24_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21150C1D1Ev,_ZThn96_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C1D0Ev,_ZTv0_n12_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21150C1D0Ev,_ZThn112_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21150C1D0Ev,_ZThn84_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21150C1D0Ev,_ZThn64_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21150C1D1Ev,_ZTv0_n12_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21150C1D1Ev,_ZThn112_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21150C1D1Ev,_ZThn84_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21150C1D1Ev,_ZThn64_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C1D0Ev,_ZTv0_n16_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21150C1D0Ev,_ZThn76_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21150C1D0Ev,_ZThn56_N8S21150C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21150C1D0Ev,_ZThn40_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21150C1D1Ev,_ZTv0_n16_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21150C1D1Ev,_ZThn76_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21150C1D1Ev,_ZThn56_N8S21150C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21150C1D1Ev,_ZThn40_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21150C1D0Ev,_ZTv0_n60_N8S21150C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21150C1D0Ev,_ZThn4_N8S21150C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21150C1D1Ev,_ZTv0_n60_N8S21150C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21150C1D1Ev,_ZThn4_N8S21150C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21150C1 = {  "S21150C1", // class name
  bases_S21150C1, 27,
  &(vtc_S21150C1[0]), // expected_vtbl_contents
  &(vtt_S21150C1[0]), // expected_vtt_contents
  ABISELECT(336,220), // object size
  NSPAIRA(_ZTI8S21150C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21150C1),120, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21150C1),82, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names175,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C3  : virtual S20759C5_nt {
  char s21149c3f0[2];
  virtual  ~S21149C3(); // _ZN8S21149C3D2Ev
  S21149C3(); // tgen
};
//SIG(-1 S21149C3) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S21149C3 ::~S21149C3(){ note_dtor("S21149C3", this);}
S21149C3 ::S21149C3(){ note_ctor("S21149C3", this);} // tgen

static void Test_S21149C3()
{
  extern Class_Descriptor cd_S21149C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21149C3, buf);
    S21149C3 *dp, &lv = *(dp=new (buf) S21149C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21149C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C3)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S21149C3");
    check_field_offset(lv, s21149c3f0, ABISELECT(8,4), "S21149C3.s21149c3f0");
    test_class_info(&lv, &cd_S21149C3);
    dp->~S21149C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C3(Test_S21149C3, "S21149C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21149C3C1Ev();
extern void _ZN8S21149C3D2Ev();
Name_Map name_map_S21149C3[] = {
  NSPAIR(_ZN8S21149C3C1Ev),
  NSPAIR(_ZN8S21149C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21149C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //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 _ZTI8S21149C3[];
extern void _ZN8S21149C3D1Ev();
extern void _ZN8S21149C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C3[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&_ZN8S21149C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C3D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C3[];
static  VTT_ENTRY vtt_S21149C3[] = {
  {&(_ZTV8S21149C3[3]),  3,10},
  {&(_ZTV8S21149C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21149C3[];
extern  VTBL_ENTRY _ZTV8S21149C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C3[];
static VTBL_ENTRY alt_thunk_names176[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C3 = {  "S21149C3", // class name
  bases_S21149C3, 1,
  &(vtc_S21149C3[0]), // expected_vtbl_contents
  &(vtt_S21149C3[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21149C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21149C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names176,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C6  : virtual S20760C9 {
  ::S4228C37 s21149c6f0;
  virtual  ~S21149C6(); // _ZN8S21149C6D2Ev
  S21149C6(); // tgen
};
//SIG(-1 S21149C6) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S21149C6 ::~S21149C6(){ note_dtor("S21149C6", this);}
S21149C6 ::S21149C6(){ note_ctor("S21149C6", this);} // tgen

static void Test_S21149C6()
{
  extern Class_Descriptor cd_S21149C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21149C6, buf);
    S21149C6 *dp, &lv = *(dp=new (buf) S21149C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21149C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S21149C6");
    check_field_offset(lv, s21149c6f0, ABISELECT(8,4), "S21149C6.s21149c6f0");
    test_class_info(&lv, &cd_S21149C6);
    dp->~S21149C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C6(Test_S21149C6, "S21149C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21149C6C1Ev();
extern void _ZN8S21149C6D2Ev();
Name_Map name_map_S21149C6[] = {
  NSPAIR(_ZN8S21149C6C1Ev),
  NSPAIR(_ZN8S21149C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21149C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI8S21149C6[];
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C6[];
static  VTT_ENTRY vtt_S21149C6[] = {
  {&(_ZTV8S21149C6[3]),  3,10},
  {&(_ZTV8S21149C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
static VTBL_ENTRY alt_thunk_names177[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C6 = {  "S21149C6", // class name
  bases_S21149C6, 1,
  &(vtc_S21149C6[0]), // expected_vtbl_contents
  &(vtt_S21149C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21149C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21149C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names177,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C10  : S20760C13 , virtual S4228C23 , virtual S4228C37 {
  short s21149c10f0;
  ~S21149C10(); // tgen
  S21149C10(); // tgen
};
//SIG(-1 S21149C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21149C10 ::~S21149C10(){ note_dtor("S21149C10", this);} // tgen
S21149C10 ::S21149C10(){ note_ctor("S21149C10", this);} // tgen

static void Test_S21149C10()
{
  extern Class_Descriptor cd_S21149C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21149C10, buf);
    S21149C10 *dp, &lv = *(dp=new (buf) S21149C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21149C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21149C10");
    check_base_class_offset(lv, (S4228C23*), 0, "S21149C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21149C10");
    check_field_offset(lv, s21149c10f0, ABISELECT(32,28), "S21149C10.s21149c10f0");
    test_class_info(&lv, &cd_S21149C10);
    dp->~S21149C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C10(Test_S21149C10, "S21149C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21149C10C1Ev();
extern void _ZN9S21149C10D1Ev();
Name_Map name_map_S21149C10[] = {
  NSPAIR(_ZN9S21149C10C1Ev),
  NSPAIR(_ZN9S21149C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S21149C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21149C10[];
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY vtc_S21149C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21149C10[];
static  VTT_ENTRY vtt_S21149C10[] = {
  {&(_ZTV9S21149C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
Class_Descriptor cd_S21149C10 = {  "S21149C10", // class name
  bases_S21149C10, 3,
  &(vtc_S21149C10[0]), // expected_vtbl_contents
  &(vtt_S21149C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21149C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21149C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C10),1, //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  S21149C5  : virtual S21149C6 , virtual S4228C27 , S21149C10 {
  int s21149c5f0;
  virtual  ~S21149C5(); // _ZN8S21149C5D2Ev
  S21149C5(); // tgen
};
//SIG(-1 S21149C5) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S21149C5 ::~S21149C5(){ note_dtor("S21149C5", this);}
S21149C5 ::S21149C5(){ note_ctor("S21149C5", this);} // tgen

static void Test_S21149C5()
{
  extern Class_Descriptor cd_S21149C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S21149C5, buf);
    S21149C5 *dp, &lv = *(dp=new (buf) S21149C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S21149C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C5)");
    check_base_class_offset(lv, (S20760C9*)(S21149C6*), ABISELECT(56,44), "S21149C5");
    check_base_class_offset(lv, (S21149C6*), ABISELECT(40,36), "S21149C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S21149C5");
    check_base_class_offset(lv, (S20760C13*)(S21149C10*), 0, "S21149C5");
    check_base_class_offset(lv, (S4228C23*)(S21149C10*), 0, "S21149C5");
    check_base_class_offset(lv, (S4228C37*)(S21149C10*), 0, "S21149C5");
    check_base_class_offset(lv, (S21149C10*), 0, "S21149C5");
    check_field_offset(lv, s21149c5f0, ABISELECT(36,32), "S21149C5.s21149c5f0");
    test_class_info(&lv, &cd_S21149C5);
    dp->~S21149C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C5(Test_S21149C5, "S21149C5", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN8S21149C5C1Ev();
extern void _ZN8S21149C5D2Ev();
Name_Map name_map_S21149C5[] = {
  NSPAIR(_ZN8S21149C5C1Ev),
  NSPAIR(_ZN8S21149C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C6;
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C10;
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
static Base_Class bases_S21149C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //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_S21149C6,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21149C10,    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 _ZTI8S21149C5[];
extern void _ZN8S21149C5D1Ev();
extern void _ZN8S21149C5D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn40_N8S21149C5D1Ev,_ZThn36_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn40_N8S21149C5D0Ev,_ZThn36_N8S21149C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21149C5D1Ev,_ZThn44_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21149C5D0Ev,_ZThn44_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C5[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&_ZN8S21149C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C5D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C5[];
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C10__8S21149C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C5[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C6__8S21149C5[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
static  VTT_ENTRY vtt_S21149C5[] = {
  {&(_ZTV8S21149C5[7]),  7,20},
  {&(_tg__ZTV9S21149C10__8S21149C5[4]),  4,6},
  {&(_ZTV8S21149C5[13]),  13,20},
  {&(_ZTV8S21149C5[18]),  18,20},
  {&(_tg__ZTV8S21149C6__8S21149C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21149C6__8S21149C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21149C5[];
extern  VTBL_ENTRY _ZTV8S21149C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C5[];
static VTBL_ENTRY alt_thunk_names178[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21149C5D0Ev,_ZThn44_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21149C5D1Ev,_ZThn44_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C5D0Ev,_ZThn36_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C5D1Ev,_ZThn36_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C5 = {  "S21149C5", // class name
  bases_S21149C5, 7,
  &(vtc_S21149C5[0]), // expected_vtbl_contents
  &(vtt_S21149C5[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI8S21149C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21149C5),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C5),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names178,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C16  : virtual S20760C9 {
  virtual  ~S21149C16(); // _ZN9S21149C16D2Ev
  S21149C16(); // tgen
};
//SIG(-1 S21149C16) C1{ VBC2{ vd m FL} vd}


 S21149C16 ::~S21149C16(){ note_dtor("S21149C16", this);}
S21149C16 ::S21149C16(){ note_ctor("S21149C16", this);} // tgen

static void Test_S21149C16()
{
  extern Class_Descriptor cd_S21149C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21149C16, buf);
    S21149C16 *dp, &lv = *(dp=new (buf) S21149C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21149C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C16)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21149C16");
    test_class_info(&lv, &cd_S21149C16);
    dp->~S21149C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C16(Test_S21149C16, "S21149C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S21149C16C1Ev();
extern void _ZN9S21149C16D2Ev();
Name_Map name_map_S21149C16[] = {
  NSPAIR(_ZN9S21149C16C1Ev),
  NSPAIR(_ZN9S21149C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21149C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C16[];
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn8_N9S21149C16D1Ev,_ZThn4_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn8_N9S21149C16D0Ev,_ZThn4_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C16[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C16[];
static  VTT_ENTRY vtt_S21149C16[] = {
  {&(_ZTV9S21149C16[3]),  3,10},
  {&(_ZTV9S21149C16[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static VTBL_ENTRY alt_thunk_names179[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21149C16D0Ev,_ZThn4_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21149C16D1Ev,_ZThn4_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C16 = {  "S21149C16", // class name
  bases_S21149C16, 1,
  &(vtc_S21149C16[0]), // expected_vtbl_contents
  &(vtt_S21149C16[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S21149C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21149C16),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C16),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names179,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C15  : S20760C9 , virtual S20760C13 , S21149C16 {
  ::S20760C13 s21149c15f0;
  ~S21149C15(); // tgen
  S21149C15(); // tgen
};
//SIG(-1 S21149C15) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21149C15 ::~S21149C15(){ note_dtor("S21149C15", this);} // tgen
S21149C15 ::S21149C15(){ note_ctor("S21149C15", this);} // tgen

static void Test_S21149C15()
{
  extern Class_Descriptor cd_S21149C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21149C15, buf);
    S21149C15 *dp, &lv = *(dp=new (buf) S21149C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21149C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21149C15)");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21149C15");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21149C15");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(88,72), "S21149C15");
    check_base_class_offset(lv, (S21149C16*), ABISELECT(16,12), "S21149C15");
    check_field_offset(lv, s21149c15f0, ABISELECT(24,16), "S21149C15.s21149c15f0");
    test_class_info(&lv, &cd_S21149C15);
    dp->~S21149C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C15(Test_S21149C15, "S21149C15", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN9S21149C15C1Ev();
extern void _ZN9S21149C15D1Ev();
Name_Map name_map_S21149C15[] = {
  NSPAIR(_ZN9S21149C15C1Ev),
  NSPAIR(_ZN9S21149C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static Base_Class bases_S21149C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C15[];
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn88_N9S21149C15D1Ev,_ZThn72_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn88_N9S21149C15D0Ev,_ZThn72_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C15[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C15[];
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn60_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn60_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__9S21149C15[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C15[] = {
  {&(_ZTV9S21149C15[4]),  4,21},
  {&(_tg__ZTV9S21149C16__9S21149C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__9S21149C15[3]),  3,5},
  {&(_ZTV9S21149C15[14]),  14,21},
  {&(_ZTV9S21149C15[9]),  9,21},
  {&(_ZTV9S21149C15[19]),  19,21},
};
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
static VTBL_ENTRY alt_thunk_names180[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn60_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn60_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C15D0Ev,_ZThn72_N9S21149C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C15D1Ev,_ZThn72_N9S21149C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C15 = {  "S21149C15", // class name
  bases_S21149C15, 4,
  &(vtc_S21149C15[0]), // expected_vtbl_contents
  &(vtt_S21149C15[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI9S21149C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21149C15),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C15),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names180,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C14  : virtual S20760C13 , virtual S21149C15 {
  long double s21149c14f0;
  ~S21149C14(); // tgen
  S21149C14(); // tgen
};
//SIG(-1 S21149C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21149C14 ::~S21149C14(){ note_dtor("S21149C14", this);} // tgen
S21149C14 ::S21149C14(){ note_ctor("S21149C14", this);} // tgen

static void Test_S21149C14()
{
  extern Class_Descriptor cd_S21149C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21149C14, buf);
    S21149C14 *dp, &lv = *(dp=new (buf) S21149C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21149C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21149C14");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(32,16), "S21149C14");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(64,44), "S21149C14");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(120,88), "S21149C14");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(80,56), "S21149C14");
    check_base_class_offset(lv, (S21149C15*), ABISELECT(64,44), "S21149C14");
    check_field_offset(lv, s21149c14f0, ABISELECT(16,4), "S21149C14.s21149c14f0");
    test_class_info(&lv, &cd_S21149C14);
    dp->~S21149C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C14(Test_S21149C14, "S21149C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21149C14C1Ev();
extern void _ZN9S21149C14D1Ev();
Name_Map name_map_S21149C14[] = {
  NSPAIR(_ZN9S21149C14C1Ev),
  NSPAIR(_ZN9S21149C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
static Base_Class bases_S21149C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C14[];
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C14[];
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
static  VTT_ENTRY vtt_S21149C14[] = {
  {&(_ZTV9S21149C14[5]),  5,29},
  {&(_ZTV9S21149C14[10]),  10,29},
  {&(_ZTV9S21149C14[17]),  17,29},
  {&(_ZTV9S21149C14[22]),  22,29},
  {&(_ZTV9S21149C14[27]),  27,29},
  {&(_tg__ZTV9S21149C15__9S21149C14[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
static VTBL_ENTRY alt_thunk_names181[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C14 = {  "S21149C14", // class name
  bases_S21149C14, 5,
  &(vtc_S21149C14[0]), // expected_vtbl_contents
  &(vtt_S21149C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21149C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21149C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names181,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C18  : S4161C4_nt , S21149C14 , S20760C22_nt , virtual S21149C16 {
  virtual  ~S21149C18(); // _ZN9S21149C18D2Ev
  S21149C18(); // tgen
};
//SIG(-1 S21149C18) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21149C18 ::~S21149C18(){ note_dtor("S21149C18", this);}
S21149C18 ::S21149C18(){ note_ctor("S21149C18", this);} // tgen

static void Test_S21149C18()
{
  extern Class_Descriptor cd_S21149C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21149C18, buf);
    S21149C18 *dp, &lv = *(dp=new (buf) S21149C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21149C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C18)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21149C18");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(48,24), "S21149C18");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(48,24), "S21149C18");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(80,52), "S21149C18");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(136,96), "S21149C18");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(136,96), "S21149C18");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(96,64), "S21149C18");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(80,52), "S21149C18");
    check_base_class_offset(lv, (S21149C14*), 0, "S21149C18");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21149C18");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*), ABISELECT(152,108), "S21149C18");
    test_class_info(&lv, &cd_S21149C18);
    dp->~S21149C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C18(Test_S21149C18, "S21149C18", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S21149C18C1Ev();
extern void _ZN9S21149C18D2Ev();
Name_Map name_map_S21149C18[] = {
  NSPAIR(_ZN9S21149C18C1Ev),
  NSPAIR(_ZN9S21149C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static Base_Class bases_S21149C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21149C14,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21149C16,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C18[];
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
extern void ABISELECT(_ZThn40_N9S21149C18D1Ev,_ZThn20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C18D0Ev,_ZThn20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C18[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21149C18D1Ev,_ZThn20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21149C18D0Ev,_ZThn20_N9S21149C18D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C18[];
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C18[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__9S21149C18[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__9S21149C18[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C18[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__9S21149C18[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C18[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C18[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C18[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C18[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C18[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C18[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C18[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__9S21149C18[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C18[] = {
  {&(_ZTV9S21149C18[6]),  6,40},
  {&(_tg__ZTV9S21149C14__9S21149C18[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__9S21149C18[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__9S21149C18[3]),  3,5},
  {&(_ZTV9S21149C18[15]),  15,40},
  {&(_ZTV9S21149C18[22]),  22,40},
  {&(_ZTV9S21149C18[27]),  27,40},
  {&(_ZTV9S21149C18[32]),  32,40},
  {&(_ZTV9S21149C18[38]),  38,40},
  {&(_tg__ZTV9S21149C15__9S21149C18[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C18[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C18[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__9S21149C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
static VTBL_ENTRY alt_thunk_names182[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C18 = {  "S21149C18", // class name
  bases_S21149C18, 9,
  &(vtc_S21149C18[0]), // expected_vtbl_contents
  &(vtt_S21149C18[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S21149C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21149C18),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C18),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names182,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C17  : S20760C9 , S21149C18 {
  virtual  ~S21149C17(); // _ZN9S21149C17D2Ev
  S21149C17(); // tgen
};
//SIG(-1 S21149C17) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21149C17 ::~S21149C17(){ note_dtor("S21149C17", this);}
S21149C17 ::S21149C17(){ note_ctor("S21149C17", this);} // tgen

static void Test_S21149C17()
{
  extern Class_Descriptor cd_S21149C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21149C17, buf);
    S21149C17 *dp, &lv = *(dp=new (buf) S21149C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21149C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C17)");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21149C17");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*), ABISELECT(48,28), "S21149C17");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*), ABISELECT(64,36), "S21149C17");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(64,36), "S21149C17");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(96,64), "S21149C17");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(152,108), "S21149C17");
    /*is_ambiguous_... S21149C17::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(152,108), "S21149C17");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(112,76), "S21149C17");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*), ABISELECT(96,64), "S21149C17");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*), ABISELECT(16,12), "S21149C17");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*), ABISELECT(56,32), "S21149C17");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*), ABISELECT(168,120), "S21149C17");
    check_base_class_offset(lv, (S21149C18*), ABISELECT(16,12), "S21149C17");
    test_class_info(&lv, &cd_S21149C17);
    dp->~S21149C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C17(Test_S21149C17, "S21149C17", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN9S21149C17C1Ev();
extern void _ZN9S21149C17D2Ev();
Name_Map name_map_S21149C17[] = {
  NSPAIR(_ZN9S21149C17C1Ev),
  NSPAIR(_ZN9S21149C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
static Base_Class bases_S21149C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21149C14,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI9S21149C17[];
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C17D1Ev,_ZThn32_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C17D0Ev,_ZThn32_N9S21149C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C17D1Ev,_ZThn36_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C17D0Ev,_ZThn36_N9S21149C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn96_N9S21149C17D1Ev,_ZThn64_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn96_N9S21149C17D0Ev,_ZThn64_N9S21149C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C17D1Ev,_ZThn108_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C17D0Ev,_ZThn108_N9S21149C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn168_N9S21149C17D1Ev,_ZThn120_N9S21149C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
extern void ABISELECT(_ZThn168_N9S21149C17D0Ev,_ZThn120_N9S21149C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C17[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21149C17D1Ev,_ZThn32_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21149C17D0Ev,_ZThn32_N9S21149C17D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C17[];
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C18__9S21149C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C18__9S21149C17[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C18__9S21149C17[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C18__9S21149C17[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C18__9S21149C17[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C18__9S21149C17[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C17[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C17[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C17[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C17[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__9S21149C17[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C17[] = {
  {&(_ZTV9S21149C17[6]),  6,48},
  {&(_tg__ZTV9S21149C18__9S21149C17[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C18__9S21149C17[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C18__9S21149C17[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C18__9S21149C17[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C18__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C18__9S21149C17[4]),  4,6},
  {&(_ZTV9S21149C17[14]),  14,48},
  {&(_ZTV9S21149C17[23]),  23,48},
  {&(_ZTV9S21149C17[30]),  30,48},
  {&(_ZTV9S21149C17[35]),  35,48},
  {&(_ZTV9S21149C17[40]),  40,48},
  {&(_ZTV9S21149C17[46]),  46,48},
  {&(_tg__ZTV9S21149C15__9S21149C17[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C17[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__9S21149C17[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
static VTBL_ENTRY alt_thunk_names183[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D0Ev,_ZThn108_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C18D1Ev,_ZThn108_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D0Ev,_ZThn52_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C18D1Ev,_ZThn52_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D0Ev,_ZThn96_N9S21149C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D0Ev,_ZThn24_N9S21149C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C18D1Ev,_ZThn96_N9S21149C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C18D1Ev,_ZThn24_N9S21149C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D0Ev,_ZThn52_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C14D1Ev,_ZThn52_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D0Ev,_ZThn96_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D0Ev,_ZThn24_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C14D1Ev,_ZThn96_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C14D1Ev,_ZThn24_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21149C17D0Ev,_ZThn120_N9S21149C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21149C17D1Ev,_ZThn120_N9S21149C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C17D0Ev,_ZThn64_N9S21149C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C17D1Ev,_ZThn64_N9S21149C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C17D0Ev,_ZThn108_N9S21149C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C17D0Ev,_ZThn36_N9S21149C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C17D1Ev,_ZThn108_N9S21149C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C17D1Ev,_ZThn36_N9S21149C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C17 = {  "S21149C17", // class name
  bases_S21149C17, 11,
  &(vtc_S21149C17[0]), // expected_vtbl_contents
  &(vtt_S21149C17[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI9S21149C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21149C17),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C17),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names183,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C13  : virtual S21149C14 , virtual S21149C17 , S4228C37 , virtual S20759C5_nt {
  virtual  ~S21149C13(); // _ZN9S21149C13D2Ev
  virtual void  v1(); // _ZN9S21149C132v1Ev
  S21149C13(); // tgen
};
//SIG(-1 S21149C13) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m Fl} vd v1}


 S21149C13 ::~S21149C13(){ note_dtor("S21149C13", this);}
void  S21149C13 ::v1(){vfunc_called(this, "_ZN9S21149C132v1Ev");}
S21149C13 ::S21149C13(){ note_ctor("S21149C13", this);} // tgen

static void Test_S21149C13()
{
  extern Class_Descriptor cd_S21149C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S21149C13, buf);
    S21149C13 *dp, &lv = *(dp=new (buf) S21149C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S21149C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C13)");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(48,20), "S21149C13");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(48,20), "S21149C13");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(48,20), "S21149C13");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(80,48), "S21149C13");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(136,92), "S21149C13");
    /*is_ambiguous_... S21149C13::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(136,92), "S21149C13");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(96,60), "S21149C13");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(80,48), "S21149C13");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(80,48), "S21149C13");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C14*), ABISELECT(16,4), "S21149C13");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C17*), ABISELECT(160,104), "S21149C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*)(S21149C17*), ABISELECT(208,132), "S21149C13");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(176,116), "S21149C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*)(S21149C17*), ABISELECT(216,136), "S21149C13");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*)(S21149C17*), 0, "S21149C13");
    check_base_class_offset(lv, (S21149C18*)(S21149C17*), ABISELECT(176,116), "S21149C13");
    check_base_class_offset(lv, (S21149C17*), ABISELECT(160,104), "S21149C13");
    check_base_class_offset(lv, (S4228C37*), 0, "S21149C13");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(224,140), "S21149C13");
    test_class_info(&lv, &cd_S21149C13);
    dp->~S21149C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C13(Test_S21149C13, "S21149C13", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN9S21149C13C1Ev();
extern void _ZN9S21149C13D2Ev();
Name_Map name_map_S21149C13[] = {
  NSPAIR(_ZN9S21149C13C1Ev),
  NSPAIR(_ZN9S21149C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
extern Class_Descriptor cd_S21149C17;
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21149C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21149C16,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(16,4), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21149C14,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21149C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21149C17,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21149C13[];
extern void ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev)();
extern void _ZN9S21149C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev)();
extern void _ZN9S21149C13D0Ev() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C13D1Ev,_ZThn4_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn16_N9S21149C13D0Ev,_ZThn4_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn48_N9S21149C13D1Ev,_ZThn20_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn48_N9S21149C13D0Ev,_ZThn20_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21149C13D1Ev,_ZThn48_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21149C13D0Ev,_ZThn48_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C13D1Ev,_ZThn92_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C13D0Ev,_ZThn92_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn104_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn104_N9S21149C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21149C13[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21149C13[];
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C13[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__9S21149C13[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__9S21149C13[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__9S21149C13[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__9S21149C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
extern void ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__9S21149C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C17__9S21149C13[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
};
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__9S21149C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C189S21149C17__9S21149C13[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17__9S21149C13[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C17__9S21149C13[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17__9S21149C13[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17__9S21149C13[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S21149C17__9S21149C13[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17__9S21149C13[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C13[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S21149C16D1Ev,_ZThn92_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S21149C16D0Ev,_ZThn92_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__9S21149C13[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C13[] = {
  {&(_ZTV9S21149C13[10]),  10,69},
  {&(_ZTV9S21149C13[19]),  19,69},
  {&(_ZTV9S21149C13[24]),  24,69},
  {&(_ZTV9S21149C13[31]),  31,69},
  {&(_ZTV9S21149C13[36]),  36,69},
  {&(_ZTV9S21149C13[41]),  41,69},
  {&(_ZTV9S21149C13[50]),  50,69},
  {&(_ZTV9S21149C13[58]),  58,69},
  {&(_ZTV9S21149C13[62]),  62,69},
  {&(_ZTV9S21149C13[10]),  10,69},
  {&(_ZTV9S21149C13[67]),  67,69},
  {&(_tg__ZTV9S21149C14__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C13[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C17__9S21149C13[6]),  6,8},
  {&(_tg__ZTV9S21149C189S21149C17__9S21149C13[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C189S21149C17__A1__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C189S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C189S21149C17__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C189S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C189S21149C17__9S21149C13[4]),  4,6},
  {&(_tg__ZTV9S21149C18__9S21149C17__9S21149C13[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C17__9S21149C13[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S21149C17__9S21149C13[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17__9S21149C13[4]),  4,6},
  {&(_tg__ZTV9S21149C16__A1__9S21149C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__9S21149C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21149C13[];
extern  VTBL_ENTRY _ZTV9S21149C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C13[];
static VTBL_ENTRY alt_thunk_names184[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D0Ev,_ZThn44_N9S21149C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21149C15D1Ev,_ZThn44_N9S21149C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C16D0Ev,_ZThn92_N9S21149C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D0Ev,_ZThn32_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C16D1Ev,_ZThn92_N9S21149C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C16D1Ev,_ZThn32_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D0Ev,_ZThn88_N9S21149C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C14D1Ev,_ZThn88_N9S21149C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn104_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn104_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C13D0Ev,_ZThn48_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21149C13D1Ev,_ZThn48_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C13D0Ev,_ZThn92_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C13D0Ev,_ZThn20_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21149C13D1Ev,_ZThn92_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S21149C13D1Ev,_ZThn20_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21149C13D0Ev,_ZThn4_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21149C13D1Ev,_ZThn4_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C13 = {  "S21149C13", // class name
  bases_S21149C13, 15,
  &(vtc_S21149C13[0]), // expected_vtbl_contents
  &(vtt_S21149C13[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI9S21149C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21149C13),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21149C13),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names184,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C2  : virtual S21149C3 , S21149C5 , S21149C13 , S20760C9 {
  virtual  ~S21149C2(); // _ZN8S21149C2D2Ev
  S21149C2(); // tgen
};
//SIG(-1 S21149C2) C1{ VBC2{ VBC3{ vd m Fl} vd Fc[2]} BC4{ VBC5{ VBC6{ vd m FL} vd FC7{ m}} VBC8{ m} BC9{ BC10{ vd m Fi[6]} VBC11{ m} VBC7 Fs} vd Fi} BC12{ VBC13{ VBC10 VBC14{ BC6 VBC10 BC15{ VBC6 vd} FC10} FD} VBC16{ BC6 BC17{ BC18{ m Fp} BC13 BC19{ vd m} VBC15 vd} vd} BC7 VBC3 vd v1} BC6 vd}


 S21149C2 ::~S21149C2(){ note_dtor("S21149C2", this);}
S21149C2 ::S21149C2(){ note_ctor("S21149C2", this);} // tgen

static void Test_S21149C2()
{
  extern Class_Descriptor cd_S21149C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S21149C2, buf);
    S21149C2 *dp, &lv = *(dp=new (buf) S21149C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S21149C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C2)");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C3*), ABISELECT(80,60), "S21149C2");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C13*), ABISELECT(80,60), "S21149C2");
    check_base_class_offset(lv, (S21149C3*), ABISELECT(64,52), "S21149C2");
    check_base_class_offset(lv, (S20760C9*)(S21149C6*), ABISELECT(112,76), "S21149C2");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(112,76), "S21149C2");
    /*is_ambiguous_... S21149C2::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(112,76), "S21149C2");
    check_base_class_offset(lv, (S21149C6*)(S21149C5*), ABISELECT(96,68), "S21149C2");
    check_base_class_offset(lv, (S4228C27*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S20760C13*)(S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S4228C23*)(S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S4228C37*)(S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S21149C10*)(S21149C5*), 0, "S21149C2");
    check_base_class_offset(lv, (S21149C5*), 0, "S21149C2");
    /*is_ambiguous_... S21149C2::S21149C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(160,104), "S21149C2");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(160,104), "S21149C2");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(160,104), "S21149C2");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(192,132), "S21149C2");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(208,144), "S21149C2");
    /*is_ambiguous_... S21149C2::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(192,132), "S21149C2");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(192,132), "S21149C2");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C14*)(S21149C13*), ABISELECT(128,88), "S21149C2");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C17*), ABISELECT(256,176), "S21149C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*)(S21149C17*), ABISELECT(304,204), "S21149C2");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(272,188), "S21149C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*)(S21149C17*), ABISELECT(312,208), "S21149C2");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*)(S21149C17*), ABISELECT(40,36), "S21149C2");
    check_base_class_offset(lv, (S21149C18*)(S21149C17*), ABISELECT(272,188), "S21149C2");
    check_base_class_offset(lv, (S21149C17*)(S21149C13*), ABISELECT(256,176), "S21149C2");
    check_base_class_offset(lv, (S4228C37*)(S21149C13*), ABISELECT(40,36), "S21149C2");
    check_base_class_offset(lv, (S21149C13*), ABISELECT(40,36), "S21149C2");
    /*is_ambiguous_... S21149C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(48,40), "S21149C2");
    test_class_info(&lv, &cd_S21149C2);
    dp->~S21149C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C2(Test_S21149C2, "S21149C2", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S21149C2C1Ev();
extern void _ZN8S21149C2D2Ev();
Name_Map name_map_S21149C2[] = {
  NSPAIR(_ZN8S21149C2C1Ev),
  NSPAIR(_ZN8S21149C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21149C3;
extern VTBL_ENTRY _ZTI8S21149C3[];
extern  VTBL_ENTRY _ZTV8S21149C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C3[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C6;
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C10;
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
extern Class_Descriptor cd_S21149C5;
extern VTBL_ENTRY _ZTI8S21149C5[];
extern  VTBL_ENTRY _ZTV8S21149C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
extern Class_Descriptor cd_S21149C17;
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C13;
extern VTBL_ENTRY _ZTI9S21149C13[];
extern  VTBL_ENTRY _ZTV9S21149C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21149C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(80,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21149C3,    ABISELECT(64,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(112,76), //bcp->offset
    50, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C6,    ABISELECT(96,68), //bcp->offset
    44, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21149C10,    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
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21149C5,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(160,104), //bcp->offset
    63, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(192,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(208,144), //bcp->offset
    75, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(192,132), //bcp->offset
    68, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(128,88), //bcp->offset
    55, //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
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(256,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
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C14,    ABISELECT(272,188), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(312,208), //bcp->offset
    97, //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(272,188), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21149C17,    ABISELECT(256,176), //bcp->offset
    80, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(40,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
    23, //immediately_derived
  0, 0},
  {&cd_S21149C13,    ABISELECT(40,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(48,40), //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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C2[];
extern void _ZN8S21149C2D1Ev();
extern void _ZN8S21149C2D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev)() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
extern void ABISELECT(_ZThn48_N8S21149C2D1Ev,_ZThn40_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21149C2D0Ev,_ZThn40_N8S21149C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn192_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn192_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn256_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn256_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev)();
static  VTBL_ENTRY vtc_S21149C2[] = {
  ABISELECT(40,36),
  ABISELECT(256,176),
  ABISELECT(192,132),
  ABISELECT(160,104),
  ABISELECT(128,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&_ZN8S21149C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C2D0Ev,
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  ABISELECT(-40,-36),
  ABISELECT(72,40),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21149C2D1Ev,_ZThn40_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21149C2D0Ev,_ZThn40_N8S21149C2D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-128,-88),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev),
  ABISELECT(-256,-176),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev),
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev),
  ABISELECT(-312,-208),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C2[];
extern void _ZN8S21149C5D1Ev();
extern void _ZN8S21149C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C5__8S21149C2[] = {
  0,
  ABISELECT(112,76),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&_ZN8S21149C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C5D0Ev,
};
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C108S21149C5__8S21149C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C5__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C5__8S21149C2[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev)();
extern void _ZN9S21149C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev)();
extern void _ZN9S21149C13D0Ev() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C13__8S21149C2[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(216,140),
  ABISELECT(152,96),
  ABISELECT(120,68),
  ABISELECT(88,52),
  0,
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn88_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn88_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C13__8S21149C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C13__8S21149C2[] = {
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C13__8S21149C2[] = {
  ABISELECT(-152,-96),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C13__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C13__8S21149C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn216_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn216_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C17__9S21149C13__8S21149C2[] = {
  ABISELECT(-216,-140),
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-216,-140),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__9S21149C13__8S21149C2[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-232,-152),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C13__8S21149C2[] = {
  ABISELECT(-272,-172),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21149C13__8S21149C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void _ZN8S21149C3D1Ev();
extern void _ZN8S21149C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C3__8S21149C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&_ZN8S21149C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21149C3__8S21149C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev),
};
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C6__8S21149C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__8S21149C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__8S21149C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__8S21149C2[] = {
  ABISELECT(-64,-44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__8S21149C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__8S21149C2[] = {
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__8S21149C2[] = {
  ABISELECT(-96,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C2[] = {
  ABISELECT(96,68),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__8S21149C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__8S21149C2[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C17__8S21149C2[] = {
  ABISELECT(-216,-140),
  ABISELECT(-144,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
};
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(80,56),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(160,112),
  ABISELECT(160,112),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C2[] = {
  ABISELECT(232,152),
  ABISELECT(72,40),
  ABISELECT(232,152),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17__8S21149C2[] = {
  ABISELECT(-232,-152),
  ABISELECT(-160,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C17__8S21149C2[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17__8S21149C2[] = {
  ABISELECT(64,44),
  ABISELECT(-80,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S21149C17__8S21149C2[] = {
  ABISELECT(144,100),
  ABISELECT(144,100),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17__8S21149C2[] = {
  ABISELECT(216,140),
  ABISELECT(72,40),
  ABISELECT(216,140),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__8S21149C2[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__8S21149C2[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C2[] = {
  {&(_ZTV8S21149C2[14]),  14,101},
  {&(_tg__ZTV8S21149C5__8S21149C2[7]),  7,9},
  {&(_tg__ZTV9S21149C108S21149C5__8S21149C2[4]),  4,6},
  {&(_tg__ZTV8S21149C6__8S21149C5__8S21149C2[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21149C5__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C13__8S21149C2[10]),  10,13},
  {&(_tg__ZTV9S21149C14__9S21149C13__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C13__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C13__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C13__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C13__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C17__9S21149C13__8S21149C2[7]),  7,9},
  {&(_tg__ZTV9S21149C189S21149C17__9S21149C13__8S21149C2[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C13__8S21149C2[2]),  2,4},
  {&(_tg__ZTV9S21149C13__8S21149C2[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S21149C13__8S21149C2[3]),  3,5},
  {&(_ZTV8S21149C2[37]),  37,101},
  {&(_ZTV8S21149C2[42]),  42,101},
  {&(_ZTV8S21149C2[48]),  48,101},
  {&(_ZTV8S21149C2[53]),  53,101},
  {&(_ZTV8S21149C2[26]),  26,101},
  {&(_ZTV8S21149C2[61]),  61,101},
  {&(_ZTV8S21149C2[66]),  66,101},
  {&(_ZTV8S21149C2[73]),  73,101},
  {&(_ZTV8S21149C2[78]),  78,101},
  {&(_ZTV8S21149C2[87]),  87,101},
  {&(_ZTV8S21149C2[95]),  95,101},
  {&(_ZTV8S21149C2[99]),  99,101},
  {&(_ZTV8S21149C2[26]),  26,101},
  {&(_tg__ZTV8S21149C3__8S21149C2[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S21149C3__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S21149C6__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21149C6__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C14__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__8S21149C2[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C17__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S21149C189S21149C17__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C2[4]),  4,6},
  {&(_tg__ZTV9S21149C18__9S21149C17__8S21149C2[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C17__8S21149C2[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S21149C17__8S21149C2[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17__8S21149C2[4]),  4,6},
  {&(_tg__ZTV9S21149C16__A1__8S21149C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__8S21149C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21149C2[];
extern  VTBL_ENTRY _ZTV8S21149C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C2[];
static VTBL_ENTRY alt_thunk_names185[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C2 = {  "S21149C2", // class name
  bases_S21149C2, 25,
  &(vtc_S21149C2[0]), // expected_vtbl_contents
  &(vtt_S21149C2[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S21149C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21149C2),101, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C2),64, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names185,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21149C1  : virtual S21149C2 , S21149C16 {
  virtual  ~S21149C1(); // _ZN8S21149C1D2Ev
  S21149C1(); // tgen
};
//SIG(1 S21149C1) C1{ VBC2{ VBC3{ VBC4{ vd m Fl} vd Fc[2]} BC5{ VBC6{ VBC7{ vd m FL} vd FC8{ m}} VBC9{ m} BC10{ BC11{ vd m Fi[6]} VBC12{ m} VBC8 Fs} vd Fi} BC13{ VBC14{ VBC11 VBC15{ BC7 VBC11 BC16{ VBC7 vd} FC11} FD} VBC17{ BC7 BC18{ BC19{ m Fp} BC14 BC20{ vd m} VBC16 vd} vd} BC8 VBC4 vd v1} BC7 vd} BC16 vd}


 S21149C1 ::~S21149C1(){ note_dtor("S21149C1", this);}
S21149C1 ::S21149C1(){ note_ctor("S21149C1", this);} // tgen

static void Test_S21149C1()
{
  extern Class_Descriptor cd_S21149C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(22,55)];
    init_test(&cd_S21149C1, buf);
    S21149C1 *dp, &lv = *(dp=new (buf) S21149C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S21149C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21149C1)");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C3*), ABISELECT(88,64), "S21149C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S21149C13*)(S21149C2*), ABISELECT(88,64), "S21149C1");
    check_base_class_offset(lv, (S21149C3*)(S21149C2*), ABISELECT(72,56), "S21149C1");
    check_base_class_offset(lv, (S20760C9*)(S21149C6*), ABISELECT(120,80), "S21149C1");
    check_base_class_offset(lv, (S20760C9*)(S21149C16*)(S21149C15*), ABISELECT(120,80), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(120,80), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C16 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C16*), ABISELECT(120,80), "S21149C1");
    check_base_class_offset(lv, (S21149C6*)(S21149C5*)(S21149C2*), ABISELECT(104,72), "S21149C1");
    check_base_class_offset(lv, (S4228C27*)(S21149C5*)(S21149C2*), 0, "S21149C1");
    check_base_class_offset(lv, (S20760C13*)(S21149C10*)(S21149C5*)(S21149C2*), ABISELECT(8,4), "S21149C1");
    check_base_class_offset(lv, (S4228C23*)(S21149C10*)(S21149C5*)(S21149C2*), 0, "S21149C1");
    check_base_class_offset(lv, (S4228C37*)(S21149C10*)(S21149C5*)(S21149C2*), 0, "S21149C1");
    check_base_class_offset(lv, (S21149C10*)(S21149C5*)(S21149C2*), ABISELECT(8,4), "S21149C1");
    check_base_class_offset(lv, (S21149C5*)(S21149C2*), ABISELECT(8,4), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C14 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21149C14*), ABISELECT(176,108), "S21149C1");
    check_base_class_offset(lv, (S20760C13*)(S21149C15*), ABISELECT(176,108), "S21149C1");
    check_base_class_offset(lv, (S20760C13*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(176,108), "S21149C1");
    /*is_ambiguous_... S21149C15::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C15*), ABISELECT(208,136), "S21149C1");
    check_base_class_offset(lv, (S21149C16*)(S21149C15*), ABISELECT(224,148), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C15*)(S21149C14*), ABISELECT(208,136), "S21149C1");
    check_base_class_offset(lv, (S21149C15*)(S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(208,136), "S21149C1");
    /*is_ambiguous_... S21149C13::S21149C14 */ AMB_check_base_class_offset(lv, (S21149C14*)(S21149C13*)(S21149C2*), ABISELECT(144,92), "S21149C1");
    /*is_ambiguous_... S21149C17::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C17*), ABISELECT(272,180), "S21149C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21149C18*)(S21149C17*), ABISELECT(320,208), "S21149C1");
    check_base_class_offset(lv, (S21149C14*)(S21149C18*)(S21149C17*), ABISELECT(288,192), "S21149C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21149C18*)(S21149C17*), ABISELECT(328,212), "S21149C1");
    /*is_ambiguous_... S21149C18::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*)(S21149C18*)(S21149C17*), ABISELECT(48,40), "S21149C1");
    check_base_class_offset(lv, (S21149C18*)(S21149C17*), ABISELECT(288,192), "S21149C1");
    check_base_class_offset(lv, (S21149C17*)(S21149C13*)(S21149C2*), ABISELECT(272,180), "S21149C1");
    check_base_class_offset(lv, (S4228C37*)(S21149C13*)(S21149C2*), ABISELECT(48,40), "S21149C1");
    check_base_class_offset(lv, (S21149C13*)(S21149C2*), ABISELECT(48,40), "S21149C1");
    /*is_ambiguous_... S21149C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21149C2*), ABISELECT(56,44), "S21149C1");
    check_base_class_offset(lv, (S21149C2*), ABISELECT(8,4), "S21149C1");
    /*is_ambiguous_... S21149C1::S21149C16 */ AMB_check_base_class_offset(lv, (S21149C16*), 0, "S21149C1");
    test_class_info(&lv, &cd_S21149C1);
    dp->~S21149C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21149C1(Test_S21149C1, "S21149C1", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S21149C1C1Ev();
extern void _ZN8S21149C1D2Ev();
Name_Map name_map_S21149C1[] = {
  NSPAIR(_ZN8S21149C1C1Ev),
  NSPAIR(_ZN8S21149C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21149C3;
extern VTBL_ENTRY _ZTI8S21149C3[];
extern  VTBL_ENTRY _ZTV8S21149C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C3[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C6;
extern VTBL_ENTRY _ZTI8S21149C6[];
extern  VTBL_ENTRY _ZTV8S21149C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C10;
extern VTBL_ENTRY _ZTI9S21149C10[];
extern  VTBL_ENTRY _ZTV9S21149C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C10[];
extern Class_Descriptor cd_S21149C5;
extern VTBL_ENTRY _ZTI8S21149C5[];
extern  VTBL_ENTRY _ZTV8S21149C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C5[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C15;
extern VTBL_ENTRY _ZTI9S21149C15[];
extern  VTBL_ENTRY _ZTV9S21149C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C15[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21149C14;
extern VTBL_ENTRY _ZTI9S21149C14[];
extern  VTBL_ENTRY _ZTV9S21149C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
extern Class_Descriptor cd_S21149C18;
extern VTBL_ENTRY _ZTI9S21149C18[];
extern  VTBL_ENTRY _ZTV9S21149C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C18[];
extern Class_Descriptor cd_S21149C17;
extern VTBL_ENTRY _ZTI9S21149C17[];
extern  VTBL_ENTRY _ZTV9S21149C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C17[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S21149C13;
extern VTBL_ENTRY _ZTI9S21149C13[];
extern  VTBL_ENTRY _ZTV9S21149C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21149C2;
extern VTBL_ENTRY _ZTI8S21149C2[];
extern  VTBL_ENTRY _ZTV8S21149C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C2[];
extern Class_Descriptor cd_S21149C16;
extern VTBL_ENTRY _ZTI9S21149C16[];
extern  VTBL_ENTRY _ZTV9S21149C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21149C16[];
static Base_Class bases_S21149C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(88,64), //bcp->offset
    58, //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_S21149C3,    ABISELECT(72,56), //bcp->offset
    52, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(120,80), //bcp->offset
    69, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21149C6,    ABISELECT(104,72), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21149C10,    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
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21149C5,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(176,108), //bcp->offset
    82, //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
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(208,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(224,148), //bcp->offset
    94, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21149C15,    ABISELECT(208,136), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21149C14,    ABISELECT(144,92), //bcp->offset
    74, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(272,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(320,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_S21149C14,    ABISELECT(288,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(328,212), //bcp->offset
    116, //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
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21149C16,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21149C18,    ABISELECT(288,192), //bcp->offset
    108, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21149C17,    ABISELECT(272,180), //bcp->offset
    99, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21149C13,    ABISELECT(48,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    48, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21149C2,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21149C16,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21149C1[];
extern void _ZN8S21149C1D1Ev();
extern void _ZN8S21149C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S21149C1D1Ev,_ZTv0_n60_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21149C1D1Ev,_ZThn4_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S21149C1D0Ev,_ZTv0_n60_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21149C1D0Ev,_ZThn4_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21149C1D1Ev,_ZThn40_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21149C1D0Ev,_ZThn40_N8S21149C1D0Ev)() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
extern void ABISELECT(_ZTvn48_n120_N8S21149C1D1Ev,_ZTvn40_n60_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn48_n120_N8S21149C1D0Ev,_ZTvn40_n60_N8S21149C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S21149C1D1Ev,_ZThn56_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S21149C1D0Ev,_ZThn56_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S21149C1D1Ev,_ZThn64_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S21149C1D0Ev,_ZThn64_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn104_N8S21149C1D1Ev,_ZThn72_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn104_N8S21149C1D0Ev,_ZThn72_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn120_N8S21149C1D1Ev,_ZThn80_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn120_N8S21149C1D0Ev,_ZThn80_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C1D1Ev,_ZTv0_n24_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21149C1D1Ev,_ZThn92_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C1D0Ev,_ZTv0_n24_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21149C1D0Ev,_ZThn92_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S21149C1D1Ev,_ZThn108_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S21149C1D0Ev,_ZThn108_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C1D1Ev,_ZTv0_n20_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21149C1D1Ev,_ZThn136_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C1D0Ev,_ZTv0_n20_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21149C1D0Ev,_ZThn136_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21149C1D1Ev,_ZTvn12_n20_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21149C1D0Ev,_ZTvn12_n20_N8S21149C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21149C1D1Ev,_ZTv0_n28_N8S21149C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21149C1D1Ev,_ZThn180_N8S21149C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21149C1D0Ev,_ZTv0_n28_N8S21149C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21149C1D0Ev,_ZThn180_N8S21149C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21149C1D1Ev,_ZTvn12_n28_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21149C1D0Ev,_ZTvn12_n28_N8S21149C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C1D1Ev,_ZTvn32_n28_N8S21149C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C1D0Ev,_ZTvn32_n28_N8S21149C1D0Ev)();
static  VTBL_ENTRY vtc_S21149C1[] = {
  ABISELECT(48,40),
  ABISELECT(272,180),
  ABISELECT(208,136),
  ABISELECT(176,108),
  ABISELECT(144,92),
  0,
  0,
  0,
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(72,56),
  ABISELECT(8,4),
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&_ZN8S21149C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C1D0Ev,
  ABISELECT(40,36),
  ABISELECT(-8,-4),
  ABISELECT(40,36),
  ABISELECT(264,176),
  ABISELECT(200,132),
  ABISELECT(168,104),
  ABISELECT(136,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21149C1D1Ev,_ZTv0_n60_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S21149C1D0Ev,_ZTv0_n60_N8S21149C1D0Ev),
  ABISELECT(40,24),
  0,
  ABISELECT(224,140),
  ABISELECT(160,96),
  ABISELECT(128,68),
  ABISELECT(96,52),
  ABISELECT(-48,-40),
  ABISELECT(72,40),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21149C1D1Ev,_ZTvn40_n60_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n120_N8S21149C1D0Ev,_ZTvn40_n60_N8S21149C1D0Ev),
  ABISELECT(-72,-56),
  ABISELECT(16,8),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(16,8),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C1D1Ev,_ZTv0_n24_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C1D0Ev,_ZTv0_n24_N8S21149C1D0Ev),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev),
  ABISELECT(-208,-136),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C1D1Ev,_ZTv0_n20_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C1D0Ev,_ZTv0_n20_N8S21149C1D0Ev),
  ABISELECT(-104,-68),
  ABISELECT(-224,-148),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C1D1Ev,_ZTvn12_n20_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C1D0Ev,_ZTvn12_n20_N8S21149C1D0Ev),
  ABISELECT(-272,-180),
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-272,-180),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C1D1Ev,_ZTv0_n28_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C1D0Ev,_ZTv0_n28_N8S21149C1D0Ev),
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-288,-192),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C1D1Ev,_ZTvn12_n28_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C1D0Ev,_ZTvn12_n28_N8S21149C1D0Ev),
  ABISELECT(-328,-212),
  (VTBL_ENTRY)&(_ZTI8S21149C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C1D1Ev,_ZTvn32_n28_N8S21149C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C1D0Ev,_ZTvn32_n28_N8S21149C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21149C1[];
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A__8S21149C1[] = {
  ABISELECT(120,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21149C16D1Ev,_ZThn80_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21149C16D0Ev,_ZThn80_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A__8S21149C1[] = {
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void _ZN8S21149C2D1Ev();
extern void _ZN8S21149C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C2__8S21149C1[] = {
  ABISELECT(40,36),
  ABISELECT(264,176),
  ABISELECT(200,132),
  ABISELECT(168,104),
  ABISELECT(136,88),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(-8,-4),
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&_ZN8S21149C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C2D0Ev,
};
extern void _ZN8S21149C5D1Ev();
extern void _ZN8S21149C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(112,76),
  ABISELECT(96,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&_ZN8S21149C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C5D0Ev,
};
extern void _ZN9S21149C10D1Ev();
extern void _ZN9S21149C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C108S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C10[0]),
  (VTBL_ENTRY)&_ZN9S21149C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C10D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C58S21149C2__8S21149C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev)();
extern void _ZN9S21149C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev)();
extern void _ZN9S21149C13D0Ev() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,140),
  ABISELECT(160,96),
  ABISELECT(128,68),
  ABISELECT(96,52),
  0,
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C14__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-160,-96),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D1Ev,_ZTvn12_n20_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C13D0Ev,_ZTvn12_n20_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C17__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D1Ev,_ZTvn12_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N9S21149C13D0Ev,_ZTvn12_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D1Ev,_ZTvn32_n28_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N9S21149C13D0Ev,_ZTvn32_n28_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21149C138S21149C2__8S21149C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S21149C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C3__8S21149C2__8S21149C1[] = {
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21149C2__8S21149C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C2__8S21149C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(16,8),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C2__8S21149C1[] = {
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev)() __attribute__((weak));
extern void _ZN9S21149C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C13__8S21149C2__8S21149C1[] = {
  ABISELECT(40,24),
  0,
  ABISELECT(224,140),
  ABISELECT(160,96),
  ABISELECT(128,68),
  ABISELECT(96,52),
  ABISELECT(-40,-36),
  ABISELECT(72,40),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev),
  (VTBL_ENTRY)&_ZN9S21149C132v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C14__8S21149C2__8S21149C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__A1__8S21149C2__8S21149C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__8S21149C2__8S21149C1[] = {
  ABISELECT(-200,-132),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-200,-132),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__8S21149C2__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-216,-144),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D1Ev,_ZTvn12_n20_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21149C2D0Ev,_ZTvn12_n20_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZThn264_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev)();
extern void ABISELECT(_ZThn264_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C17__8S21149C2__8S21149C1[] = {
  ABISELECT(-264,-176),
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  ABISELECT(-264,-176),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__8S21149C2__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-280,-188),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D1Ev,_ZTvn12_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21149C2D0Ev,_ZTvn12_n28_N8S21149C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S21149C189S21149C17__8S21149C2__8S21149C1[] = {
  ABISELECT(-320,-208),
  (VTBL_ENTRY)&(_ZTI8S21149C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D1Ev,_ZTvn32_n28_N8S21149C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21149C2D0Ev,_ZTvn32_n28_N8S21149C2D0Ev),
};
extern void _ZN8S21149C3D1Ev();
extern void _ZN8S21149C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C3__8S21149C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&_ZN8S21149C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21149C3__8S21149C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev),
};
extern void _ZN8S21149C6D1Ev();
extern void _ZN8S21149C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21149C6__8S21149C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&_ZN8S21149C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21149C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21149C6__8S21149C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21149C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev),
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C14__8S21149C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C14__8S21149C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C14__8S21149C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C14__8S21149C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void _ZN9S21149C15D1Ev();
extern void _ZN9S21149C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C15__8S21149C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&_ZN9S21149C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C15D0Ev,
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__8S21149C1[] = {
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C1[] = {
  ABISELECT(104,68),
  ABISELECT(104,68),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C15__8S21149C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__9S21149C15__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D1Ev,_ZThn12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C15D0Ev,_ZThn12_N9S21149C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C15__8S21149C1[] = {
  ABISELECT(88,56),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S21149C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D1Ev,_ZTv0_n12_N9S21149C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C15D0Ev,_ZTv0_n12_N9S21149C15D0Ev),
};
extern void _ZN9S21149C17D1Ev();
extern void _ZN9S21149C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C17__8S21149C1[] = {
  ABISELECT(-224,-140),
  ABISELECT(-152,-100),
  ABISELECT(-64,-44),
  ABISELECT(-96,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&_ZN9S21149C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C17D0Ev,
};
extern void _ZN9S21149C18D1Ev();
extern void _ZN9S21149C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&_ZN9S21149C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C18D0Ev,
};
extern void _ZN9S21149C14D1Ev();
extern void _ZN9S21149C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&_ZN9S21149C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D1Ev,_ZTvn12_n20_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C14D0Ev,_ZTvn12_n20_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21149C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(80,56),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D1Ev,_ZTv0_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C18D0Ev,_ZTv0_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D1Ev,_ZTvn12_n20_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C18D0Ev,_ZTvn12_n20_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(168,112),
  ABISELECT(168,112),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D1Ev,_ZTv0_n12_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C18D0Ev,_ZTv0_n12_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C1[] = {
  ABISELECT(240,152),
  ABISELECT(72,40),
  ABISELECT(240,152),
  (VTBL_ENTRY)&(_ZTI9S21149C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D1Ev,_ZTv0_n16_N9S21149C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C18D0Ev,_ZTv0_n16_N9S21149C18D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C18__9S21149C17__8S21149C1[] = {
  ABISELECT(-240,-152),
  ABISELECT(-168,-112),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D1Ev,_ZThn12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21149C17D0Ev,_ZThn12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21149C17__8S21149C1[] = {
  ABISELECT(96,72),
  ABISELECT(96,72),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C15__9S21149C17__8S21149C1[] = {
  ABISELECT(64,44),
  ABISELECT(-88,-56),
  ABISELECT(-32,-28),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D1Ev,_ZTv0_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21149C17D0Ev,_ZTv0_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C1[] = {
  ABISELECT(-104,-68),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D1Ev,_ZTvn12_n20_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21149C17D0Ev,_ZTvn12_n20_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__9S21149C17__8S21149C1[] = {
  ABISELECT(152,100),
  ABISELECT(152,100),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D1Ev,_ZTv0_n12_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C17D0Ev,_ZTv0_n12_N9S21149C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__9S21149C17__8S21149C1[] = {
  ABISELECT(224,140),
  ABISELECT(72,40),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S21149C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D1Ev,_ZTv0_n16_N9S21149C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21149C17D0Ev,_ZTv0_n16_N9S21149C17D0Ev),
};
extern void _ZN9S21149C16D1Ev();
extern void _ZN9S21149C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21149C16__A1__8S21149C1[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&_ZN9S21149C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21149C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev)();
extern void ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21149C16__A1__8S21149C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21149C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev),
};
static  VTT_ENTRY vtt_S21149C1[] = {
  {&(_ZTV8S21149C1[15]),  15,120},
  {&(_tg__ZTV9S21149C16__A__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A__8S21149C1[3]),  3,5},
  {&(_ZTV8S21149C1[33]),  33,120},
  {&(_ZTV8S21149C1[56]),  56,120},
  {&(_ZTV8S21149C1[61]),  61,120},
  {&(_ZTV8S21149C1[67]),  67,120},
  {&(_ZTV8S21149C1[72]),  72,120},
  {&(_ZTV8S21149C1[45]),  45,120},
  {&(_ZTV8S21149C1[80]),  80,120},
  {&(_ZTV8S21149C1[85]),  85,120},
  {&(_ZTV8S21149C1[92]),  92,120},
  {&(_ZTV8S21149C1[97]),  97,120},
  {&(_ZTV8S21149C1[106]),  106,120},
  {&(_ZTV8S21149C1[114]),  114,120},
  {&(_ZTV8S21149C1[118]),  118,120},
  {&(_ZTV8S21149C1[45]),  45,120},
  {&(_ZTV8S21149C1[50]),  50,120},
  {&(_tg__ZTV8S21149C2__8S21149C1[14]),  14,16},
  {&(_tg__ZTV8S21149C58S21149C2__8S21149C1[7]),  7,9},
  {&(_tg__ZTV9S21149C108S21149C58S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV8S21149C6__8S21149C58S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21149C58S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C138S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV9S21149C14__9S21149C138S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C138S21149C2__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C17__9S21149C138S21149C2__8S21149C1[7]),  7,9},
  {&(_tg__ZTV9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21149C189S21149C17__9S21149C138S21149C2__8S21149C1[2]),  2,4},
  {&(_tg__ZTV9S21149C138S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__9S21149C138S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S21149C3__8S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S21149C6__8S21149C2__8S21149C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C13__8S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV9S21149C14__8S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__A1__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__8S21149C2__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__8S21149C2__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C17__8S21149C2__8S21149C1[7]),  7,9},
  {&(_tg__ZTV9S21149C189S21149C17__8S21149C2__8S21149C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S21149C189S21149C17__8S21149C2__8S21149C1[2]),  2,4},
  {&(_tg__ZTV9S21149C13__8S21149C2__8S21149C1[10]),  10,13},
  {&(_tg__ZTV8S21149C3__8S21149C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S21149C3__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S21149C6__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21149C6__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C14__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C14__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C14__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C14__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C14__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__8S21149C1[4]),  4,6},
  {&(_tg__ZTV9S21149C169S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C169S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C16__9S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C15__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C17__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S21149C189S21149C17__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S21149C149S21149C189S21149C17__A1__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21149C149S21149C189S21149C17__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C149S21149C189S21149C17__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C149S21149C189S21149C17__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21149C189S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C189S21149C17__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C189S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21149C189S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C189S21149C17__8S21149C1[4]),  4,6},
  {&(_tg__ZTV9S21149C18__9S21149C17__8S21149C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__9S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C15__9S21149C17__8S21149C1[5]),  5,7},
  {&(_tg__ZTV9S21149C169S21149C15__9S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__9S21149C17__8S21149C1[3]),  3,5},
  {&(_tg__ZTV9S21149C16__A1__9S21149C17__8S21149C1[4]),  4,6},
  {&(_tg__ZTV9S21149C16__A1__8S21149C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S21149C16__A1__8S21149C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21149C1[];
extern  VTBL_ENTRY _ZTV8S21149C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21149C1[];
static VTBL_ENTRY alt_thunk_names186[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D0Ev,_ZTv0_n20_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D0Ev,_ZThn44_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C14D1Ev,_ZTv0_n20_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21149C14D1Ev,_ZThn44_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D0Ev,_ZTv0_n12_N9S21149C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D0Ev,_ZThn16_N9S21149C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C14D1Ev,_ZTv0_n12_N9S21149C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21149C14D1Ev,_ZThn16_N9S21149C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D0Ev,_ZTv0_n12_N8S21149C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D0Ev,_ZThn8_N8S21149C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C6D1Ev,_ZTv0_n12_N8S21149C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C6D1Ev,_ZThn8_N8S21149C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D0Ev,_ZTv0_n12_N8S21149C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D0Ev,_ZThn8_N8S21149C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C3D1Ev,_ZTv0_n12_N8S21149C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21149C3D1Ev,_ZThn8_N8S21149C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D0Ev,_ZTv0_n28_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21149C2D0Ev,_ZThn176_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C2D1Ev,_ZTv0_n28_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S21149C2D1Ev,_ZThn176_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D0Ev,_ZTv0_n20_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21149C2D0Ev,_ZThn132_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C2D1Ev,_ZTv0_n20_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21149C2D1Ev,_ZThn132_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D0Ev,_ZTv0_n24_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21149C2D0Ev,_ZThn88_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C2D1Ev,_ZTv0_n24_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21149C2D1Ev,_ZThn88_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D0Ev,_ZTv0_n12_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21149C2D0Ev,_ZThn104_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D0Ev,_ZThn76_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D0Ev,_ZThn60_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C2D1Ev,_ZTv0_n12_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21149C2D1Ev,_ZThn104_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C2D1Ev,_ZThn76_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21149C2D1Ev,_ZThn60_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D0Ev,_ZTv0_n16_N8S21149C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D0Ev,_ZThn36_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D0Ev,_ZThn68_N8S21149C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D0Ev,_ZThn52_N8S21149C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C2D1Ev,_ZTv0_n16_N8S21149C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21149C2D1Ev,_ZThn36_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C2D1Ev,_ZThn68_N8S21149C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21149C2D1Ev,_ZThn52_N8S21149C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D0Ev,_ZTv0_n28_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D0Ev,_ZThn140_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21149C13D1Ev,_ZTv0_n28_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21149C13D1Ev,_ZThn140_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D0Ev,_ZTv0_n20_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D0Ev,_ZThn96_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21149C13D1Ev,_ZTv0_n20_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21149C13D1Ev,_ZThn96_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D0Ev,_ZTv0_n12_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D0Ev,_ZThn24_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D0Ev,_ZThn40_N9S21149C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21149C13D0Ev,_ZThn68_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C13D1Ev,_ZTv0_n12_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S21149C13D1Ev,_ZThn24_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C13D1Ev,_ZThn40_N9S21149C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21149C13D1Ev,_ZThn68_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D0Ev,_ZTv0_n24_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C13D0Ev,_ZThn52_N9S21149C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21149C13D1Ev,_ZTv0_n24_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21149C13D1Ev,_ZThn52_N9S21149C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D0Ev,_ZTv0_n16_N9S21149C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21149C13D1Ev,_ZTv0_n16_N9S21149C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S21149C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D0Ev,_ZTv0_n12_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D0Ev,_ZThn76_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C5D1Ev,_ZTv0_n12_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21149C5D1Ev,_ZThn76_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D0Ev,_ZTv0_n16_N8S21149C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D0Ev,_ZThn68_N8S21149C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C5D1Ev,_ZTv0_n16_N8S21149C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21149C5D1Ev,_ZThn68_N8S21149C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D0Ev,_ZTv0_n12_N9S21149C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D0Ev,_ZThn40_N9S21149C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C16D0Ev,_ZThn80_N9S21149C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21149C16D1Ev,_ZTv0_n12_N9S21149C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21149C16D1Ev,_ZThn40_N9S21149C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21149C16D1Ev,_ZThn80_N9S21149C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C1D0Ev,_ZTv0_n28_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21149C1D0Ev,_ZThn180_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21149C1D1Ev,_ZTv0_n28_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21149C1D1Ev,_ZThn180_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C1D0Ev,_ZTv0_n20_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21149C1D0Ev,_ZThn136_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21149C1D1Ev,_ZTv0_n20_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21149C1D1Ev,_ZThn136_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C1D0Ev,_ZTv0_n24_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21149C1D0Ev,_ZThn92_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21149C1D1Ev,_ZTv0_n24_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21149C1D1Ev,_ZThn92_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C1D0Ev,_ZTv0_n12_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21149C1D0Ev,_ZThn108_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21149C1D0Ev,_ZThn80_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21149C1D0Ev,_ZThn64_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21149C1D1Ev,_ZTv0_n12_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S21149C1D1Ev,_ZThn108_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21149C1D1Ev,_ZThn80_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21149C1D1Ev,_ZThn64_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C1D0Ev,_ZTv0_n16_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21149C1D0Ev,_ZThn72_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21149C1D0Ev,_ZThn56_N8S21149C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21149C1D0Ev,_ZThn40_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21149C1D1Ev,_ZTv0_n16_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S21149C1D1Ev,_ZThn72_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21149C1D1Ev,_ZThn56_N8S21149C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21149C1D1Ev,_ZThn40_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21149C1D0Ev,_ZTv0_n60_N8S21149C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21149C1D0Ev,_ZThn4_N8S21149C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S21149C1D1Ev,_ZTv0_n60_N8S21149C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21149C1D1Ev,_ZThn4_N8S21149C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21149C1 = {  "S21149C1", // class name
  bases_S21149C1, 27,
  &(vtc_S21149C1[0]), // expected_vtbl_contents
  &(vtt_S21149C1[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S21149C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21149C1),120, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21149C1),82, //virtual table table var
  22, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names186,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C5  : virtual S19676C9 {
  virtual  ~S7863C5(); // _ZN7S7863C5D2Ev
  S7863C5(); // tgen
};
//SIG(-1 S7863C5) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S7863C5 ::~S7863C5(){ note_dtor("S7863C5", this);}
S7863C5 ::S7863C5(){ note_ctor("S7863C5", this);} // tgen

static void Test_S7863C5()
{
  extern Class_Descriptor cd_S7863C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S7863C5, buf);
    S7863C5 *dp, &lv = *(dp=new (buf) S7863C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7863C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C5)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S7863C5");
    test_class_info(&lv, &cd_S7863C5);
    dp->~S7863C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C5(Test_S7863C5, "S7863C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7863C5C1Ev();
extern void _ZN7S7863C5D2Ev();
Name_Map name_map_S7863C5[] = {
  NSPAIR(_ZN7S7863C5C1Ev),
  NSPAIR(_ZN7S7863C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S7863C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C5[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C5[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C5[];
static  VTT_ENTRY vtt_S7863C5[] = {
  {&(_ZTV7S7863C5[3]),  3,10},
  {&(_ZTV7S7863C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static VTBL_ENTRY alt_thunk_names187[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C5 = {  "S7863C5", // class name
  bases_S7863C5, 1,
  &(vtc_S7863C5[0]), // expected_vtbl_contents
  &(vtt_S7863C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7863C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7863C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names187,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C3  : virtual S19676C9 , S7863C5 {
  void *s7863c3f0[10];
  int s7863c3f1;
  __tsi64 s7863c3f2;
  ~S7863C3(); // tgen
  S7863C3(); // tgen
};
//SIG(-1 S7863C3) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S7863C3 ::~S7863C3(){ note_dtor("S7863C3", this);} // tgen
S7863C3 ::S7863C3(){ note_ctor("S7863C3", this);} // tgen

static void Test_S7863C3()
{
  extern Class_Descriptor cd_S7863C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S7863C3, buf);
    S7863C3 *dp, &lv = *(dp=new (buf) S7863C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S7863C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C3)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S7863C3");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(112,56), "S7863C3");
    check_base_class_offset(lv, (S7863C5*), 0, "S7863C3");
    check_field_offset(lv, s7863c3f0, ABISELECT(8,4), "S7863C3.s7863c3f0");
    check_field_offset(lv, s7863c3f1, ABISELECT(88,44), "S7863C3.s7863c3f1");
    check_field_offset(lv, s7863c3f2, ABISELECT(96,48), "S7863C3.s7863c3f2");
    test_class_info(&lv, &cd_S7863C3);
    dp->~S7863C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C3(Test_S7863C3, "S7863C3", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN7S7863C3C1Ev();
extern void _ZN7S7863C3D1Ev();
Name_Map name_map_S7863C3[] = {
  NSPAIR(_ZN7S7863C3C1Ev),
  NSPAIR(_ZN7S7863C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C3[];
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C3[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C3[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C3[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__7S7863C3[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
static  VTT_ENTRY vtt_S7863C3[] = {
  {&(_ZTV7S7863C3[3]),  3,10},
  {&(_tg__ZTV7S7863C5__7S7863C3[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__7S7863C3[3]),  3,5},
  {&(_ZTV7S7863C3[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
static VTBL_ENTRY alt_thunk_names188[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C3 = {  "S7863C3", // class name
  bases_S7863C3, 2,
  &(vtc_S7863C3[0]), // expected_vtbl_contents
  &(vtt_S7863C3[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI7S7863C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7863C3),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C3),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names188,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C7  : virtual S7863C3 , S7863C5 {
  int s7863c7f0;
  virtual  ~S7863C7(); // _ZN7S7863C7D2Ev
  S7863C7(); // tgen
};
//SIG(-1 S7863C7) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S7863C7 ::~S7863C7(){ note_dtor("S7863C7", this);}
S7863C7 ::S7863C7(){ note_ctor("S7863C7", this);} // tgen

static void Test_S7863C7()
{
  extern Class_Descriptor cd_S7863C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S7863C7, buf);
    S7863C7 *dp, &lv = *(dp=new (buf) S7863C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S7863C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C7)");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(128,64), "S7863C7");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(128,64), "S7863C7");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(128,64), "S7863C7");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(16,8), "S7863C7");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(16,8), "S7863C7");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), 0, "S7863C7");
    check_field_offset(lv, s7863c7f0, ABISELECT(8,4), "S7863C7.s7863c7f0");
    test_class_info(&lv, &cd_S7863C7);
    dp->~S7863C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C7(Test_S7863C7, "S7863C7", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN7S7863C7C1Ev();
extern void _ZN7S7863C7D2Ev();
Name_Map name_map_S7863C7[] = {
  NSPAIR(_ZN7S7863C7C1Ev),
  NSPAIR(_ZN7S7863C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C7[];
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S7863C7D1Ev,_ZThn64_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S7863C7D0Ev,_ZThn64_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C7[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C7[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C7[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn128_N7S7863C5D1Ev,_ZThn64_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn128_N7S7863C5D0Ev,_ZThn64_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C7[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C7[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C7[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
static  VTT_ENTRY vtt_S7863C7[] = {
  {&(_ZTV7S7863C7[4]),  4,17},
  {&(_tg__ZTV7S7863C5__A1__7S7863C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C7[3]),  3,5},
  {&(_ZTV7S7863C7[10]),  10,17},
  {&(_ZTV7S7863C7[15]),  15,17},
  {&(_tg__ZTV7S7863C3__7S7863C7[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C7[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
static VTBL_ENTRY alt_thunk_names189[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C5D0Ev,_ZThn64_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C5D1Ev,_ZThn64_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C7D0Ev,_ZThn64_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C7D1Ev,_ZThn64_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C7 = {  "S7863C7", // class name
  bases_S7863C7, 4,
  &(vtc_S7863C7[0]), // expected_vtbl_contents
  &(vtt_S7863C7[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI7S7863C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7863C7),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C7),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names189,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C9  : S19676C9 , virtual S7863C5 , virtual S7863C3 , S7863C7 {
  int s7863c9f0;
  virtual  ~S7863C9(); // _ZN7S7863C9D2Ev
  S7863C9(); // tgen
};
//SIG(-1 S7863C9) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S7863C9 ::~S7863C9(){ note_dtor("S7863C9", this);}
S7863C9 ::S7863C9(){ note_ctor("S7863C9", this);} // tgen

static void Test_S7863C9()
{
  extern Class_Descriptor cd_S7863C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S7863C9, buf);
    S7863C9 *dp, &lv = *(dp=new (buf) S7863C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S7863C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C9)");
    /*is_ambiguous_... S7863C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S7863C9");
    /*is_ambiguous_... S7863C9::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(80,44), "S7863C9");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(80,44), "S7863C9");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(80,44), "S7863C9");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(80,44), "S7863C9");
    /*is_ambiguous_... S7863C9::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), ABISELECT(64,40), "S7863C9");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(128,72), "S7863C9");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(128,72), "S7863C9");
    check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(128,72), "S7863C9");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(48,28), "S7863C9");
    check_base_class_offset(lv, (S7863C7*), ABISELECT(48,28), "S7863C9");
    check_field_offset(lv, s7863c9f0, ABISELECT(60,36), "S7863C9.s7863c9f0");
    test_class_info(&lv, &cd_S7863C9);
    dp->~S7863C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C9(Test_S7863C9, "S7863C9", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN7S7863C9C1Ev();
extern void _ZN7S7863C9D2Ev();
Name_Map name_map_S7863C9[] = {
  NSPAIR(_ZN7S7863C9C1Ev),
  NSPAIR(_ZN7S7863C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
static Base_Class bases_S7863C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(128,72), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C9[];
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S7863C9D1Ev,_ZThn72_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S7863C9D0Ev,_ZThn72_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C9[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C9[];
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C9[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn16_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn16_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S7863C7D1Ev,_ZThn44_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S7863C7D0Ev,_ZThn44_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C9[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn16_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn16_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__7S7863C9[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__A1__7S7863C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
static  VTT_ENTRY vtt_S7863C9[] = {
  {&(_ZTV7S7863C9[5]),  5,30},
  {&(_tg__ZTV7S7863C7__7S7863C9[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C9[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C9[3]),  3,5},
  {&(_ZTV7S7863C9[17]),  17,30},
  {&(_ZTV7S7863C9[22]),  22,30},
  {&(_ZTV7S7863C9[28]),  28,30},
  {&(_ZTV7S7863C9[11]),  11,30},
  {&(_tg__ZTV7S7863C5__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__7S7863C9[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__A1__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
static VTBL_ENTRY alt_thunk_names190[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn16_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn16_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C7D0Ev,_ZThn44_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C7D1Ev,_ZThn44_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn16_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn16_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C9D0Ev,_ZThn72_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7863C9D1Ev,_ZThn72_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C9 = {  "S7863C9", // class name
  bases_S7863C9, 7,
  &(vtc_S7863C9[0]), // expected_vtbl_contents
  &(vtt_S7863C9[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI7S7863C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7863C9),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C9),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names190,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C10  : virtual S19676C9 , virtual S7863C3 , S7863C5 {
  void *s7863c10f0;
  int s7863c10f1;
  ::S19676C9 s7863c10f2[3];
  int s7863c10f3[7];
  virtual  ~S7863C10(); // _ZN8S7863C10D2Ev
  S7863C10(); // tgen
};
//SIG(-1 S7863C10) C1{ VBC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 BC4{ VBC2 vd} Fp[10] Fi FL} BC4 vd Fp Fi FC2[3] Fi[7]}


 S7863C10 ::~S7863C10(){ note_dtor("S7863C10", this);}
S7863C10 ::S7863C10(){ note_ctor("S7863C10", this);} // tgen

static void Test_S7863C10()
{
  extern Class_Descriptor cd_S7863C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S7863C10, buf);
    S7863C10 *dp, &lv = *(dp=new (buf) S7863C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S7863C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C10)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7863C10");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(208,124), "S7863C10");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(208,124), "S7863C10");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(208,124), "S7863C10");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(256,152), "S7863C10");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(256,152), "S7863C10");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), 0, "S7863C10");
    check_field_offset(lv, s7863c10f0, ABISELECT(8,4), "S7863C10.s7863c10f0");
    check_field_offset(lv, s7863c10f1, ABISELECT(16,8), "S7863C10.s7863c10f1");
    check_field_offset(lv, s7863c10f2, ABISELECT(32,12), "S7863C10.s7863c10f2");
    check_field_offset(lv, s7863c10f3, ABISELECT(176,96), "S7863C10.s7863c10f3");
    test_class_info(&lv, &cd_S7863C10);
    dp->~S7863C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C10(Test_S7863C10, "S7863C10", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN8S7863C10C1Ev();
extern void _ZN8S7863C10D2Ev();
Name_Map name_map_S7863C10[] = {
  NSPAIR(_ZN8S7863C10C1Ev),
  NSPAIR(_ZN8S7863C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(208,124), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(256,152), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7863C10[];
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S7863C10D1Ev,_ZThn124_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S7863C10D0Ev,_ZThn124_N8S7863C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn256_N8S7863C10D1Ev,_ZThn152_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn256_N8S7863C10D0Ev,_ZThn152_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C10[] = {
  ABISELECT(256,152),
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-48,-28),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7863C10[];
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__8S7863C10[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn124_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn124_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__8S7863C10[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__8S7863C10[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__8S7863C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__8S7863C10[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
static  VTT_ENTRY vtt_S7863C10[] = {
  {&(_ZTV8S7863C10[4]),  4,17},
  {&(_tg__ZTV7S7863C5__A1__8S7863C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__8S7863C10[3]),  3,5},
  {&(_ZTV8S7863C10[9]),  9,17},
  {&(_ZTV8S7863C10[15]),  15,17},
  {&(_tg__ZTV7S7863C3__8S7863C10[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__8S7863C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__8S7863C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__8S7863C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
static VTBL_ENTRY alt_thunk_names191[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn124_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn124_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7863C10D0Ev,_ZThn152_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S7863C10D1Ev,_ZThn152_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7863C10D0Ev,_ZThn124_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7863C10D1Ev,_ZThn124_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C10 = {  "S7863C10", // class name
  bases_S7863C10, 4,
  &(vtc_S7863C10[0]), // expected_vtbl_contents
  &(vtt_S7863C10[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI8S7863C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7863C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7863C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names191,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C8  : virtual S7863C3 , virtual S7863C9 , S7863C10 , S19676C9 , S7863C5 {
  virtual  ~S7863C8(); // _ZN7S7863C8D2Ev
  S7863C8(); // tgen
};
//SIG(-1 S7863C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ BC3 VBC4 VBC2 BC6{ VBC2 BC4 vd Fi} vd Fi} BC7{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd}


 S7863C8 ::~S7863C8(){ note_dtor("S7863C8", this);}
S7863C8 ::S7863C8(){ note_ctor("S7863C8", this);} // tgen

static void Test_S7863C8()
{
  extern Class_Descriptor cd_S7863C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(32,72)];
    init_test(&cd_S7863C8, buf);
    S7863C8 *dp, &lv = *(dp=new (buf) S7863C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(496,284), "sizeof(S7863C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C8)");
    check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(368,212), "S7863C8");
    check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(368,212), "S7863C8");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*), ABISELECT(368,212), "S7863C8");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(368,212), "S7863C8");
    check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(264,156), "S7863C8");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*), ABISELECT(264,156), "S7863C8");
    /*is_ambiguous_... S7863C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(416,240), "S7863C8");
    /*is_ambiguous_... S7863C9::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(480,280), "S7863C8");
    /*is_ambiguous_... S7863C7::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(464,268), "S7863C8");
    check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(464,268), "S7863C8");
    check_base_class_offset(lv, (S7863C9*), ABISELECT(416,240), "S7863C8");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*), 0, "S7863C8");
    check_base_class_offset(lv, (S7863C10*), 0, "S7863C8");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), ABISELECT(208,124), "S7863C8");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), ABISELECT(256,152), "S7863C8");
    test_class_info(&lv, &cd_S7863C8);
    dp->~S7863C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C8(Test_S7863C8, "S7863C8", ABISELECT(496,284));

#else // __cplusplus

extern void _ZN7S7863C8C1Ev();
extern void _ZN7S7863C8D2Ev();
Name_Map name_map_S7863C8[] = {
  NSPAIR(_ZN7S7863C8C1Ev),
  NSPAIR(_ZN7S7863C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
static Base_Class bases_S7863C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(368,212), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(264,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(264,156), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    ABISELECT(416,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(480,280), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(464,268), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(464,268), //bcp->offset
    36, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(416,240), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7863C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(208,124), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7863C5,    ABISELECT(256,152), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C8[];
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
extern void ABISELECT(_ZThn208_N7S7863C8D1Ev,_ZThn124_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C8D0Ev,_ZThn124_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn264_N7S7863C8D1Ev,_ZThn156_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn264_N7S7863C8D0Ev,_ZThn156_N7S7863C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn480_N7S7863C8D1Ev,_ZThn280_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn480_N7S7863C8D0Ev,_ZThn280_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7863C8[] = {
  ABISELECT(480,280),
  ABISELECT(416,240),
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7863C8D1Ev,_ZThn124_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7863C8D0Ev,_ZThn124_N7S7863C8D0Ev),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
  ABISELECT(-416,-240),
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-112,-68),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C8[];
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C10__7S7863C8[] = {
  ABISELECT(264,156),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C10__A3__7S7863C8[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C5D1Ev,_ZThn212_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C5D0Ev,_ZThn212_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C10__A3__7S7863C8[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn368_N8S7863C10D1Ev,_ZThn212_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn368_N8S7863C10D0Ev,_ZThn212_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C10__7S7863C8[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn264_N8S7863C10D1Ev,_ZThn156_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn264_N8S7863C10D0Ev,_ZThn156_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C10__7S7863C8[] = {
  ABISELECT(-264,-156),
  ABISELECT(104,56),
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn60_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn60_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A__7S7863C8[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C8[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C8[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C8[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8[] = {
  ABISELECT(-152,-84),
  ABISELECT(-48,-28),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A2__7S7863C8[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A2__7S7863C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__7S7863C8[] = {
  ABISELECT(200,112),
  ABISELECT(104,56),
  ABISELECT(200,112),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__7S7863C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C8[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C8[] = {
  ABISELECT(-200,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C8[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
static  VTT_ENTRY vtt_S7863C8[] = {
  {&(_ZTV7S7863C8[6]),  6,48},
  {&(_tg__ZTV8S7863C10__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C10__A3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C10__A3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C10__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C10__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A__7S7863C8[3]),  3,5},
  {&(_ZTV7S7863C8[21]),  21,48},
  {&(_ZTV7S7863C8[26]),  26,48},
  {&(_ZTV7S7863C8[34]),  34,48},
  {&(_ZTV7S7863C8[46]),  46,48},
  {&(_ZTV7S7863C8[40]),  40,48},
  {&(_ZTV7S7863C8[15]),  15,48},
  {&(_tg__ZTV7S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A2__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A2__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C8[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C8[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
static VTBL_ENTRY alt_thunk_names192[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D0Ev,_ZThn40_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7863C9D1Ev,_ZThn40_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7863C10D0Ev,_ZThn156_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S7863C10D1Ev,_ZThn156_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7863C10D0Ev,_ZThn212_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S7863C10D1Ev,_ZThn212_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D0Ev,_ZThn60_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C5D0Ev,_ZThn212_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7863C5D1Ev,_ZThn60_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C5D1Ev,_ZThn212_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C8D0Ev,_ZThn280_N7S7863C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7863C8D0Ev,_ZThn156_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C8D1Ev,_ZThn280_N7S7863C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn264_N7S7863C8D1Ev,_ZThn156_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C8 = {  "S7863C8", // class name
  bases_S7863C8, 12,
  &(vtc_S7863C8[0]), // expected_vtbl_contents
  &(vtt_S7863C8[0]), // expected_vtt_contents
  ABISELECT(496,284), // object size
  NSPAIRA(_ZTI7S7863C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7863C8),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C8),30, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names192,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C6  : virtual S7863C5 , virtual S7863C7 , S7863C3 , S7863C8 , S7863C9 {
  short s7863c6f0;
  virtual  ~S7863C6(); // _ZN7S7863C6D2Ev
  S7863C6(); // tgen
};
//SIG(-1 S7863C6) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ VBC5{ VBC3 BC2 Fp[10] Fi FL} BC2 vd Fi} BC5 BC6{ VBC5 VBC7{ BC3 VBC2 VBC5 BC4 vd Fi} BC8{ VBC3 VBC5 BC2 vd Fp Fi FC3[3] Fi[7]} BC3 BC2 vd} BC7 vd Fs}


 S7863C6 ::~S7863C6(){ note_dtor("S7863C6", this);}
S7863C6 ::S7863C6(){ note_ctor("S7863C6", this);} // tgen

static void Test_S7863C6()
{
  extern Class_Descriptor cd_S7863C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,99)];
    init_test(&cd_S7863C6, buf);
    S7863C6 *dp, &lv = *(dp=new (buf) S7863C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,392), "sizeof(S7863C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C6)");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(464,260), "S7863C6");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(464,260), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*), ABISELECT(456,256), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(456,256), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(456,256), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(528,296), "S7863C6");
    check_base_class_offset(lv, (S7863C3*)(S7863C8*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(528,296), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(512,288), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C7*), ABISELECT(512,288), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), 0, "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*), 0, "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(640,352), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(688,380), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(688,380), "S7863C6");
    check_base_class_offset(lv, (S7863C9*)(S7863C8*), ABISELECT(640,352), "S7863C6");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(112,56), "S7863C6");
    check_base_class_offset(lv, (S7863C10*)(S7863C8*), ABISELECT(112,56), "S7863C6");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*), ABISELECT(320,180), "S7863C6");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*), ABISELECT(368,208), "S7863C6");
    check_base_class_offset(lv, (S7863C8*), ABISELECT(112,56), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(384,212), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(432,240), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(432,240), "S7863C6");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*), ABISELECT(384,212), "S7863C6");
    check_field_offset(lv, s7863c6f0, ABISELECT(448,252), "S7863C6.s7863c6f0");
    test_class_info(&lv, &cd_S7863C6);
    dp->~S7863C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C6(Test_S7863C6, "S7863C6", ABISELECT(704,392));

#else // __cplusplus

extern void _ZN7S7863C6C1Ev();
extern void _ZN7S7863C6D2Ev();
Name_Map name_map_S7863C6[] = {
  NSPAIR(_ZN7S7863C6C1Ev),
  NSPAIR(_ZN7S7863C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
static Base_Class bases_S7863C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(464,260), //bcp->offset
    45, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(456,256), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(528,296), //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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(528,296), //bcp->offset
    57, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(512,288), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C3,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(640,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
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(688,380), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(688,380), //bcp->offset
    71, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(640,352), //bcp->offset
    63, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(320,180), //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(368,208), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(112,56), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(384,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(432,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(432,240), //bcp->offset
    33, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(384,212), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C6[];
extern void _ZN7S7863C6D1Ev();
extern void _ZN7S7863C6D0Ev();
extern void ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn320_N7S7863C6D1Ev,_ZThn180_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn320_N7S7863C6D0Ev,_ZThn180_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn512_N7S7863C6D1Ev,_ZThn288_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn512_N7S7863C6D0Ev,_ZThn288_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn528_N7S7863C6D1Ev,_ZThn296_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn528_N7S7863C6D0Ev,_ZThn296_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn640_N7S7863C6D1Ev,_ZThn352_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn640_N7S7863C6D0Ev,_ZThn352_N7S7863C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev)();
static  VTBL_ENTRY vtc_S7863C6[] = {
  ABISELECT(640,352),
  ABISELECT(528,296),
  ABISELECT(512,288),
  ABISELECT(456,256),
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&_ZN7S7863C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C6D0Ev,
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7863C6D1Ev,_ZThn180_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N7S7863C6D0Ev,_ZThn180_N7S7863C6D0Ev),
  ABISELECT(96,52),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev),
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev),
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev),
  ABISELECT(-456,-256),
  ABISELECT(8,4),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev),
  ABISELECT(-512,-288),
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev),
  ABISELECT(-528,-296),
  ABISELECT(-64,-36),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
  ABISELECT(-640,-352),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-640,-352),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev),
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C6[];
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__A__7S7863C6[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__A3__7S7863C6[] = {
  ABISELECT(464,260),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C5D1Ev,_ZThn260_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C5D0Ev,_ZThn260_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__A3__7S7863C6[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C3D1Ev,_ZThn260_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C3D0Ev,_ZThn260_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__A__7S7863C6[] = {
  ABISELECT(-464,-260),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C8__7S7863C6[] = {
  ABISELECT(344,200),
  ABISELECT(528,296),
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C8__7S7863C6[] = {
  ABISELECT(416,240),
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C8__A5__7S7863C6[] = {
  ABISELECT(352,204),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn352_N7S7863C5D1Ev,_ZThn204_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn352_N7S7863C5D0Ev,_ZThn204_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A5__7S7863C6[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn352_N8S7863C10D1Ev,_ZThn204_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn352_N8S7863C10D0Ev,_ZThn204_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C8__7S7863C6[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZThn416_N8S7863C10D1Ev,_ZThn240_N8S7863C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
extern void ABISELECT(_ZThn416_N8S7863C10D0Ev,_ZThn240_N8S7863C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C8__7S7863C6[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A6__7S7863C6[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn96_N7S7863C5D1Ev,_ZThn52_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn96_N7S7863C5D0Ev,_ZThn52_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C8__A6__7S7863C6[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8__7S7863C6[] = {
  ABISELECT(-416,-240),
  ABISELECT(-64,-36),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn352_N7S7863C8D1Ev,_ZThn204_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn352_N7S7863C8D0Ev,_ZThn204_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C8__7S7863C6[] = {
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn528_N7S7863C8D1Ev,_ZThn296_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn528_N7S7863C8D0Ev,_ZThn296_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8__7S7863C6[] = {
  ABISELECT(-528,-296),
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8__7S7863C6[] = {
  ABISELECT(-344,-200),
  ABISELECT(8,4),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8__7S7863C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-576,-324),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8__7S7863C6[] = {
  ABISELECT(96,52),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C6[] = {
  ABISELECT(144,84),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A2__7S7863C6[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A7__7S7863C6[] = {
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn20_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn20_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A7__7S7863C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A2__7S7863C6[] = {
  ABISELECT(-96,-56),
  ABISELECT(-64,-36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn20_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn20_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A2__7S7863C6[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__A__7S7863C6[] = {
  ABISELECT(-72,-44),
  ABISELECT(8,4),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn48_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn48_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C6[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn144_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn144_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__A__7S7863C6[] = {
  ABISELECT(-144,-84),
  ABISELECT(-64,-36),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__A__7S7863C6[] = {
  ABISELECT(96,56),
  ABISELECT(32,20),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn8_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn8_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__7S7863C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C6[] = {
  ABISELECT(16,8),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C6[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C6[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C6[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C6[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__A1__7S7863C6[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C6[] = {
  ABISELECT(64,36),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C6[] = {
  ABISELECT(-112,-56),
  ABISELECT(-176,-92),
  ABISELECT(-184,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C6[] = {
  ABISELECT(-224,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C6[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C6[] = {
  ABISELECT(160,84),
  ABISELECT(-64,-36),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C6[] = {
  ABISELECT(224,120),
  ABISELECT(224,120),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C6[] = {
  ABISELECT(184,96),
  ABISELECT(8,4),
  ABISELECT(184,96),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C6[] = {
  ABISELECT(176,92),
  ABISELECT(176,92),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C6[] = {
  ABISELECT(112,56),
  ABISELECT(-64,-36),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C6[] = {
  ABISELECT(-160,-84),
  ABISELECT(-224,-120),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
static  VTT_ENTRY vtt_S7863C6[] = {
  {&(_ZTV7S7863C6[7]),  7,77},
  {&(_tg__ZTV7S7863C3__A__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__A3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__A3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__A__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C8__7S7863C6[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C8__A5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C8__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A6__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C8__A6__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C8__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8__7S7863C6[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C9__A__7S7863C6[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A2__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A7__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A7__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A2__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A2__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__A__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__A__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__A__7S7863C6[4]),  4,6},
  {&(_ZTV7S7863C6[43]),  43,77},
  {&(_ZTV7S7863C6[48]),  48,77},
  {&(_ZTV7S7863C6[55]),  55,77},
  {&(_ZTV7S7863C6[61]),  61,77},
  {&(_ZTV7S7863C6[15]),  15,77},
  {&(_ZTV7S7863C6[69]),  69,77},
  {&(_ZTV7S7863C6[75]),  75,77},
  {&(_ZTV7S7863C6[24]),  24,77},
  {&(_ZTV7S7863C6[31]),  31,77},
  {&(_ZTV7S7863C6[37]),  37,77},
  {&(_tg__ZTV7S7863C5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__A1__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__A1__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C6[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C6[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C6[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C6[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C6[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7863C6[];
extern  VTBL_ENTRY _ZTV7S7863C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C6[];
static VTBL_ENTRY alt_thunk_names193[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D0Ev,_ZThn48_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7863C9D1Ev,_ZThn48_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D0Ev,_ZThn20_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C7D1Ev,_ZThn20_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D0Ev,_ZThn8_N7S7863C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7863C7D1Ev,_ZThn8_N7S7863C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C8D0Ev,_ZThn296_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C8D1Ev,_ZThn296_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C8D0Ev,_ZThn204_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C8D1Ev,_ZThn204_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D0Ev,_ZThn240_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N7S7863C8D1Ev,_ZThn240_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7863C10D0Ev,_ZThn240_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S7863C10D1Ev,_ZThn240_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7863C10D0Ev,_ZThn204_N8S7863C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S7863C10D1Ev,_ZThn204_N8S7863C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C3D0Ev,_ZThn260_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C3D1Ev,_ZThn260_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7863C5D0Ev,_ZThn4_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D0Ev,_ZThn20_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C5D0Ev,_ZThn52_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C5D0Ev,_ZThn204_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C5D0Ev,_ZThn260_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7863C5D1Ev,_ZThn4_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7863C5D1Ev,_ZThn20_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7863C5D1Ev,_ZThn52_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7863C5D1Ev,_ZThn204_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C5D1Ev,_ZThn260_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7863C6D0Ev,_ZThn352_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S7863C6D1Ev,_ZThn352_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7863C6D0Ev,_ZThn288_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N7S7863C6D1Ev,_ZThn288_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C6D0Ev,_ZThn296_N7S7863C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N7S7863C6D1Ev,_ZThn296_N7S7863C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C6 = {  "S7863C6", // class name
  bases_S7863C6, 21,
  &(vtc_S7863C6[0]), // expected_vtbl_contents
  &(vtt_S7863C6[0]), // expected_vtt_contents
  ABISELECT(704,392), // object size
  NSPAIRA(_ZTI7S7863C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7863C6),77, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C6),60, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names193,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C2  : virtual S7863C3 , virtual S7863C6 , virtual S7863C8 , virtual S19676C2 , S7863C9 {
  short s7863c2f0;
  void *s7863c2f1[2];
  ~S7863C2(); // tgen
  S7863C2(); // tgen
};
//SIG(-1 S7863C2) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} VBC5{ VBC4 VBC6{ VBC2 BC4 vd Fi} BC2 BC7{ VBC2 VBC8{ BC3 VBC4 VBC2 BC6 vd Fi} BC9{ VBC3 VBC2 BC4 vd Fp Fi FC3[3] Fi[7]} BC3 BC4 vd} BC8 vd Fs} VBC7 VBC10{ m FC11{} Fi[3]} BC8 Fs Fp[2]}


S7863C2 ::~S7863C2(){ note_dtor("S7863C2", this);} // tgen
S7863C2 ::S7863C2(){ note_ctor("S7863C2", this);} // tgen

static void Test_S7863C2()
{
  extern Class_Descriptor cd_S7863C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(68,155)];
    init_test(&cd_S7863C2, buf);
    S7863C2 *dp, &lv = *(dp=new (buf) S7863C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1072,616), "sizeof(S7863C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C2)");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C7 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(192,108), "S7863C2");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(192,108), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(88,52), "S7863C2");
    check_base_class_offset(lv, (S7863C3*)(S7863C8*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C8*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(88,52), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C6*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*)(S7863C6*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(696,392), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(704,396), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C6*), ABISELECT(704,396), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(240,136), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C6*), ABISELECT(240,136), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(720,404), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(768,432), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(768,432), "S7863C2");
    check_base_class_offset(lv, (S7863C9*)(S7863C8*)(S7863C6*), ABISELECT(720,404), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C8*), ABISELECT(720,404), "S7863C2");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(352,192), "S7863C2");
    check_base_class_offset(lv, (S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(352,192), "S7863C2");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*)(S7863C6*), ABISELECT(560,316), "S7863C2");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(608,344), "S7863C2");
    check_base_class_offset(lv, (S7863C8*)(S7863C6*), ABISELECT(352,192), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*)(S7863C6*), ABISELECT(624,348), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(672,376), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(672,376), "S7863C2");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C6*), ABISELECT(624,348), "S7863C2");
    check_base_class_offset(lv, (S7863C6*), ABISELECT(240,136), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(784,444), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C10*)(S7863C8*), ABISELECT(784,444), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*), ABISELECT(992,568), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*), ABISELECT(1040,596), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C8*), ABISELECT(784,444), "S7863C2");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(1048,600), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), 0, "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(48,28), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(48,28), "S7863C2");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*), 0, "S7863C2");
    check_field_offset(lv, s7863c2f0, ABISELECT(64,40), "S7863C2.s7863c2f0");
    check_field_offset(lv, s7863c2f1, ABISELECT(72,44), "S7863C2.s7863c2f1");
    test_class_info(&lv, &cd_S7863C2);
    dp->~S7863C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C2(Test_S7863C2, "S7863C2", ABISELECT(1072,616));

#else // __cplusplus

extern void _ZN7S7863C2C1Ev();
extern void _ZN7S7863C2D1Ev();
Name_Map name_map_S7863C2[] = {
  NSPAIR(_ZN7S7863C2C1Ev),
  NSPAIR(_ZN7S7863C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C6;
extern VTBL_ENTRY _ZTI7S7863C6[];
extern  VTBL_ENTRY _ZTV7S7863C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C6[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
static Base_Class bases_S7863C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(192,108), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(88,52), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(696,392), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(704,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(704,396), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(240,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(720,404), //bcp->offset
    -1, //bcp->virtual_function_table_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_S7863C5,    ABISELECT(768,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(768,432), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(720,404), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7863C10,    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
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(560,316), //bcp->offset
    47, //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
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(608,344), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(352,192), //bcp->offset
    39, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(672,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(672,376), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(624,348), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7863C6,    ABISELECT(240,136), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7863C5,    ABISELECT(784,444), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(784,444), //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
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(992,568), //bcp->offset
    105, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(1040,596), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(784,444), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(1048,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
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7863C9,    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
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C2[];
extern void _ZN7S7863C2D1Ev();
extern void _ZN7S7863C2D0Ev();
extern void ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn88_N7S7863C2D1Ev,_ZThn52_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn88_N7S7863C2D0Ev,_ZThn52_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7863C2D1Ev,_ZThn108_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7863C2D0Ev,_ZThn108_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn240_N7S7863C2D1Ev,_ZThn136_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn240_N7S7863C2D0Ev,_ZThn136_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn696_N7S7863C2D1Ev,_ZThn392_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn696_N7S7863C2D0Ev,_ZThn392_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn704_N7S7863C2D1Ev,_ZThn396_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn704_N7S7863C2D0Ev,_ZThn396_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn720_N7S7863C2D1Ev,_ZThn404_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn720_N7S7863C2D0Ev,_ZThn404_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn444_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn444_N7S7863C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev)();
static  VTBL_ENTRY vtc_S7863C2[] = {
  ABISELECT(1048,600),
  ABISELECT(784,444),
  ABISELECT(720,404),
  ABISELECT(704,396),
  ABISELECT(240,136),
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&_ZN7S7863C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C2D0Ev,
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev),
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev),
  ABISELECT(-240,-136),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev),
  ABISELECT(-560,-316),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-608,-344),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev),
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
  ABISELECT(-704,-396),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-704,-396),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev),
  ABISELECT(-720,-404),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-720,-404),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-768,-432),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev),
  ABISELECT(-784,-444),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-784,-444),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev),
  ABISELECT(-992,-568),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1040,-596),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C2[];
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C2[] = {
  ABISELECT(88,52),
  ABISELECT(192,108),
  ABISELECT(696,392),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A3__7S7863C2[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A10__7S7863C2[] = {
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn144_N7S7863C5D1Ev,_ZThn80_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn144_N7S7863C5D0Ev,_ZThn80_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A10__7S7863C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn40_N7S7863C7D1Ev,_ZThn24_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn40_N7S7863C7D0Ev,_ZThn24_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A3__7S7863C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,56),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn144_N7S7863C7D1Ev,_ZThn80_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn144_N7S7863C7D0Ev,_ZThn80_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A3__7S7863C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn696_N7S7863C9D1Ev,_ZThn392_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn696_N7S7863C9D0Ev,_ZThn392_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__A__7S7863C2[] = {
  ABISELECT(-696,-392),
  ABISELECT(-504,-284),
  ABISELECT(-696,-392),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn192_N7S7863C9D1Ev,_ZThn108_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn192_N7S7863C9D0Ev,_ZThn108_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn88_N7S7863C9D1Ev,_ZThn52_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn88_N7S7863C9D0Ev,_ZThn52_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__A__7S7863C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(104,56),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__A__7S7863C2[] = {
  ABISELECT(40,24),
  ABISELECT(144,80),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C2[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C2[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C2[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C6D1Ev();
extern void _ZN7S7863C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C6__7S7863C2[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&_ZN7S7863C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C6D0Ev,
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C37S7863C6__A1__7S7863C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C2[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C2[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C2[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C2[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C2[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C6__7S7863C2[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C6__7S7863C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C6__7S7863C2[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C6__7S7863C2[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C8__7S7863C6__7S7863C2[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C6__7S7863C2[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C2[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C6__7S7863C2[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C2[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C2[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C2[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C2[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C2[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C2[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C2[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C2[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C2[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C2[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C2[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C2[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C2[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C2[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C2[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C2[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C8__A1__7S7863C2[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C8__A1__7S7863C2[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C2[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C2[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C2[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C2[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A9__7S7863C2[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C2[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C2[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
static  VTT_ENTRY vtt_S7863C2[] = {
  {&(_ZTV7S7863C2[10]),  10,114},
  {&(_tg__ZTV7S7863C9__A__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A3__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A10__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A10__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A3__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__A__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__A__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__A__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__A__7S7863C2[4]),  4,6},
  {&(_ZTV7S7863C2[22]),  22,114},
  {&(_ZTV7S7863C2[27]),  27,114},
  {&(_ZTV7S7863C2[37]),  37,114},
  {&(_ZTV7S7863C2[73]),  73,114},
  {&(_ZTV7S7863C2[80]),  80,114},
  {&(_ZTV7S7863C2[45]),  45,114},
  {&(_ZTV7S7863C2[88]),  88,114},
  {&(_ZTV7S7863C2[94]),  94,114},
  {&(_ZTV7S7863C2[49]),  49,114},
  {&(_ZTV7S7863C2[54]),  54,114},
  {&(_ZTV7S7863C2[61]),  61,114},
  {&(_ZTV7S7863C2[67]),  67,114},
  {&(_ZTV7S7863C2[103]),  103,114},
  {&(_ZTV7S7863C2[107]),  107,114},
  {&(_ZTV7S7863C2[112]),  112,114},
  {&(_ZTV7S7863C2[16]),  16,114},
  {&(_tg__ZTV7S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C6__7S7863C2[7]),  7,9},
  {&(_tg__ZTV7S7863C37S7863C6__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C87S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C97S7863C6__A1__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C6__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C3__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C8__7S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C9__7S7863C6__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__A__7S7863C6__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C2[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C8__A1__7S7863C2[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A9__7S7863C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C8__A1__7S7863C2[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8__A1__7S7863C2[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C2[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C2[];
extern  VTBL_ENTRY _ZTV7S7863C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C2[];
static VTBL_ENTRY alt_thunk_names194[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C9D0Ev,_ZThn108_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C9D1Ev,_ZThn108_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C9D0Ev,_ZThn52_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C9D0Ev,_ZThn392_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C9D1Ev,_ZThn52_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C9D1Ev,_ZThn392_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C7D0Ev,_ZThn80_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C7D1Ev,_ZThn80_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7863C7D0Ev,_ZThn24_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7863C7D1Ev,_ZThn24_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C5D0Ev,_ZThn80_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7863C5D1Ev,_ZThn80_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn444_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn444_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7863C2D0Ev,_ZThn404_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N7S7863C2D1Ev,_ZThn404_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7863C2D0Ev,_ZThn396_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn704_N7S7863C2D1Ev,_ZThn396_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7863C2D0Ev,_ZThn136_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7863C2D1Ev,_ZThn136_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C2D0Ev,_ZThn108_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7863C2D1Ev,_ZThn108_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C2D0Ev,_ZThn392_N7S7863C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C2D0Ev,_ZThn52_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn696_N7S7863C2D1Ev,_ZThn392_N7S7863C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7863C2D1Ev,_ZThn52_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C2 = {  "S7863C2", // class name
  bases_S7863C2, 32,
  &(vtc_S7863C2[0]), // expected_vtbl_contents
  &(vtt_S7863C2[0]), // expected_vtt_contents
  ABISELECT(1072,616), // object size
  NSPAIRA(_ZTI7S7863C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7863C2),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C2),101, //virtual table table var
  31, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names194,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7863C1  : S7863C2 {
  ::S19676C9 s7863c1f0;
  short s7863c1f1;
  virtual  ~S7863C1(); // _ZN7S7863C1D2Ev
  S7863C1(); // tgen
};
//SIG(1 S7863C1) C1{ BC2{ VBC3{ VBC4{ vd m Fp Fi Fc FD} BC5{ VBC4 vd} Fp[10] Fi FL} VBC6{ VBC5 VBC7{ VBC3 BC5 vd Fi} BC3 BC8{ VBC3 VBC9{ BC4 VBC5 VBC3 BC7 vd Fi} BC10{ VBC4 VBC3 BC5 vd Fp Fi FC4[3] Fi[7]} BC4 BC5 vd} BC9 vd Fs} VBC8 VBC11{ m FC12{} Fi[3]} BC9 Fs Fp[2]} vd FC4 Fs}


 S7863C1 ::~S7863C1(){ note_dtor("S7863C1", this);}
S7863C1 ::S7863C1(){ note_ctor("S7863C1", this);} // tgen

static void Test_S7863C1()
{
  extern Class_Descriptor cd_S7863C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(72,163)];
    init_test(&cd_S7863C1, buf);
    S7863C1 *dp, &lv = *(dp=new (buf) S7863C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1136,648), "sizeof(S7863C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7863C1)");
    /*is_ambiguous_... S7863C1::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C7 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C3*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(256,140), "S7863C1");
    check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C10*)(S7863C8*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C8*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C5*)(S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(256,140), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C2*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*), ABISELECT(152,84), "S7863C1");
    check_base_class_offset(lv, (S7863C3*)(S7863C8*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*), ABISELECT(152,84), "S7863C1");
    check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C8*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C10*)(S7863C8*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C9*)(S7863C2*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(152,84), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C6*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*)(S7863C6*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C9*)(S7863C2*), ABISELECT(760,424), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*), ABISELECT(768,428), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C7 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C6*), ABISELECT(768,428), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C3*)(S7863C6*), ABISELECT(304,168), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C3 */ AMB_check_base_class_offset(lv, (S7863C3*)(S7863C6*), ABISELECT(304,168), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*), ABISELECT(784,436), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*), ABISELECT(832,464), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*), ABISELECT(832,464), "S7863C1");
    check_base_class_offset(lv, (S7863C9*)(S7863C8*)(S7863C6*), ABISELECT(784,436), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C8*), ABISELECT(784,436), "S7863C1");
    /*is_ambiguous_... S7863C10::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(416,224), "S7863C1");
    check_base_class_offset(lv, (S7863C10*)(S7863C8*)(S7863C6*), ABISELECT(416,224), "S7863C1");
    /*is_ambiguous_... S7863C8::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*)(S7863C6*), ABISELECT(624,348), "S7863C1");
    /*is_ambiguous_... S7863C8::S7863C5 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*)(S7863C6*), ABISELECT(672,376), "S7863C1");
    check_base_class_offset(lv, (S7863C8*)(S7863C6*), ABISELECT(416,224), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*)(S7863C6*), ABISELECT(688,380), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(736,408), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*)(S7863C6*), ABISELECT(736,408), "S7863C1");
    /*is_ambiguous_... S7863C6::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C6*), ABISELECT(688,380), "S7863C1");
    check_base_class_offset(lv, (S7863C6*)(S7863C2*), ABISELECT(304,168), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C10*)(S7863C8*), ABISELECT(848,476), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C10*)(S7863C8*), ABISELECT(848,476), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C8*), ABISELECT(1056,600), "S7863C1");
    /*is_ambiguous_... S7863C1::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C8*), ABISELECT(1104,628), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C8 */ AMB_check_base_class_offset(lv, (S7863C8*)(S7863C2*), ABISELECT(848,476), "S7863C1");
    check_base_class_offset(lv, (S19676C2*)(S7863C2*), ABISELECT(1112,632), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S7863C9*)(S7863C2*), 0, "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C5*)(S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(48,28), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C7*)(S7863C9*)(S7863C2*), ABISELECT(48,28), "S7863C1");
    /*is_ambiguous_... S7863C2::S7863C9 */ AMB_check_base_class_offset(lv, (S7863C9*)(S7863C2*), 0, "S7863C1");
    check_base_class_offset(lv, (S7863C2*), 0, "S7863C1");
    check_field_offset(lv, s7863c1f0, ABISELECT(96,52), "S7863C1.s7863c1f0");
    check_field_offset(lv, s7863c1f1, ABISELECT(144,80), "S7863C1.s7863c1f1");
    test_class_info(&lv, &cd_S7863C1);
    dp->~S7863C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7863C1(Test_S7863C1, "S7863C1", ABISELECT(1136,648));

#else // __cplusplus

extern void _ZN7S7863C1C1Ev();
extern void _ZN7S7863C1D2Ev();
Name_Map name_map_S7863C1[] = {
  NSPAIR(_ZN7S7863C1C1Ev),
  NSPAIR(_ZN7S7863C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C3;
extern VTBL_ENTRY _ZTI7S7863C3[];
extern  VTBL_ENTRY _ZTV7S7863C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C3[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C6;
extern VTBL_ENTRY _ZTI7S7863C6[];
extern  VTBL_ENTRY _ZTV7S7863C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C6[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C10;
extern VTBL_ENTRY _ZTI8S7863C10[];
extern  VTBL_ENTRY _ZTV8S7863C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7863C10[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C8;
extern VTBL_ENTRY _ZTI7S7863C8[];
extern  VTBL_ENTRY _ZTV7S7863C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C8[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S7863C5;
extern VTBL_ENTRY _ZTI7S7863C5[];
extern  VTBL_ENTRY _ZTV7S7863C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C5[];
extern Class_Descriptor cd_S7863C7;
extern VTBL_ENTRY _ZTI7S7863C7[];
extern  VTBL_ENTRY _ZTV7S7863C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C7[];
extern Class_Descriptor cd_S7863C9;
extern VTBL_ENTRY _ZTI7S7863C9[];
extern  VTBL_ENTRY _ZTV7S7863C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C9[];
extern Class_Descriptor cd_S7863C2;
extern VTBL_ENTRY _ZTI7S7863C2[];
extern  VTBL_ENTRY _ZTV7S7863C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C2[];
static Base_Class bases_S7863C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(256,140), //bcp->offset
    24, //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
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(152,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(152,84), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(760,424), //bcp->offset
    69, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(768,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(768,428), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(304,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7863C3,    ABISELECT(304,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(784,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(832,464), //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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(832,464), //bcp->offset
    90, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(784,436), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(416,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //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
    13, //immediately_derived
  0, 0},
  {&cd_S7863C10,    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
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(624,348), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(672,376), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(416,224), //bcp->offset
    39, //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
    17, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(688,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(736,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(736,408), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7863C9,    ABISELECT(688,380), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7863C6,    ABISELECT(304,168), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S7863C5,    ABISELECT(848,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7863C10,    ABISELECT(848,476), //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
    24, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19676C9,    ABISELECT(1056,600), //bcp->offset
    105, //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
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(1104,628), //bcp->offset
    109, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7863C8,    ABISELECT(848,476), //bcp->offset
    96, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(1112,632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    31, //immediately_derived
  0, 0},
  {&cd_S7863C5,    ABISELECT(48,28), //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
    29, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7863C7,    ABISELECT(48,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S7863C9,    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
    31, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7863C2,    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
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7863C1[];
extern void _ZN7S7863C1D1Ev();
extern void _ZN7S7863C1D0Ev();
extern void ABISELECT(_ZThn48_N7S7863C1D1Ev,_ZThn28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C1D0Ev,_ZThn28_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S7863C1D1Ev,_ZThn84_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S7863C1D0Ev,_ZThn84_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C1D1Ev,_ZTv0_n12_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C1D1Ev,_ZThn140_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C1D0Ev,_ZTv0_n12_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C1D0Ev,_ZThn140_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C1D1Ev,_ZTv0_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S7863C1D1Ev,_ZThn168_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C1D0Ev,_ZTv0_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S7863C1D0Ev,_ZThn168_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n64_N7S7863C1D1Ev,_ZTvn56_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7863C1D0Ev,_ZTvn56_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C1D1Ev,_ZTvn180_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C1D0Ev,_ZTvn180_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C1D1Ev,_ZTvn208_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C1D0Ev,_ZTvn208_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C1D1Ev,_ZTvn212_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C1D0Ev,_ZTvn212_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C1D1Ev,_ZTvn240_n32_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C1D0Ev,_ZTvn240_n32_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn760_N7S7863C1D1Ev,_ZThn424_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn760_N7S7863C1D0Ev,_ZThn424_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C1D1Ev,_ZTv0_n20_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn768_N7S7863C1D1Ev,_ZThn428_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C1D0Ev,_ZTv0_n20_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn768_N7S7863C1D0Ev,_ZThn428_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C1D1Ev,_ZTv0_n24_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn784_N7S7863C1D1Ev,_ZThn436_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C1D0Ev,_ZTv0_n24_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn784_N7S7863C1D0Ev,_ZThn436_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N7S7863C1D1Ev,_ZTvn28_n24_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C1D0Ev,_ZTvn28_n24_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTv0_n56_N7S7863C1D1Ev,_ZTv0_n28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZThn848_N7S7863C1D1Ev,_ZThn476_N7S7863C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7863C1D0Ev,_ZTv0_n28_N7S7863C1D0Ev)();
extern void ABISELECT(_ZThn848_N7S7863C1D0Ev,_ZThn476_N7S7863C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn208_n56_N7S7863C1D1Ev,_ZTvn124_n28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7863C1D0Ev,_ZTvn124_n28_N7S7863C1D0Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C1D1Ev,_ZTvn152_n28_N7S7863C1D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C1D0Ev,_ZTvn152_n28_N7S7863C1D0Ev)();
static  VTBL_ENTRY vtc_S7863C1[] = {
  ABISELECT(1112,632),
  ABISELECT(848,476),
  ABISELECT(784,436),
  ABISELECT(768,428),
  ABISELECT(304,168),
  ABISELECT(152,84),
  ABISELECT(256,140),
  ABISELECT(760,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&_ZN7S7863C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C1D0Ev,
  ABISELECT(104,56),
  ABISELECT(208,112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C1D1Ev,_ZThn28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C1D0Ev,_ZThn28_N7S7863C1D0Ev),
  ABISELECT(-152,-84),
  ABISELECT(104,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C1D1Ev,_ZTv0_n12_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C1D0Ev,_ZTv0_n12_N7S7863C1D0Ev),
  ABISELECT(-304,-168),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C1D1Ev,_ZTv0_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C1D0Ev,_ZTv0_n32_N7S7863C1D0Ev),
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C1D1Ev,_ZTvn56_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C1D0Ev,_ZTvn56_n32_N7S7863C1D0Ev),
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C1D1Ev,_ZTvn180_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C1D0Ev,_ZTvn180_n32_N7S7863C1D0Ev),
  ABISELECT(-416,-236),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C1D1Ev,_ZTvn208_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C1D0Ev,_ZTvn208_n32_N7S7863C1D0Ev),
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C1D1Ev,_ZTvn212_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C1D0Ev,_ZTvn212_n32_N7S7863C1D0Ev),
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C1D1Ev,_ZTvn240_n32_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C1D0Ev,_ZTvn240_n32_N7S7863C1D0Ev),
  ABISELECT(-760,-424),
  ABISELECT(-504,-284),
  ABISELECT(-760,-424),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev),
  ABISELECT(-768,-428),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C1D1Ev,_ZTv0_n20_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C1D0Ev,_ZTv0_n20_N7S7863C1D0Ev),
  ABISELECT(-784,-436),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C1D1Ev,_ZTv0_n24_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C1D0Ev,_ZTv0_n24_N7S7863C1D0Ev),
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-832,-464),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C1D1Ev,_ZTvn28_n24_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C1D0Ev,_ZTvn28_n24_N7S7863C1D0Ev),
  ABISELECT(-848,-476),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C1D1Ev,_ZTv0_n28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C1D0Ev,_ZTv0_n28_N7S7863C1D0Ev),
  ABISELECT(-1056,-600),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C1D1Ev,_ZTvn124_n28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C1D0Ev,_ZTvn124_n28_N7S7863C1D0Ev),
  ABISELECT(-848,-488),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7863C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C1D1Ev,_ZTvn152_n28_N7S7863C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C1D0Ev,_ZTvn152_n28_N7S7863C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7863C1[];
extern void _ZN7S7863C2D1Ev();
extern void _ZN7S7863C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C2__7S7863C1[] = {
  ABISELECT(1112,632),
  ABISELECT(848,476),
  ABISELECT(784,436),
  ABISELECT(768,428),
  ABISELECT(304,168),
  ABISELECT(152,84),
  ABISELECT(256,140),
  ABISELECT(760,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&_ZN7S7863C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C2D0Ev,
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(152,84),
  ABISELECT(256,140),
  ABISELECT(760,424),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C2__A3__7S7863C1[] = {
  ABISELECT(104,56),
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[] = {
  ABISELECT(208,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn112_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn112_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C97S7863C2__A3__7S7863C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(104,56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S7863C7D1Ev,_ZThn112_N7S7863C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S7863C7D0Ev,_ZThn112_N7S7863C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C97S7863C2__A3__7S7863C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn760_N7S7863C9D1Ev,_ZThn424_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn760_N7S7863C9D0Ev,_ZThn424_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(-760,-424),
  ABISELECT(-504,-284),
  ABISELECT(-760,-424),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C9D1Ev,_ZThn140_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C9D0Ev,_ZThn140_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn152_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn152_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(104,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C97S7863C2__A2__7S7863C1[] = {
  ABISELECT(104,56),
  ABISELECT(208,112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S7863C2D1Ev,_ZThn84_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S7863C2D0Ev,_ZThn84_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C2__7S7863C1[] = {
  ABISELECT(-152,-84),
  ABISELECT(104,56),
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C2D1Ev,_ZThn140_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7863C2D0Ev,_ZThn140_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C2__7S7863C1[] = {
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S7863C2D1Ev,_ZThn168_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S7863C2D0Ev,_ZThn168_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C6__7S7863C2__7S7863C1[] = {
  ABISELECT(-304,-168),
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn760_N7S7863C2D1Ev,_ZThn424_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn760_N7S7863C2D0Ev,_ZThn424_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-760,-424),
  ABISELECT(-504,-284),
  ABISELECT(-760,-424),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn768_N7S7863C2D1Ev,_ZThn428_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn768_N7S7863C2D0Ev,_ZThn428_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C2__7S7863C1[] = {
  ABISELECT(-768,-428),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-768,-428),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C87S7863C6__7S7863C2__7S7863C1[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-416,-224),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D1Ev,_ZTvn56_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n64_N7S7863C2D0Ev,_ZTvn56_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn436_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn436_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C2__7S7863C1[] = {
  ABISELECT(-784,-436),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-784,-436),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-832,-464),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D1Ev,_ZTvn28_n24_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C2D0Ev,_ZTvn28_n24_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7863C87S7863C6__A2__7S7863C2__7S7863C1[] = {
  ABISELECT(-624,-348),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D1Ev,_ZTvn180_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn320_n64_N7S7863C2D0Ev,_ZTvn180_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2__7S7863C1[] = {
  ABISELECT(-416,-236),
  ABISELECT(-672,-376),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D1Ev,_ZTvn208_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn368_n64_N7S7863C2D0Ev,_ZTvn208_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C6__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-688,-380),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D1Ev,_ZTvn212_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn384_n64_N7S7863C2D0Ev,_ZTvn212_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-736,-408),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D1Ev,_ZTvn240_n32_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn432_n64_N7S7863C2D0Ev,_ZTvn240_n32_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn848_N7S7863C2D1Ev,_ZThn476_N7S7863C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev)();
extern void ABISELECT(_ZThn848_N7S7863C2D0Ev,_ZThn476_N7S7863C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C8__A1__7S7863C2__7S7863C1[] = {
  ABISELECT(-848,-476),
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  ABISELECT(-848,-476),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C97S7863C8__A4__7S7863C2__7S7863C1[] = {
  ABISELECT(-1056,-600),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D1Ev,_ZTvn124_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n56_N7S7863C2D0Ev,_ZTvn124_n28_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A9__7S7863C2__7S7863C1[] = {
  ABISELECT(-848,-488),
  ABISELECT(-1104,-628),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D1Ev,_ZTvn152_n28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn256_n56_N7S7863C2D0Ev,_ZTvn152_n28_N7S7863C2D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A3__7S7863C2__7S7863C1[] = {
  ABISELECT(104,56),
  ABISELECT(208,112),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D1Ev,_ZThn28_N7S7863C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C2D0Ev,_ZThn28_N7S7863C2D0Ev),
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C1[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C3__7S7863C1[] = {
  ABISELECT(104,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C3__7S7863C1[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C6D1Ev();
extern void _ZN7S7863C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C6__7S7863C1[] = {
  ABISELECT(480,268),
  ABISELECT(-152,-84),
  ABISELECT(464,260),
  ABISELECT(456,256),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&_ZN7S7863C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C6D0Ev,
};
extern void _ZN7S7863C3D1Ev();
extern void _ZN7S7863C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C37S7863C6__A1__7S7863C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&_ZN7S7863C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C3D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C1[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[] = {
  ABISELECT(-160,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C1[] = {
  ABISELECT(-416,-236),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C1[] = {
  ABISELECT(416,236),
  ABISELECT(416,236),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(264,140),
  ABISELECT(104,56),
  ABISELECT(264,140),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(160,84),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-368,-212),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
extern void ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-344,-200),
  ABISELECT(-504,-284),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C1[] = {
  ABISELECT(-416,-236),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[] = {
  ABISELECT(-480,-268),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C1[] = {
  ABISELECT(584,324),
  ABISELECT(104,56),
  ABISELECT(584,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C1[] = {
  ABISELECT(480,268),
  ABISELECT(480,268),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(-72,-44),
  ABISELECT(-504,-284),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(432,240),
  ABISELECT(432,240),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(536,296),
  ABISELECT(104,56),
  ABISELECT(536,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C6__7S7863C1[] = {
  ABISELECT(-456,-256),
  ABISELECT(-504,-284),
  ABISELECT(-456,-256),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C6__7S7863C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D1Ev,_ZTv0_n12_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C6D0Ev,_ZTv0_n12_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C6__7S7863C1[] = {
  ABISELECT(-464,-260),
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  ABISELECT(-464,-260),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C6__7S7863C1[] = {
  ABISELECT(152,84),
  ABISELECT(104,56),
  ABISELECT(152,84),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C8__7S7863C6__7S7863C1[] = {
  ABISELECT(344,200),
  ABISELECT(368,212),
  ABISELECT(-264,-140),
  ABISELECT(-160,-84),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D1Ev,_ZThn56_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7863C6D0Ev,_ZThn56_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev)();
extern void ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C6__7S7863C1[] = {
  ABISELECT(-480,-268),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(-480,-268),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D1Ev,_ZTvn28_n24_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C6D0Ev,_ZTvn28_n24_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C1[] = {
  ABISELECT(-416,-236),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D1Ev,_ZThn208_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn368_N7S7863C6D0Ev,_ZThn208_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__A__7S7863C6__7S7863C1[] = {
  ABISELECT(-536,-296),
  ABISELECT(-432,-240),
  ABISELECT(72,44),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D1Ev,_ZThn212_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn384_N7S7863C6D0Ev,_ZThn212_N7S7863C6D0Ev),
};
extern void ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev)();
extern void ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C1[] = {
  ABISELECT(-584,-324),
  ABISELECT(-480,-268),
  ABISELECT(-432,-240),
  (VTBL_ENTRY)&(_ZTI7S7863C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D1Ev,_ZThn240_N7S7863C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn432_N7S7863C6D0Ev,_ZThn240_N7S7863C6D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C1[] = {
  ABISELECT(-504,-284),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C5__A1__7S7863C1[] = {
  ABISELECT(504,284),
  ABISELECT(504,284),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C1[] = {
  ABISELECT(-616,-344),
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C7__A2__7S7863C1[] = {
  ABISELECT(-512,-288),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C1[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C7__7S7863C1[] = {
  ABISELECT(616,344),
  ABISELECT(104,56),
  ABISELECT(616,344),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C7__7S7863C1[] = {
  ABISELECT(512,288),
  ABISELECT(512,288),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void _ZN7S7863C9D1Ev();
extern void _ZN7S7863C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C1[] = {
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&_ZN7S7863C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C9D0Ev,
};
extern void _ZN7S7863C7D1Ev();
extern void _ZN7S7863C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__A1__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&_ZN7S7863C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C7D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C1[] = {
  ABISELECT(-576,-324),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C1[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C1[] = {
  ABISELECT(680,380),
  ABISELECT(104,56),
  ABISELECT(680,380),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C1[] = {
  ABISELECT(576,324),
  ABISELECT(576,324),
  (VTBL_ENTRY)&(_ZTI7S7863C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__7S7863C9__7S7863C1[] = {
  ABISELECT(24,12),
  ABISELECT(-504,-284),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__7S7863C9__7S7863C1[] = {
  ABISELECT(528,296),
  ABISELECT(528,296),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C9__7S7863C1[] = {
  ABISELECT(632,352),
  ABISELECT(104,56),
  ABISELECT(632,352),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev),
};
extern void ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C7__7S7863C9__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7863C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D1Ev,_ZThn28_N7S7863C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7863C9D0Ev,_ZThn28_N7S7863C9D0Ev),
};
extern void _ZN7S7863C8D1Ev();
extern void _ZN7S7863C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C8__A1__7S7863C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-64,-40),
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&_ZN7S7863C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C8D0Ev,
};
extern void _ZN8S7863C10D1Ev();
extern void _ZN8S7863C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7863C107S7863C8__A1__7S7863C1[] = {
  ABISELECT(-696,-392),
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&_ZN8S7863C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7863C10D0Ev,
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C1[] = {
  ABISELECT(-592,-336),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D1Ev,_ZTv0_n12_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S7863C10D0Ev,_ZTv0_n12_N8S7863C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C1[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI8S7863C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D1Ev,_ZTv0_n16_N8S7863C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S7863C10D0Ev,_ZTv0_n16_N8S7863C10D0Ev),
};
extern void _ZN7S7863C5D1Ev();
extern void _ZN7S7863C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7863C57S7863C8__A9__7S7863C1[] = {
  ABISELECT(-848,-488),
  0,
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&_ZN7S7863C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7863C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C1[] = {
  ABISELECT(848,488),
  ABISELECT(848,488),
  (VTBL_ENTRY)&(_ZTI7S7863C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C3__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(696,392),
  ABISELECT(104,56),
  ABISELECT(696,392),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(592,336),
  ABISELECT(592,336),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D1Ev,_ZTv0_n12_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7863C8D0Ev,_ZTv0_n12_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C9__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(64,40),
  ABISELECT(-632,-352),
  ABISELECT(-528,-296),
  ABISELECT(-24,-12),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(88,52),
  ABISELECT(-504,-284),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(-680,-380),
  ABISELECT(-576,-324),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D1Ev,_ZTvn28_n24_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N7S7863C8D0Ev,_ZTvn28_n24_N7S7863C8D0Ev),
};
extern void ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C1[] = {
  ABISELECT(-848,-488),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI7S7863C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D1Ev,_ZThn152_N7S7863C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn256_N7S7863C8D0Ev,_ZThn152_N7S7863C8D0Ev),
};
static  VTT_ENTRY vtt_S7863C1[] = {
  {&(_ZTV7S7863C1[10]),  10,114},
  {&(_tg__ZTV7S7863C2__7S7863C1[10]),  10,12},
  {&(_tg__ZTV7S7863C97S7863C2__A2__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C2__A3__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C2__A10__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C97S7863C2__A3__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C97S7863C2__A3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C97S7863C2__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C97S7863C2__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C97S7863C2__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C97S7863C2__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C3__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C6__7S7863C2__7S7863C1[8]),  8,10},
  {&(_tg__ZTV7S7863C5__A1__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C2__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C87S7863C6__7S7863C2__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C9__7S7863C2__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C97S7863C87S7863C6__A2__7S7863C2__7S7863C1[2]),  2,4},
  {&(_tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C97S7863C6__A1__7S7863C2__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C8__A1__7S7863C2__7S7863C1[7]),  7,9},
  {&(_tg__ZTV8S19676C97S7863C8__A4__7S7863C2__7S7863C1[2]),  2,4},
  {&(_tg__ZTV7S7863C57S7863C8__A9__7S7863C2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C77S7863C9__A3__7S7863C2__7S7863C1[4]),  4,6},
  {&(_ZTV7S7863C1[22]),  22,114},
  {&(_ZTV7S7863C1[27]),  27,114},
  {&(_ZTV7S7863C1[37]),  37,114},
  {&(_ZTV7S7863C1[73]),  73,114},
  {&(_ZTV7S7863C1[80]),  80,114},
  {&(_ZTV7S7863C1[45]),  45,114},
  {&(_ZTV7S7863C1[88]),  88,114},
  {&(_ZTV7S7863C1[94]),  94,114},
  {&(_ZTV7S7863C1[49]),  49,114},
  {&(_ZTV7S7863C1[54]),  54,114},
  {&(_ZTV7S7863C1[61]),  61,114},
  {&(_ZTV7S7863C1[67]),  67,114},
  {&(_ZTV7S7863C1[103]),  103,114},
  {&(_ZTV7S7863C1[107]),  107,114},
  {&(_ZTV7S7863C1[112]),  112,114},
  {&(_ZTV7S7863C1[16]),  16,114},
  {&(_tg__ZTV7S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C6__7S7863C1[7]),  7,9},
  {&(_tg__ZTV7S7863C37S7863C6__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C57S7863C37S7863C6__A3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C37S7863C6__A3__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C37S7863C6__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C87S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C87S7863C6__A5__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C87S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C87S7863C6__A6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C87S7863C6__A6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C87S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C87S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C87S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C87S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C97S7863C6__A1__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C97S7863C6__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C97S7863C6__A7__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C97S7863C6__A2__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C97S7863C6__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C97S7863C6__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C97S7863C6__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C97S7863C6__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C97S7863C6__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C6__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C3__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C8__7S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C9__7S7863C6__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A6__7S7863C6__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__A__7S7863C6__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A2__7S7863C6__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C5__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C7__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C7__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C7__A2__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C7__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C7__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C1[5]),  5,7},
  {&(_tg__ZTV7S7863C77S7863C9__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C77S7863C9__A4__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C77S7863C9__A4__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C77S7863C9__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C77S7863C9__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C5__7S7863C9__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__7S7863C9__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C9__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C7__7S7863C9__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C8__A1__7S7863C1[6]),  6,8},
  {&(_tg__ZTV8S7863C107S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C58S7863C107S7863C8__A8__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C58S7863C107S7863C8__A8__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S7863C107S7863C8__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__8S7863C107S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C57S7863C8__A9__7S7863C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__7S7863C57S7863C8__A9__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C3__7S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__7S7863C8__A1__7S7863C1[3]),  3,5},
  {&(_tg__ZTV7S7863C9__7S7863C8__A1__7S7863C1[6]),  6,8},
  {&(_tg__ZTV7S7863C5__A1__7S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C77S7863C9__7S7863C8__A1__7S7863C1[4]),  4,6},
  {&(_tg__ZTV7S7863C5__A__7S7863C8__A1__7S7863C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S7863C1[];
extern  VTBL_ENTRY _ZTV7S7863C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7863C1[];
static VTBL_ENTRY alt_thunk_names195[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D0Ev,_ZTv0_n24_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D0Ev,_ZThn268_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C6D1Ev,_ZTv0_n24_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7863C6D1Ev,_ZThn268_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D0Ev,_ZTv0_n20_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D0Ev,_ZThn260_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C6D1Ev,_ZTv0_n20_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn464_N7S7863C6D1Ev,_ZThn260_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D0Ev,_ZTv0_n16_N7S7863C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D0Ev,_ZThn256_N7S7863C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C6D1Ev,_ZTv0_n16_N7S7863C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn456_N7S7863C6D1Ev,_ZThn256_N7S7863C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D0Ev,_ZTv0_n16_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D0Ev,_ZThn200_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C8D1Ev,_ZTv0_n16_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn344_N7S7863C8D1Ev,_ZThn200_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D0Ev,_ZTv0_n24_N7S7863C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D0Ev,_ZThn212_N7S7863C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C8D1Ev,_ZTv0_n24_N7S7863C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7863C8D1Ev,_ZThn212_N7S7863C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D0Ev,_ZTv0_n12_N7S7863C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D0Ev,_ZThn56_N7S7863C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C3D1Ev,_ZTv0_n12_N7S7863C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C3D1Ev,_ZThn56_N7S7863C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D0Ev,_ZTv0_n28_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C2D0Ev,_ZThn476_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C2D1Ev,_ZTv0_n28_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C2D1Ev,_ZThn476_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D0Ev,_ZTv0_n24_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D0Ev,_ZThn436_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C2D1Ev,_ZTv0_n24_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C2D1Ev,_ZThn436_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D0Ev,_ZTv0_n20_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C2D0Ev,_ZThn428_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C2D1Ev,_ZTv0_n20_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C2D1Ev,_ZThn428_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D0Ev,_ZTv0_n32_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C2D0Ev,_ZThn168_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C2D1Ev,_ZTv0_n32_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C2D1Ev,_ZThn168_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D0Ev,_ZTv0_n12_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C2D0Ev,_ZThn140_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C2D1Ev,_ZTv0_n12_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C2D1Ev,_ZThn140_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D0Ev,_ZTv0_n16_N7S7863C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C2D0Ev,_ZThn424_N7S7863C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C2D0Ev,_ZThn84_N7S7863C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C2D1Ev,_ZTv0_n16_N7S7863C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C2D1Ev,_ZThn424_N7S7863C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C2D1Ev,_ZThn84_N7S7863C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D0Ev,_ZTv0_n12_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C9D0Ev,_ZThn140_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C9D1Ev,_ZTv0_n12_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C9D1Ev,_ZThn140_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D0Ev,_ZTv0_n16_N7S7863C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D0Ev,_ZThn44_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C9D0Ev,_ZThn84_N7S7863C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C9D0Ev,_ZThn424_N7S7863C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C9D1Ev,_ZTv0_n16_N7S7863C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7863C9D1Ev,_ZThn44_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C9D1Ev,_ZThn84_N7S7863C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C9D1Ev,_ZThn424_N7S7863C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D0Ev,_ZTv0_n12_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C7D0Ev,_ZThn112_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C7D1Ev,_ZTv0_n12_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C7D1Ev,_ZThn112_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D0Ev,_ZTv0_n16_N7S7863C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C7D0Ev,_ZThn56_N7S7863C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C7D1Ev,_ZTv0_n16_N7S7863C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C7D1Ev,_ZThn56_N7S7863C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D0Ev,_ZTv0_n12_N7S7863C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D0Ev,_ZThn56_N7S7863C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D0Ev,_ZThn112_N7S7863C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C5D1Ev,_ZTv0_n12_N7S7863C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7863C5D1Ev,_ZThn56_N7S7863C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7863C5D1Ev,_ZThn112_N7S7863C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C1D0Ev,_ZTv0_n28_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C1D0Ev,_ZThn476_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7863C1D1Ev,_ZTv0_n28_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn848_N7S7863C1D1Ev,_ZThn476_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C1D0Ev,_ZTv0_n24_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C1D0Ev,_ZThn436_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7863C1D1Ev,_ZTv0_n24_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn784_N7S7863C1D1Ev,_ZThn436_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C1D0Ev,_ZTv0_n20_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C1D0Ev,_ZThn428_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7863C1D1Ev,_ZTv0_n20_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn768_N7S7863C1D1Ev,_ZThn428_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C1D0Ev,_ZTv0_n32_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C1D0Ev,_ZThn168_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7863C1D1Ev,_ZTv0_n32_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S7863C1D1Ev,_ZThn168_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C1D0Ev,_ZTv0_n12_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C1D0Ev,_ZThn140_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7863C1D1Ev,_ZTv0_n12_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7863C1D1Ev,_ZThn140_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C1D0Ev,_ZTv0_n16_N7S7863C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C1D0Ev,_ZThn424_N7S7863C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C1D0Ev,_ZThn84_N7S7863C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7863C1D1Ev,_ZTv0_n16_N7S7863C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn760_N7S7863C1D1Ev,_ZThn424_N7S7863C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S7863C1D1Ev,_ZThn84_N7S7863C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7863C1 = {  "S7863C1", // class name
  bases_S7863C1, 33,
  &(vtc_S7863C1[0]), // expected_vtbl_contents
  &(vtt_S7863C1[0]), // expected_vtt_contents
  ABISELECT(1136,648), // object size
  NSPAIRA(_ZTI7S7863C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7863C1),114, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7863C1),118, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names195,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C4  {
  void *s7317c4f0;
  char s7317c4f1[5];
  __tsi64 s7317c4f2;
  void *s7317c4f3[2];
  virtual void  v4(); // _ZN7S7317C42v4Ev
  ~S7317C4(); // tgen
  S7317C4(); // tgen
};
//SIG(-1 S7317C4) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S7317C4 ::v4(){vfunc_called(this, "_ZN7S7317C42v4Ev");}
S7317C4 ::~S7317C4(){ note_dtor("S7317C4", this);} // tgen
S7317C4 ::S7317C4(){ note_ctor("S7317C4", this);} // tgen

static void Test_S7317C4()
{
  extern Class_Descriptor cd_S7317C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7317C4, buf);
    S7317C4 *dp, &lv = *(dp=new (buf) S7317C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7317C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C4)");
    check_field_offset(lv, s7317c4f0, ABISELECT(8,4), "S7317C4.s7317c4f0");
    check_field_offset(lv, s7317c4f1, ABISELECT(16,8), "S7317C4.s7317c4f1");
    check_field_offset(lv, s7317c4f2, ABISELECT(24,16), "S7317C4.s7317c4f2");
    check_field_offset(lv, s7317c4f3, ABISELECT(32,24), "S7317C4.s7317c4f3");
    test_class_info(&lv, &cd_S7317C4);
    dp->~S7317C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C4(Test_S7317C4, "S7317C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7317C4C1Ev();
extern void _ZN7S7317C4D1Ev();
Name_Map name_map_S7317C4[] = {
  NSPAIR(_ZN7S7317C4C1Ev),
  NSPAIR(_ZN7S7317C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7317C4[];
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY vtc_S7317C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C4[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
Class_Descriptor cd_S7317C4 = {  "S7317C4", // class name
  0,0,//no base classes
  &(vtc_S7317C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7317C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7317C4),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  S7317C3  : S7317C4 {
  ::S7317C4 s7317c3f0;
  char s7317c3f1[2];
  void *s7317c3f2;
  virtual void  v5(); // _ZN7S7317C32v5Ev
  virtual void  v6(); // _ZN7S7317C32v6Ev
  virtual void  v7(); // _ZN7S7317C32v7Ev
  ~S7317C3(); // tgen
  S7317C3(); // tgen
};
//SIG(-1 S7317C3) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S7317C3 ::v5(){vfunc_called(this, "_ZN7S7317C32v5Ev");}
void  S7317C3 ::v6(){vfunc_called(this, "_ZN7S7317C32v6Ev");}
void  S7317C3 ::v7(){vfunc_called(this, "_ZN7S7317C32v7Ev");}
S7317C3 ::~S7317C3(){ note_dtor("S7317C3", this);} // tgen
S7317C3 ::S7317C3(){ note_ctor("S7317C3", this);} // tgen

static void Test_S7317C3()
{
  extern Class_Descriptor cd_S7317C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S7317C3, buf);
    S7317C3 *dp, &lv = *(dp=new (buf) S7317C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S7317C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C3)");
    check_base_class_offset(lv, (S7317C4*), 0, "S7317C3");
    check_field_offset(lv, s7317c3f0, ABISELECT(48,32), "S7317C3.s7317c3f0");
    check_field_offset(lv, s7317c3f1, ABISELECT(96,64), "S7317C3.s7317c3f1");
    check_field_offset(lv, s7317c3f2, ABISELECT(104,68), "S7317C3.s7317c3f2");
    test_class_info(&lv, &cd_S7317C3);
    dp->~S7317C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C3(Test_S7317C3, "S7317C3", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S7317C3C1Ev();
extern void _ZN7S7317C3D1Ev();
Name_Map name_map_S7317C3[] = {
  NSPAIR(_ZN7S7317C3C1Ev),
  NSPAIR(_ZN7S7317C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
static Base_Class bases_S7317C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C3[];
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY vtc_S7317C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C3[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
Class_Descriptor cd_S7317C3 = {  "S7317C3", // class name
  bases_S7317C3, 1,
  &(vtc_S7317C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S7317C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7317C3),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  S7317C2  : virtual S7317C3 , virtual S7317C4 {
  int s7317c2f0;
  virtual void  v8(); // _ZN7S7317C22v8Ev
  ~S7317C2(); // tgen
  S7317C2(); // tgen
};
//SIG(-1 S7317C2) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S7317C2 ::v8(){vfunc_called(this, "_ZN7S7317C22v8Ev");}
S7317C2 ::~S7317C2(){ note_dtor("S7317C2", this);} // tgen
S7317C2 ::S7317C2(){ note_ctor("S7317C2", this);} // tgen

static void Test_S7317C2()
{
  extern Class_Descriptor cd_S7317C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S7317C2, buf);
    S7317C2 *dp, &lv = *(dp=new (buf) S7317C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S7317C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C2)");
    check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(16,8), "S7317C2");
    check_base_class_offset(lv, (S7317C3*), ABISELECT(16,8), "S7317C2");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*), ABISELECT(128,80), "S7317C2");
    check_field_offset(lv, s7317c2f0, ABISELECT(8,4), "S7317C2.s7317c2f0");
    test_class_info(&lv, &cd_S7317C2);
    dp->~S7317C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C2(Test_S7317C2, "S7317C2", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN7S7317C2C1Ev();
extern void _ZN7S7317C2D1Ev();
Name_Map name_map_S7317C2[] = {
  NSPAIR(_ZN7S7317C2C1Ev),
  NSPAIR(_ZN7S7317C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
static Base_Class bases_S7317C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7317C4,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C2[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY vtc_S7317C2[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7317C2[];
static  VTT_ENTRY vtt_S7317C2[] = {
  {&(_ZTV7S7317C2[4]),  4,19},
  {&(_ZTV7S7317C2[11]),  11,19},
  {&(_ZTV7S7317C2[18]),  18,19},
};
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
Class_Descriptor cd_S7317C2 = {  "S7317C2", // class name
  bases_S7317C2, 3,
  &(vtc_S7317C2[0]), // expected_vtbl_contents
  &(vtt_S7317C2[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI7S7317C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7317C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C6  : S7317C2 , S7317C3 , S7317C4 {
  virtual  ~S7317C6(); // _ZN7S7317C6D2Ev
  virtual void  v9(); // _ZN7S7317C62v9Ev
  S7317C6(); // tgen
};
//SIG(-1 S7317C6) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S7317C6 ::~S7317C6(){ note_dtor("S7317C6", this);}
void  S7317C6 ::v9(){vfunc_called(this, "_ZN7S7317C62v9Ev");}
S7317C6 ::S7317C6(){ note_ctor("S7317C6", this);} // tgen

static void Test_S7317C6()
{
  extern Class_Descriptor cd_S7317C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S7317C6, buf);
    S7317C6 *dp, &lv = *(dp=new (buf) S7317C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S7317C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C6)");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(176,112), "S7317C6");
    check_base_class_offset(lv, (S7317C3*)(S7317C2*), ABISELECT(176,112), "S7317C6");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*), ABISELECT(288,184), "S7317C6");
    check_base_class_offset(lv, (S7317C2*), 0, "S7317C6");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(16,8), "S7317C6");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*), ABISELECT(16,8), "S7317C6");
    /*is_ambiguous_... S7317C6::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*), ABISELECT(128,80), "S7317C6");
    test_class_info(&lv, &cd_S7317C6);
    dp->~S7317C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C6(Test_S7317C6, "S7317C6", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN7S7317C6C1Ev();
extern void _ZN7S7317C6D2Ev();
Name_Map name_map_S7317C6[] = {
  NSPAIR(_ZN7S7317C6C1Ev),
  NSPAIR(_ZN7S7317C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
static Base_Class bases_S7317C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C4,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(128,80), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C6[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C6D1Ev();
extern void _ZN7S7317C6D0Ev();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY vtc_S7317C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7317C6[];
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__7S7317C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C2__7S7317C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C2__7S7317C6[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
static  VTT_ENTRY vtt_S7317C6[] = {
  {&(_ZTV7S7317C6[4]),  4,31},
  {&(_tg__ZTV7S7317C2__7S7317C6[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C2__7S7317C6[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C2__7S7317C6[3]),  3,4},
  {&(_ZTV7S7317C6[23]),  23,31},
  {&(_ZTV7S7317C6[30]),  30,31},
};
extern VTBL_ENTRY _ZTI7S7317C6[];
extern  VTBL_ENTRY _ZTV7S7317C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C6[];
Class_Descriptor cd_S7317C6 = {  "S7317C6", // class name
  bases_S7317C6, 7,
  &(vtc_S7317C6[0]), // expected_vtbl_contents
  &(vtt_S7317C6[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI7S7317C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7317C6),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C6),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C7  {
  int s7317c7f0;
  char s7317c7f1[7];
  void *s7317c7f2;
  int s7317c7f3;
  short s7317c7f4;
  virtual void  v10(); // _ZN7S7317C73v10Ev
  virtual void  v11(); // _ZN7S7317C73v11Ev
  ~S7317C7(); // tgen
  S7317C7(); // tgen
};
//SIG(-1 S7317C7) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S7317C7 ::v10(){vfunc_called(this, "_ZN7S7317C73v10Ev");}
void  S7317C7 ::v11(){vfunc_called(this, "_ZN7S7317C73v11Ev");}
S7317C7 ::~S7317C7(){ note_dtor("S7317C7", this);} // tgen
S7317C7 ::S7317C7(){ note_ctor("S7317C7", this);} // tgen

static void Test_S7317C7()
{
  extern Class_Descriptor cd_S7317C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7317C7, buf);
    S7317C7 *dp, &lv = *(dp=new (buf) S7317C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7317C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C7)");
    check_field_offset(lv, s7317c7f0, ABISELECT(8,4), "S7317C7.s7317c7f0");
    check_field_offset(lv, s7317c7f1, ABISELECT(12,8), "S7317C7.s7317c7f1");
    check_field_offset(lv, s7317c7f2, ABISELECT(24,16), "S7317C7.s7317c7f2");
    check_field_offset(lv, s7317c7f3, ABISELECT(32,20), "S7317C7.s7317c7f3");
    check_field_offset(lv, s7317c7f4, ABISELECT(36,24), "S7317C7.s7317c7f4");
    test_class_info(&lv, &cd_S7317C7);
    dp->~S7317C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C7(Test_S7317C7, "S7317C7", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7317C7C1Ev();
extern void _ZN7S7317C7D1Ev();
Name_Map name_map_S7317C7[] = {
  NSPAIR(_ZN7S7317C7C1Ev),
  NSPAIR(_ZN7S7317C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7317C7[];
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY vtc_S7317C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C7[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
extern VTBL_ENTRY _ZTI7S7317C7[];
extern  VTBL_ENTRY _ZTV7S7317C7[];
Class_Descriptor cd_S7317C7 = {  "S7317C7", // class name
  0,0,//no base classes
  &(vtc_S7317C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7317C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7317C7),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  S7317C5  : S7317C6 , S7317C3 , S7317C2 , virtual S7317C7 {
  int s7317c5f0;
  virtual void  v12(); // _ZN7S7317C53v12Ev
  virtual void  v13(); // _ZN7S7317C53v13Ev
  virtual void  v14(); // _ZN7S7317C53v14Ev
  ~S7317C5(); // tgen
  S7317C5(); // tgen
};
//SIG(-1 S7317C5) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S7317C5 ::v12(){vfunc_called(this, "_ZN7S7317C53v12Ev");}
void  S7317C5 ::v13(){vfunc_called(this, "_ZN7S7317C53v13Ev");}
void  S7317C5 ::v14(){vfunc_called(this, "_ZN7S7317C53v14Ev");}
S7317C5 ::~S7317C5(){ note_dtor("S7317C5", this);} // tgen
S7317C5 ::S7317C5(){ note_ctor("S7317C5", this);} // tgen

static void Test_S7317C5()
{
  extern Class_Descriptor cd_S7317C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S7317C5, buf);
    S7317C5 *dp, &lv = *(dp=new (buf) S7317C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S7317C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C5)");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(304,196), "S7317C5");
    check_base_class_offset(lv, (S7317C3*)(S7317C2*)(S7317C6*), ABISELECT(304,196), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C2*), ABISELECT(304,196), "S7317C5");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*)(S7317C6*), ABISELECT(416,268), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*), ABISELECT(416,268), "S7317C5");
    check_base_class_offset(lv, (S7317C2*)(S7317C6*), 0, "S7317C5");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*)(S7317C6*), ABISELECT(16,8), "S7317C5");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C6*), ABISELECT(16,8), "S7317C5");
    /*is_ambiguous_... S7317C6::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C6*), ABISELECT(128,80), "S7317C5");
    check_base_class_offset(lv, (S7317C6*), 0, "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(176,112), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*), ABISELECT(176,112), "S7317C5");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C2*), ABISELECT(288,184), "S7317C5");
    check_base_class_offset(lv, (S7317C7*), ABISELECT(464,300), "S7317C5");
    check_field_offset(lv, s7317c5f0, ABISELECT(300,192), "S7317C5.s7317c5f0");
    test_class_info(&lv, &cd_S7317C5);
    dp->~S7317C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C5(Test_S7317C5, "S7317C5", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN7S7317C5C1Ev();
extern void _ZN7S7317C5D1Ev();
Name_Map name_map_S7317C5[] = {
  NSPAIR(_ZN7S7317C5C1Ev),
  NSPAIR(_ZN7S7317C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C6;
extern VTBL_ENTRY _ZTI7S7317C6[];
extern  VTBL_ENTRY _ZTV7S7317C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C6[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C7;
extern VTBL_ENTRY _ZTI7S7317C7[];
extern  VTBL_ENTRY _ZTV7S7317C7[];
static Base_Class bases_S7317C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(304,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
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C4,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C2,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(16,8), //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7317C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(176,112), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C2,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C7,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //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},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C5[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C5D1Ev();
extern void _ZN7S7317C5D0Ev();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C53v12Ev();
extern void _ZN7S7317C53v13Ev();
extern void _ZN7S7317C53v14Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY vtc_S7317C5[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7317C5[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C6D1Ev();
extern void _ZN7S7317C6D0Ev();
extern void _ZN7S7317C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C6__7S7317C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C27S7317C6__7S7317C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C27S7317C6__7S7317C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C27S7317C6__7S7317C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C6__7S7317C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C6__7S7317C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__A1__7S7317C5[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C2__A1__7S7317C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C2__A1__7S7317C5[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
static  VTT_ENTRY vtt_S7317C5[] = {
  {&(_ZTV7S7317C5[5]),  5,52},
  {&(_tg__ZTV7S7317C6__7S7317C5[4]),  4,8},
  {&(_tg__ZTV7S7317C27S7317C6__7S7317C5[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C27S7317C6__7S7317C5[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C27S7317C6__7S7317C5[3]),  3,4},
  {&(_tg__ZTV7S7317C3__7S7317C6__7S7317C5[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C6__7S7317C5[3]),  3,4},
  {&(_tg__ZTV7S7317C2__A1__7S7317C5[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C2__A1__7S7317C5[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C2__A1__7S7317C5[3]),  3,4},
  {&(_ZTV7S7317C5[38]),  38,52},
  {&(_ZTV7S7317C5[45]),  45,52},
  {&(_ZTV7S7317C5[31]),  31,52},
  {&(_ZTV7S7317C5[50]),  50,52},
};
extern VTBL_ENTRY _ZTI7S7317C5[];
extern  VTBL_ENTRY _ZTV7S7317C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C5[];
Class_Descriptor cd_S7317C5 = {  "S7317C5", // class name
  bases_S7317C5, 12,
  &(vtc_S7317C5[0]), // expected_vtbl_contents
  &(vtt_S7317C5[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI7S7317C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7317C5),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C5),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7317C1  : S7317C2 , S7317C5 , S7317C3 {
  int s7317c1f0;
  void *s7317c1f1;
  int s7317c1f2;
  ::S20970C12 s7317c1f3;
  virtual  ~S7317C1(); // _ZN7S7317C1D2Ev
  virtual void  v1(); // _ZN7S7317C12v1Ev
  virtual void  v2(); // _ZN7S7317C12v2Ev
  virtual void  v3(); // _ZN7S7317C12v3Ev
  S7317C1(); // tgen
};
//SIG(1 S7317C1) C1{ BC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 v8 Fi} BC5{ BC6{ BC2 BC3 BC4 vd v9} BC3 BC2 VBC7{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 v13 v14 Fi} BC3 vd v1 v2 v3 Fi Fp Fi FC8{ VBC9{ BC10{ v15 Fp Fc[5] FL Fp[2]} v16 v17 v18 FC10 Fc[2] Fp} Fp[4] FC10 FC11{ VBC9 VBC10 BC12{ VBC9 VBC10 v20 Fi} v19 Fl Fp Fi[2]}}}


 S7317C1 ::~S7317C1(){ note_dtor("S7317C1", this);}
void  S7317C1 ::v1(){vfunc_called(this, "_ZN7S7317C12v1Ev");}
void  S7317C1 ::v2(){vfunc_called(this, "_ZN7S7317C12v2Ev");}
void  S7317C1 ::v3(){vfunc_called(this, "_ZN7S7317C12v3Ev");}
S7317C1 ::S7317C1(){ note_ctor("S7317C1", this);} // tgen

static void Test_S7317C1()
{
  extern Class_Descriptor cd_S7317C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(133,169)];
    init_test(&cd_S7317C1, buf);
    S7317C1 *dp, &lv = *(dp=new (buf) S7317C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,672), "sizeof(S7317C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7317C1)");
    /*is_ambiguous_... S7317C1::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(856,540), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C2*), ABISELECT(856,540), "S7317C1");
    check_base_class_offset(lv, (S7317C3*)(S7317C2*)(S7317C6*)(S7317C5*), ABISELECT(856,540), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C2*)(S7317C5*), ABISELECT(856,540), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*), ABISELECT(968,612), "S7317C1");
    /*is_ambiguous_... S7317C2::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*)(S7317C6*)(S7317C5*), ABISELECT(968,612), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C2*)(S7317C5*), ABISELECT(968,612), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C2*), 0, "S7317C1");
    check_base_class_offset(lv, (S7317C2*)(S7317C6*)(S7317C5*), ABISELECT(16,8), "S7317C1");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*)(S7317C6*)(S7317C5*), ABISELECT(32,16), "S7317C1");
    /*is_ambiguous_... S7317C6::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C6*)(S7317C5*), ABISELECT(32,16), "S7317C1");
    /*is_ambiguous_... S7317C6::S7317C4 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C6*)(S7317C5*), ABISELECT(144,88), "S7317C1");
    check_base_class_offset(lv, (S7317C6*)(S7317C5*), ABISELECT(16,8), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*)(S7317C5*), ABISELECT(192,120), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*)(S7317C5*), ABISELECT(192,120), "S7317C1");
    /*is_ambiguous_... S7317C5::S7317C2 */ AMB_check_base_class_offset(lv, (S7317C2*)(S7317C5*), ABISELECT(304,192), "S7317C1");
    check_base_class_offset(lv, (S7317C7*)(S7317C5*), ABISELECT(1016,644), "S7317C1");
    check_base_class_offset(lv, (S7317C5*), ABISELECT(16,8), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C4*)(S7317C3*), ABISELECT(320,204), "S7317C1");
    /*is_ambiguous_... S7317C1::S7317C3 */ AMB_check_base_class_offset(lv, (S7317C3*), ABISELECT(320,204), "S7317C1");
    check_field_offset(lv, s7317c1f0, ABISELECT(432,276), "S7317C1.s7317c1f0");
    check_field_offset(lv, s7317c1f1, ABISELECT(440,280), "S7317C1.s7317c1f1");
    check_field_offset(lv, s7317c1f2, ABISELECT(448,284), "S7317C1.s7317c1f2");
    check_field_offset(lv, s7317c1f3, ABISELECT(456,288), "S7317C1.s7317c1f3");
    test_class_info(&lv, &cd_S7317C1);
    dp->~S7317C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7317C1(Test_S7317C1, "S7317C1", ABISELECT(1056,672));

#else // __cplusplus

extern void _ZN7S7317C1C1Ev();
extern void _ZN7S7317C1D2Ev();
Name_Map name_map_S7317C1[] = {
  NSPAIR(_ZN7S7317C1C1Ev),
  NSPAIR(_ZN7S7317C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C6;
extern VTBL_ENTRY _ZTI7S7317C6[];
extern  VTBL_ENTRY _ZTV7S7317C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C6[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
extern Class_Descriptor cd_S7317C2;
extern VTBL_ENTRY _ZTI7S7317C2[];
extern  VTBL_ENTRY _ZTV7S7317C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C2[];
extern Class_Descriptor cd_S7317C7;
extern VTBL_ENTRY _ZTI7S7317C7[];
extern  VTBL_ENTRY _ZTV7S7317C7[];
extern Class_Descriptor cd_S7317C5;
extern VTBL_ENTRY _ZTI7S7317C5[];
extern  VTBL_ENTRY _ZTV7S7317C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C5[];
extern Class_Descriptor cd_S7317C4;
extern VTBL_ENTRY _ZTI7S7317C4[];
extern  VTBL_ENTRY _ZTV7S7317C4[];
extern Class_Descriptor cd_S7317C3;
extern VTBL_ENTRY _ZTI7S7317C3[];
extern  VTBL_ENTRY _ZTV7S7317C3[];
static Base_Class bases_S7317C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7317C4,    ABISELECT(856,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(856,540), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C4,    ABISELECT(968,612), //bcp->offset
    59, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7317C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C2,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7317C4,    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
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(32,16), //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(144,88), //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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7317C6,    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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7317C4,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(192,120), //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
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7317C2,    ABISELECT(304,192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7317C7,    ABISELECT(1016,644), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //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
    13, //immediately_derived
  0, 1},
  {&cd_S7317C5,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7317C4,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7317C3,    ABISELECT(320,204), //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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7317C1[];
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C1D1Ev();
extern void _ZN7S7317C1D0Ev();
extern void _ZN7S7317C12v1Ev();
extern void _ZN7S7317C12v2Ev();
extern void _ZN7S7317C12v3Ev();
extern void _ZN7S7317C22v8Ev();
extern void ABISELECT(_ZThn16_N7S7317C1D1Ev,_ZThn8_N7S7317C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7317C1D0Ev,_ZThn8_N7S7317C1D0Ev)();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C53v12Ev();
extern void _ZN7S7317C53v13Ev();
extern void _ZN7S7317C53v14Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY vtc_S7317C1[] = {
  ABISELECT(1016,644),
  ABISELECT(968,612),
  ABISELECT(856,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7317C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7317C12v3Ev,
  ABISELECT(1000,636),
  ABISELECT(952,604),
  ABISELECT(840,532),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7317C1D1Ev,_ZThn8_N7S7317C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7317C1D0Ev,_ZThn8_N7S7317C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v14Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  ABISELECT(664,420),
  ABISELECT(552,348),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-856,-540),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
  0,
  ABISELECT(-968,-612),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  0,
  0,
  ABISELECT(-1016,-644),
  (VTBL_ENTRY)&(_ZTI7S7317C1[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7317C1[];
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__7S7317C1[] = {
  ABISELECT(968,612),
  ABISELECT(856,540),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C2__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-856,-540),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C2__7S7317C1[] = {
  0,
  ABISELECT(-968,-612),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C5D1Ev();
extern void _ZN7S7317C5D0Ev();
extern void _ZN7S7317C62v9Ev();
extern void _ZN7S7317C53v12Ev();
extern void _ZN7S7317C53v13Ev();
extern void _ZN7S7317C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C5__7S7317C1[] = {
  ABISELECT(1000,636),
  ABISELECT(952,604),
  ABISELECT(840,532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7317C53v14Ev,
};
extern void _ZN7S7317C22v8Ev();
extern void _ZN7S7317C6D1Ev();
extern void _ZN7S7317C6D0Ev();
extern void _ZN7S7317C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C67S7317C5__7S7317C1[] = {
  ABISELECT(952,604),
  ABISELECT(840,532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7317C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7317C62v9Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C27S7317C67S7317C5__A1__7S7317C1[] = {
  ABISELECT(952,604),
  ABISELECT(840,532),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C27S7317C67S7317C5__A1__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C27S7317C67S7317C5__A1__7S7317C1[] = {
  0,
  ABISELECT(-952,-604),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C67S7317C5__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C67S7317C5__7S7317C1[] = {
  0,
  ABISELECT(-952,-604),
  (VTBL_ENTRY)&(_ZTI7S7317C6[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C27S7317C5__A2__7S7317C1[] = {
  ABISELECT(664,420),
  ABISELECT(552,348),
  0,
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C27S7317C5__A2__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-552,-348),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C27S7317C5__A2__7S7317C1[] = {
  0,
  ABISELECT(-664,-420),
  (VTBL_ENTRY)&(_ZTI7S7317C2[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C42v4Ev();
extern void _ZN7S7317C32v5Ev();
extern void _ZN7S7317C32v6Ev();
extern void _ZN7S7317C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C3__7S7317C5__7S7317C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-532),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7317C32v7Ev,
};
extern void _ZN7S7317C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C4__A1__7S7317C5__7S7317C1[] = {
  0,
  ABISELECT(-952,-604),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C42v4Ev,
};
extern void _ZN7S7317C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C2__A1__7S7317C5__7S7317C1[] = {
  ABISELECT(664,420),
  ABISELECT(552,348),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C22v8Ev,
};
extern void _ZN7S7317C73v10Ev();
extern void _ZN7S7317C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7317C7__7S7317C5__7S7317C1[] = {
  0,
  0,
  ABISELECT(-1000,-636),
  (VTBL_ENTRY)&(_ZTI7S7317C5[0]),
  (VTBL_ENTRY)&_ZN7S7317C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7317C73v11Ev,
};
static  VTT_ENTRY vtt_S7317C1[] = {
  {&(_ZTV7S7317C1[5]),  5,69},
  {&(_tg__ZTV7S7317C2__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C2__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C2__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C5__7S7317C1[5]),  5,12},
  {&(_tg__ZTV7S7317C67S7317C5__7S7317C1[4]),  4,8},
  {&(_tg__ZTV7S7317C27S7317C67S7317C5__A1__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C27S7317C67S7317C5__A1__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C27S7317C67S7317C5__A1__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C3__7S7317C67S7317C5__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C67S7317C5__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C27S7317C5__A2__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C3__7S7317C27S7317C5__A2__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C27S7317C5__A2__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C3__7S7317C5__7S7317C1[6]),  6,10},
  {&(_tg__ZTV7S7317C4__A1__7S7317C5__7S7317C1[3]),  3,4},
  {&(_tg__ZTV7S7317C2__A1__7S7317C5__7S7317C1[4]),  4,5},
  {&(_tg__ZTV7S7317C7__7S7317C5__7S7317C1[4]),  4,6},
  {&(_ZTV7S7317C1[55]),  55,69},
  {&(_ZTV7S7317C1[62]),  62,69},
  {&(_ZTV7S7317C1[16]),  16,69},
  {&(_ZTV7S7317C1[42]),  42,69},
  {&(_ZTV7S7317C1[67]),  67,69},
};
extern VTBL_ENTRY _ZTI7S7317C1[];
extern  VTBL_ENTRY _ZTV7S7317C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7317C1[];
Class_Descriptor cd_S7317C1 = {  "S7317C1", // class name
  bases_S7317C1, 16,
  &(vtc_S7317C1[0]), // expected_vtbl_contents
  &(vtt_S7317C1[0]), // expected_vtt_contents
  ABISELECT(1056,672), // object size
  NSPAIRA(_ZTI7S7317C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7317C1),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7317C1),23, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C4  {
  void *s7318c4f0;
  char s7318c4f1[5];
  __tsi64 s7318c4f2;
  void *s7318c4f3[2];
  virtual void  v4(); // _ZN7S7318C42v4Ev
  ~S7318C4(); // tgen
  S7318C4(); // tgen
};
//SIG(-1 S7318C4) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S7318C4 ::v4(){vfunc_called(this, "_ZN7S7318C42v4Ev");}
S7318C4 ::~S7318C4(){ note_dtor("S7318C4", this);} // tgen
S7318C4 ::S7318C4(){ note_ctor("S7318C4", this);} // tgen

static void Test_S7318C4()
{
  extern Class_Descriptor cd_S7318C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S7318C4, buf);
    S7318C4 *dp, &lv = *(dp=new (buf) S7318C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S7318C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C4)");
    check_field_offset(lv, s7318c4f0, ABISELECT(8,4), "S7318C4.s7318c4f0");
    check_field_offset(lv, s7318c4f1, ABISELECT(16,8), "S7318C4.s7318c4f1");
    check_field_offset(lv, s7318c4f2, ABISELECT(24,16), "S7318C4.s7318c4f2");
    check_field_offset(lv, s7318c4f3, ABISELECT(32,24), "S7318C4.s7318c4f3");
    test_class_info(&lv, &cd_S7318C4);
    dp->~S7318C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C4(Test_S7318C4, "S7318C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S7318C4C1Ev();
extern void _ZN7S7318C4D1Ev();
Name_Map name_map_S7318C4[] = {
  NSPAIR(_ZN7S7318C4C1Ev),
  NSPAIR(_ZN7S7318C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7318C4[];
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY vtc_S7318C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C4[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
Class_Descriptor cd_S7318C4 = {  "S7318C4", // class name
  0,0,//no base classes
  &(vtc_S7318C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S7318C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7318C4),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  S7318C3  : S7318C4 {
  ::S7318C4 s7318c3f0;
  char s7318c3f1[2];
  void *s7318c3f2;
  virtual void  v5(); // _ZN7S7318C32v5Ev
  virtual void  v6(); // _ZN7S7318C32v6Ev
  virtual void  v7(); // _ZN7S7318C32v7Ev
  ~S7318C3(); // tgen
  S7318C3(); // tgen
};
//SIG(-1 S7318C3) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S7318C3 ::v5(){vfunc_called(this, "_ZN7S7318C32v5Ev");}
void  S7318C3 ::v6(){vfunc_called(this, "_ZN7S7318C32v6Ev");}
void  S7318C3 ::v7(){vfunc_called(this, "_ZN7S7318C32v7Ev");}
S7318C3 ::~S7318C3(){ note_dtor("S7318C3", this);} // tgen
S7318C3 ::S7318C3(){ note_ctor("S7318C3", this);} // tgen

static void Test_S7318C3()
{
  extern Class_Descriptor cd_S7318C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S7318C3, buf);
    S7318C3 *dp, &lv = *(dp=new (buf) S7318C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S7318C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C3)");
    check_base_class_offset(lv, (S7318C4*), 0, "S7318C3");
    check_field_offset(lv, s7318c3f0, ABISELECT(48,32), "S7318C3.s7318c3f0");
    check_field_offset(lv, s7318c3f1, ABISELECT(96,64), "S7318C3.s7318c3f1");
    check_field_offset(lv, s7318c3f2, ABISELECT(104,68), "S7318C3.s7318c3f2");
    test_class_info(&lv, &cd_S7318C3);
    dp->~S7318C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C3(Test_S7318C3, "S7318C3", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN7S7318C3C1Ev();
extern void _ZN7S7318C3D1Ev();
Name_Map name_map_S7318C3[] = {
  NSPAIR(_ZN7S7318C3C1Ev),
  NSPAIR(_ZN7S7318C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
static Base_Class bases_S7318C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C3[];
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY vtc_S7318C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C3[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
Class_Descriptor cd_S7318C3 = {  "S7318C3", // class name
  bases_S7318C3, 1,
  &(vtc_S7318C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI7S7318C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7318C3),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  S7318C2  : virtual S7318C3 , virtual S7318C4 {
  int s7318c2f0;
  virtual void  v8(); // _ZN7S7318C22v8Ev
  ~S7318C2(); // tgen
  S7318C2(); // tgen
};
//SIG(-1 S7318C2) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S7318C2 ::v8(){vfunc_called(this, "_ZN7S7318C22v8Ev");}
S7318C2 ::~S7318C2(){ note_dtor("S7318C2", this);} // tgen
S7318C2 ::S7318C2(){ note_ctor("S7318C2", this);} // tgen

static void Test_S7318C2()
{
  extern Class_Descriptor cd_S7318C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S7318C2, buf);
    S7318C2 *dp, &lv = *(dp=new (buf) S7318C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S7318C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C2)");
    check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(16,8), "S7318C2");
    check_base_class_offset(lv, (S7318C3*), ABISELECT(16,8), "S7318C2");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*), ABISELECT(128,80), "S7318C2");
    check_field_offset(lv, s7318c2f0, ABISELECT(8,4), "S7318C2.s7318c2f0");
    test_class_info(&lv, &cd_S7318C2);
    dp->~S7318C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C2(Test_S7318C2, "S7318C2", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN7S7318C2C1Ev();
extern void _ZN7S7318C2D1Ev();
Name_Map name_map_S7318C2[] = {
  NSPAIR(_ZN7S7318C2C1Ev),
  NSPAIR(_ZN7S7318C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
static Base_Class bases_S7318C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7318C4,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C2[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY vtc_S7318C2[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7318C2[];
static  VTT_ENTRY vtt_S7318C2[] = {
  {&(_ZTV7S7318C2[4]),  4,19},
  {&(_ZTV7S7318C2[11]),  11,19},
  {&(_ZTV7S7318C2[18]),  18,19},
};
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
Class_Descriptor cd_S7318C2 = {  "S7318C2", // class name
  bases_S7318C2, 3,
  &(vtc_S7318C2[0]), // expected_vtbl_contents
  &(vtt_S7318C2[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI7S7318C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7318C2),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C2),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C6  : S7318C2 , S7318C3 , S7318C4 {
  virtual  ~S7318C6(); // _ZN7S7318C6D2Ev
  virtual void  v9(); // _ZN7S7318C62v9Ev
  S7318C6(); // tgen
};
//SIG(-1 S7318C6) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S7318C6 ::~S7318C6(){ note_dtor("S7318C6", this);}
void  S7318C6 ::v9(){vfunc_called(this, "_ZN7S7318C62v9Ev");}
S7318C6 ::S7318C6(){ note_ctor("S7318C6", this);} // tgen

static void Test_S7318C6()
{
  extern Class_Descriptor cd_S7318C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S7318C6, buf);
    S7318C6 *dp, &lv = *(dp=new (buf) S7318C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S7318C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C6)");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(176,112), "S7318C6");
    check_base_class_offset(lv, (S7318C3*)(S7318C2*), ABISELECT(176,112), "S7318C6");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*), ABISELECT(288,184), "S7318C6");
    check_base_class_offset(lv, (S7318C2*), 0, "S7318C6");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(16,8), "S7318C6");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*), ABISELECT(16,8), "S7318C6");
    /*is_ambiguous_... S7318C6::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*), ABISELECT(128,80), "S7318C6");
    test_class_info(&lv, &cd_S7318C6);
    dp->~S7318C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C6(Test_S7318C6, "S7318C6", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN7S7318C6C1Ev();
extern void _ZN7S7318C6D2Ev();
Name_Map name_map_S7318C6[] = {
  NSPAIR(_ZN7S7318C6C1Ev),
  NSPAIR(_ZN7S7318C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
static Base_Class bases_S7318C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C4,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(128,80), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C6[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C6D1Ev();
extern void _ZN7S7318C6D0Ev();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY vtc_S7318C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7318C6[];
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__7S7318C6[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C2__7S7318C6[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C2__7S7318C6[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
static  VTT_ENTRY vtt_S7318C6[] = {
  {&(_ZTV7S7318C6[4]),  4,31},
  {&(_tg__ZTV7S7318C2__7S7318C6[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C2__7S7318C6[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C2__7S7318C6[3]),  3,4},
  {&(_ZTV7S7318C6[23]),  23,31},
  {&(_ZTV7S7318C6[30]),  30,31},
};
extern VTBL_ENTRY _ZTI7S7318C6[];
extern  VTBL_ENTRY _ZTV7S7318C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C6[];
Class_Descriptor cd_S7318C6 = {  "S7318C6", // class name
  bases_S7318C6, 7,
  &(vtc_S7318C6[0]), // expected_vtbl_contents
  &(vtt_S7318C6[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI7S7318C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7318C6),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C6),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C7  {
  int s7318c7f0;
  char s7318c7f1[7];
  void *s7318c7f2;
  int s7318c7f3;
  short s7318c7f4;
  virtual void  v10(); // _ZN7S7318C73v10Ev
  virtual void  v11(); // _ZN7S7318C73v11Ev
  ~S7318C7(); // tgen
  S7318C7(); // tgen
};
//SIG(-1 S7318C7) C1{ v1 v2 Fi Fc[7] Fp Fi Fs}


void  S7318C7 ::v10(){vfunc_called(this, "_ZN7S7318C73v10Ev");}
void  S7318C7 ::v11(){vfunc_called(this, "_ZN7S7318C73v11Ev");}
S7318C7 ::~S7318C7(){ note_dtor("S7318C7", this);} // tgen
S7318C7 ::S7318C7(){ note_ctor("S7318C7", this);} // tgen

static void Test_S7318C7()
{
  extern Class_Descriptor cd_S7318C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7318C7, buf);
    S7318C7 *dp, &lv = *(dp=new (buf) S7318C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7318C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C7)");
    check_field_offset(lv, s7318c7f0, ABISELECT(8,4), "S7318C7.s7318c7f0");
    check_field_offset(lv, s7318c7f1, ABISELECT(12,8), "S7318C7.s7318c7f1");
    check_field_offset(lv, s7318c7f2, ABISELECT(24,16), "S7318C7.s7318c7f2");
    check_field_offset(lv, s7318c7f3, ABISELECT(32,20), "S7318C7.s7318c7f3");
    check_field_offset(lv, s7318c7f4, ABISELECT(36,24), "S7318C7.s7318c7f4");
    test_class_info(&lv, &cd_S7318C7);
    dp->~S7318C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C7(Test_S7318C7, "S7318C7", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7318C7C1Ev();
extern void _ZN7S7318C7D1Ev();
Name_Map name_map_S7318C7[] = {
  NSPAIR(_ZN7S7318C7C1Ev),
  NSPAIR(_ZN7S7318C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7318C7[];
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY vtc_S7318C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C7[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
extern VTBL_ENTRY _ZTI7S7318C7[];
extern  VTBL_ENTRY _ZTV7S7318C7[];
Class_Descriptor cd_S7318C7 = {  "S7318C7", // class name
  0,0,//no base classes
  &(vtc_S7318C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7318C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7318C7),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  S7318C5  : S7318C6 , S7318C3 , S7318C2 , virtual S7318C7 {
  int s7318c5f0;
  virtual void  v12(); // _ZN7S7318C53v12Ev
  virtual void  v13(); // _ZN7S7318C53v13Ev
  virtual void  v14(); // _ZN7S7318C53v14Ev
  ~S7318C5(); // tgen
  S7318C5(); // tgen
};
//SIG(-1 S7318C5) C1{ BC2{ BC3{ VBC4{ BC5{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC5 Fc[2] Fp} VBC5 v8 Fi} BC4 BC5 vd v9} BC4 BC3 VBC6{ v10 v11 Fi Fc[7] Fp Fi Fs} v1 v2 v3 Fi}


void  S7318C5 ::v12(){vfunc_called(this, "_ZN7S7318C53v12Ev");}
void  S7318C5 ::v13(){vfunc_called(this, "_ZN7S7318C53v13Ev");}
void  S7318C5 ::v14(){vfunc_called(this, "_ZN7S7318C53v14Ev");}
S7318C5 ::~S7318C5(){ note_dtor("S7318C5", this);} // tgen
S7318C5 ::S7318C5(){ note_ctor("S7318C5", this);} // tgen

static void Test_S7318C5()
{
  extern Class_Descriptor cd_S7318C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(64,83)];
    init_test(&cd_S7318C5, buf);
    S7318C5 *dp, &lv = *(dp=new (buf) S7318C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(504,328), "sizeof(S7318C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C5)");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(304,196), "S7318C5");
    check_base_class_offset(lv, (S7318C3*)(S7318C2*)(S7318C6*), ABISELECT(304,196), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C2*), ABISELECT(304,196), "S7318C5");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*)(S7318C6*), ABISELECT(416,268), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*), ABISELECT(416,268), "S7318C5");
    check_base_class_offset(lv, (S7318C2*)(S7318C6*), 0, "S7318C5");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*)(S7318C6*), ABISELECT(16,8), "S7318C5");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C6*), ABISELECT(16,8), "S7318C5");
    /*is_ambiguous_... S7318C6::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C6*), ABISELECT(128,80), "S7318C5");
    check_base_class_offset(lv, (S7318C6*), 0, "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(176,112), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*), ABISELECT(176,112), "S7318C5");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C2*), ABISELECT(288,184), "S7318C5");
    check_base_class_offset(lv, (S7318C7*), ABISELECT(464,300), "S7318C5");
    check_field_offset(lv, s7318c5f0, ABISELECT(300,192), "S7318C5.s7318c5f0");
    test_class_info(&lv, &cd_S7318C5);
    dp->~S7318C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C5(Test_S7318C5, "S7318C5", ABISELECT(504,328));

#else // __cplusplus

extern void _ZN7S7318C5C1Ev();
extern void _ZN7S7318C5D1Ev();
Name_Map name_map_S7318C5[] = {
  NSPAIR(_ZN7S7318C5C1Ev),
  NSPAIR(_ZN7S7318C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C6;
extern VTBL_ENTRY _ZTI7S7318C6[];
extern  VTBL_ENTRY _ZTV7S7318C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C6[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C7;
extern VTBL_ENTRY _ZTI7S7318C7[];
extern  VTBL_ENTRY _ZTV7S7318C7[];
static Base_Class bases_S7318C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(304,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
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(304,196), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C4,    ABISELECT(416,268), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C2,    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
    7, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(16,8), //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(128,80), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7318C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(176,112), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C2,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C7,    ABISELECT(464,300), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //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},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C5[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C5D1Ev();
extern void _ZN7S7318C5D0Ev();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C53v12Ev();
extern void _ZN7S7318C53v13Ev();
extern void _ZN7S7318C53v14Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY vtc_S7318C5[] = {
  ABISELECT(464,300),
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(128,84),
  ABISELECT(16,12),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  0,
  0,
  ABISELECT(-464,-300),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7318C5[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C6D1Ev();
extern void _ZN7S7318C6D0Ev();
extern void _ZN7S7318C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C6__7S7318C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C27S7318C6__7S7318C5[] = {
  ABISELECT(416,268),
  ABISELECT(304,196),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C27S7318C6__7S7318C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C27S7318C6__7S7318C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C6__7S7318C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-304,-196),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C6__7S7318C5[] = {
  0,
  ABISELECT(-416,-268),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__A1__7S7318C5[] = {
  ABISELECT(128,84),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C2__A1__7S7318C5[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C2__A1__7S7318C5[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
static  VTT_ENTRY vtt_S7318C5[] = {
  {&(_ZTV7S7318C5[5]),  5,52},
  {&(_tg__ZTV7S7318C6__7S7318C5[4]),  4,8},
  {&(_tg__ZTV7S7318C27S7318C6__7S7318C5[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C27S7318C6__7S7318C5[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C27S7318C6__7S7318C5[3]),  3,4},
  {&(_tg__ZTV7S7318C3__7S7318C6__7S7318C5[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C6__7S7318C5[3]),  3,4},
  {&(_tg__ZTV7S7318C2__A1__7S7318C5[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C2__A1__7S7318C5[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C2__A1__7S7318C5[3]),  3,4},
  {&(_ZTV7S7318C5[38]),  38,52},
  {&(_ZTV7S7318C5[45]),  45,52},
  {&(_ZTV7S7318C5[31]),  31,52},
  {&(_ZTV7S7318C5[50]),  50,52},
};
extern VTBL_ENTRY _ZTI7S7318C5[];
extern  VTBL_ENTRY _ZTV7S7318C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C5[];
Class_Descriptor cd_S7318C5 = {  "S7318C5", // class name
  bases_S7318C5, 12,
  &(vtc_S7318C5[0]), // expected_vtbl_contents
  &(vtt_S7318C5[0]), // expected_vtt_contents
  ABISELECT(504,328), // object size
  NSPAIRA(_ZTI7S7318C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7318C5),52, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C5),14, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7318C1  : S7318C2 , S7318C5 , S7318C3 {
  int s7318c1f0;
  void *s7318c1f1;
  int s7318c1f2;
  ::S20971C12 s7318c1f3;
  virtual  ~S7318C1(); // _ZN7S7318C1D2Ev
  virtual void  v1(); // _ZN7S7318C12v1Ev
  virtual void  v2(); // _ZN7S7318C12v2Ev
  virtual void  v3(); // _ZN7S7318C12v3Ev
  S7318C1(); // tgen
};
//SIG(1 S7318C1) C1{ BC2{ VBC3{ BC4{ v4 Fp Fc[5] FL Fp[2]} v5 v6 v7 FC4 Fc[2] Fp} VBC4 v8 Fi} BC5{ BC6{ BC2 BC3 BC4 vd v9} BC3 BC2 VBC7{ v10 v11 Fi Fc[7] Fp Fi Fs} v12 v13 v14 Fi} BC3 vd v1 v2 v3 Fi Fp Fi FC8{ VBC9{ BC10{ v15 Fp Fc[5] FL Fp[2]} v16 v17 v18 FC10 Fc[2] Fp} Fp[4] FC10 FC11{ VBC9 VBC10 BC12{ VBC9 VBC10 v20 Fi} v19 FL Fp Fi[2]}}}


 S7318C1 ::~S7318C1(){ note_dtor("S7318C1", this);}
void  S7318C1 ::v1(){vfunc_called(this, "_ZN7S7318C12v1Ev");}
void  S7318C1 ::v2(){vfunc_called(this, "_ZN7S7318C12v2Ev");}
void  S7318C1 ::v3(){vfunc_called(this, "_ZN7S7318C12v3Ev");}
S7318C1 ::S7318C1(){ note_ctor("S7318C1", this);} // tgen

static void Test_S7318C1()
{
  extern Class_Descriptor cd_S7318C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(133,170)];
    init_test(&cd_S7318C1, buf);
    S7318C1 *dp, &lv = *(dp=new (buf) S7318C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1056,676), "sizeof(S7318C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7318C1)");
    /*is_ambiguous_... S7318C1::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(856,544), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C2*), ABISELECT(856,544), "S7318C1");
    check_base_class_offset(lv, (S7318C3*)(S7318C2*)(S7318C6*)(S7318C5*), ABISELECT(856,544), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C2*)(S7318C5*), ABISELECT(856,544), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*), ABISELECT(968,616), "S7318C1");
    /*is_ambiguous_... S7318C2::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*)(S7318C6*)(S7318C5*), ABISELECT(968,616), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C2*)(S7318C5*), ABISELECT(968,616), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C2*), 0, "S7318C1");
    check_base_class_offset(lv, (S7318C2*)(S7318C6*)(S7318C5*), ABISELECT(16,8), "S7318C1");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*)(S7318C6*)(S7318C5*), ABISELECT(32,16), "S7318C1");
    /*is_ambiguous_... S7318C6::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C6*)(S7318C5*), ABISELECT(32,16), "S7318C1");
    /*is_ambiguous_... S7318C6::S7318C4 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C6*)(S7318C5*), ABISELECT(144,88), "S7318C1");
    check_base_class_offset(lv, (S7318C6*)(S7318C5*), ABISELECT(16,8), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*)(S7318C5*), ABISELECT(192,120), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*)(S7318C5*), ABISELECT(192,120), "S7318C1");
    /*is_ambiguous_... S7318C5::S7318C2 */ AMB_check_base_class_offset(lv, (S7318C2*)(S7318C5*), ABISELECT(304,192), "S7318C1");
    check_base_class_offset(lv, (S7318C7*)(S7318C5*), ABISELECT(1016,648), "S7318C1");
    check_base_class_offset(lv, (S7318C5*), ABISELECT(16,8), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C4*)(S7318C3*), ABISELECT(320,204), "S7318C1");
    /*is_ambiguous_... S7318C1::S7318C3 */ AMB_check_base_class_offset(lv, (S7318C3*), ABISELECT(320,204), "S7318C1");
    check_field_offset(lv, s7318c1f0, ABISELECT(432,276), "S7318C1.s7318c1f0");
    check_field_offset(lv, s7318c1f1, ABISELECT(440,280), "S7318C1.s7318c1f1");
    check_field_offset(lv, s7318c1f2, ABISELECT(448,284), "S7318C1.s7318c1f2");
    check_field_offset(lv, s7318c1f3, ABISELECT(456,288), "S7318C1.s7318c1f3");
    test_class_info(&lv, &cd_S7318C1);
    dp->~S7318C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7318C1(Test_S7318C1, "S7318C1", ABISELECT(1056,676));

#else // __cplusplus

extern void _ZN7S7318C1C1Ev();
extern void _ZN7S7318C1D2Ev();
Name_Map name_map_S7318C1[] = {
  NSPAIR(_ZN7S7318C1C1Ev),
  NSPAIR(_ZN7S7318C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C6;
extern VTBL_ENTRY _ZTI7S7318C6[];
extern  VTBL_ENTRY _ZTV7S7318C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C6[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
extern Class_Descriptor cd_S7318C2;
extern VTBL_ENTRY _ZTI7S7318C2[];
extern  VTBL_ENTRY _ZTV7S7318C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C2[];
extern Class_Descriptor cd_S7318C7;
extern VTBL_ENTRY _ZTI7S7318C7[];
extern  VTBL_ENTRY _ZTV7S7318C7[];
extern Class_Descriptor cd_S7318C5;
extern VTBL_ENTRY _ZTI7S7318C5[];
extern  VTBL_ENTRY _ZTV7S7318C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C5[];
extern Class_Descriptor cd_S7318C4;
extern VTBL_ENTRY _ZTI7S7318C4[];
extern  VTBL_ENTRY _ZTV7S7318C4[];
extern Class_Descriptor cd_S7318C3;
extern VTBL_ENTRY _ZTI7S7318C3[];
extern  VTBL_ENTRY _ZTV7S7318C3[];
static Base_Class bases_S7318C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7318C4,    ABISELECT(856,544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(856,544), //bcp->offset
    49, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C4,    ABISELECT(968,616), //bcp->offset
    59, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7318C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C2,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7318C4,    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
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(32,16), //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(144,88), //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
    9, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7318C6,    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
    10, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7318C4,    ABISELECT(192,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(192,120), //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
    12, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7318C2,    ABISELECT(304,192), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7318C7,    ABISELECT(1016,648), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //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
    13, //immediately_derived
  0, 1},
  {&cd_S7318C5,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7318C4,    ABISELECT(320,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7318C3,    ABISELECT(320,204), //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
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7318C1[];
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C1D1Ev();
extern void _ZN7S7318C1D0Ev();
extern void _ZN7S7318C12v1Ev();
extern void _ZN7S7318C12v2Ev();
extern void _ZN7S7318C12v3Ev();
extern void _ZN7S7318C22v8Ev();
extern void ABISELECT(_ZThn16_N7S7318C1D1Ev,_ZThn8_N7S7318C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7318C1D0Ev,_ZThn8_N7S7318C1D0Ev)();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C53v12Ev();
extern void _ZN7S7318C53v13Ev();
extern void _ZN7S7318C53v14Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY vtc_S7318C1[] = {
  ABISELECT(1016,648),
  ABISELECT(968,616),
  ABISELECT(856,544),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7318C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7318C12v3Ev,
  ABISELECT(1000,640),
  ABISELECT(952,608),
  ABISELECT(840,536),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7318C1D1Ev,_ZThn8_N7S7318C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7318C1D0Ev,_ZThn8_N7S7318C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v14Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  ABISELECT(664,424),
  ABISELECT(552,352),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-856,-544),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
  0,
  ABISELECT(-968,-616),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  0,
  0,
  ABISELECT(-1016,-648),
  (VTBL_ENTRY)&(_ZTI7S7318C1[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
extern VTBL_ENTRY _ZTV7S7318C1[];
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__7S7318C1[] = {
  ABISELECT(968,616),
  ABISELECT(856,544),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C2__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-856,-544),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C2__7S7318C1[] = {
  0,
  ABISELECT(-968,-616),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C5D1Ev();
extern void _ZN7S7318C5D0Ev();
extern void _ZN7S7318C62v9Ev();
extern void _ZN7S7318C53v12Ev();
extern void _ZN7S7318C53v13Ev();
extern void _ZN7S7318C53v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C5__7S7318C1[] = {
  ABISELECT(1000,640),
  ABISELECT(952,608),
  ABISELECT(840,536),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7318C53v14Ev,
};
extern void _ZN7S7318C22v8Ev();
extern void _ZN7S7318C6D1Ev();
extern void _ZN7S7318C6D0Ev();
extern void _ZN7S7318C62v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C67S7318C5__7S7318C1[] = {
  ABISELECT(952,608),
  ABISELECT(840,536),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7318C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7318C62v9Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C27S7318C67S7318C5__A1__7S7318C1[] = {
  ABISELECT(952,608),
  ABISELECT(840,536),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C27S7318C67S7318C5__A1__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-536),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C27S7318C67S7318C5__A1__7S7318C1[] = {
  0,
  ABISELECT(-952,-608),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C67S7318C5__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-536),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C67S7318C5__7S7318C1[] = {
  0,
  ABISELECT(-952,-608),
  (VTBL_ENTRY)&(_ZTI7S7318C6[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C27S7318C5__A2__7S7318C1[] = {
  ABISELECT(664,424),
  ABISELECT(552,352),
  0,
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C27S7318C5__A2__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-552,-352),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C27S7318C5__A2__7S7318C1[] = {
  0,
  ABISELECT(-664,-424),
  (VTBL_ENTRY)&(_ZTI7S7318C2[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C42v4Ev();
extern void _ZN7S7318C32v5Ev();
extern void _ZN7S7318C32v6Ev();
extern void _ZN7S7318C32v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C3__7S7318C5__7S7318C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-840,-536),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7318C32v7Ev,
};
extern void _ZN7S7318C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C4__A1__7S7318C5__7S7318C1[] = {
  0,
  ABISELECT(-952,-608),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C42v4Ev,
};
extern void _ZN7S7318C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C2__A1__7S7318C5__7S7318C1[] = {
  ABISELECT(664,424),
  ABISELECT(552,352),
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C22v8Ev,
};
extern void _ZN7S7318C73v10Ev();
extern void _ZN7S7318C73v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7318C7__7S7318C5__7S7318C1[] = {
  0,
  0,
  ABISELECT(-1000,-640),
  (VTBL_ENTRY)&(_ZTI7S7318C5[0]),
  (VTBL_ENTRY)&_ZN7S7318C73v10Ev,
  (VTBL_ENTRY)&_ZN7S7318C73v11Ev,
};
static  VTT_ENTRY vtt_S7318C1[] = {
  {&(_ZTV7S7318C1[5]),  5,69},
  {&(_tg__ZTV7S7318C2__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C2__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C2__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C5__7S7318C1[5]),  5,12},
  {&(_tg__ZTV7S7318C67S7318C5__7S7318C1[4]),  4,8},
  {&(_tg__ZTV7S7318C27S7318C67S7318C5__A1__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C27S7318C67S7318C5__A1__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C27S7318C67S7318C5__A1__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C3__7S7318C67S7318C5__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C67S7318C5__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C27S7318C5__A2__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C3__7S7318C27S7318C5__A2__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C27S7318C5__A2__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C3__7S7318C5__7S7318C1[6]),  6,10},
  {&(_tg__ZTV7S7318C4__A1__7S7318C5__7S7318C1[3]),  3,4},
  {&(_tg__ZTV7S7318C2__A1__7S7318C5__7S7318C1[4]),  4,5},
  {&(_tg__ZTV7S7318C7__7S7318C5__7S7318C1[4]),  4,6},
  {&(_ZTV7S7318C1[55]),  55,69},
  {&(_ZTV7S7318C1[62]),  62,69},
  {&(_ZTV7S7318C1[16]),  16,69},
  {&(_ZTV7S7318C1[42]),  42,69},
  {&(_ZTV7S7318C1[67]),  67,69},
};
extern VTBL_ENTRY _ZTI7S7318C1[];
extern  VTBL_ENTRY _ZTV7S7318C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7318C1[];
Class_Descriptor cd_S7318C1 = {  "S7318C1", // class name
  bases_S7318C1, 16,
  &(vtc_S7318C1[0]), // expected_vtbl_contents
  &(vtt_S7318C1[0]), // expected_vtt_contents
  ABISELECT(1056,676), // object size
  NSPAIRA(_ZTI7S7318C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7318C1),69, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7318C1),23, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C3  {
  char s4221c3f0;
  int s4221c3f1;
  void *s4221c3f2[3];
  char s4221c3f3[3];
  ::S4228C19_nt s4221c3f4;
  char s4221c3f5;
  void *s4221c3f6;
  int s4221c3f7[2];
  virtual  ~S4221C3(); // _ZN7S4221C3D1Ev
  virtual void  v11(); // _ZN7S4221C33v11Ev
  virtual void  v12(); // _ZN7S4221C33v12Ev
  virtual void  v13(); // _ZN7S4221C33v13Ev
  virtual void  v14(); // _ZN7S4221C33v14Ev
  virtual void  v15(); // _ZN7S4221C33v15Ev
  virtual void  v16(); // _ZN7S4221C33v16Ev
  virtual void  v17(); // _ZN7S4221C33v17Ev
  virtual void  v18(); // _ZN7S4221C33v18Ev
  virtual void  v19(); // _ZN7S4221C33v19Ev
  virtual void  v20(); // _ZN7S4221C33v20Ev
  virtual void  v21(); // _ZN7S4221C33v21Ev
  virtual void  v22(); // _ZN7S4221C33v22Ev
  virtual void  v23(); // _ZN7S4221C33v23Ev
  virtual void  v24(); // _ZN7S4221C33v24Ev
  S4221C3(); // tgen
};
//SIG(-1 S4221C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S4221C3 ::~S4221C3(){ note_dtor("S4221C3", this);}
void  S4221C3 ::v11(){vfunc_called(this, "_ZN7S4221C33v11Ev");}
void  S4221C3 ::v12(){vfunc_called(this, "_ZN7S4221C33v12Ev");}
void  S4221C3 ::v13(){vfunc_called(this, "_ZN7S4221C33v13Ev");}
void  S4221C3 ::v14(){vfunc_called(this, "_ZN7S4221C33v14Ev");}
void  S4221C3 ::v15(){vfunc_called(this, "_ZN7S4221C33v15Ev");}
void  S4221C3 ::v16(){vfunc_called(this, "_ZN7S4221C33v16Ev");}
void  S4221C3 ::v17(){vfunc_called(this, "_ZN7S4221C33v17Ev");}
void  S4221C3 ::v18(){vfunc_called(this, "_ZN7S4221C33v18Ev");}
void  S4221C3 ::v19(){vfunc_called(this, "_ZN7S4221C33v19Ev");}
void  S4221C3 ::v20(){vfunc_called(this, "_ZN7S4221C33v20Ev");}
void  S4221C3 ::v21(){vfunc_called(this, "_ZN7S4221C33v21Ev");}
void  S4221C3 ::v22(){vfunc_called(this, "_ZN7S4221C33v22Ev");}
void  S4221C3 ::v23(){vfunc_called(this, "_ZN7S4221C33v23Ev");}
void  S4221C3 ::v24(){vfunc_called(this, "_ZN7S4221C33v24Ev");}
S4221C3 ::S4221C3(){ note_ctor("S4221C3", this);} // tgen

static void Test_S4221C3()
{
  extern Class_Descriptor cd_S4221C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S4221C3, buf);
    S4221C3 *dp, &lv = *(dp=new (buf) S4221C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S4221C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4221C3)");
    check_field_offset(lv, s4221c3f0, ABISELECT(8,4), "S4221C3.s4221c3f0");
    check_field_offset(lv, s4221c3f1, ABISELECT(12,8), "S4221C3.s4221c3f1");
    check_field_offset(lv, s4221c3f2, ABISELECT(16,12), "S4221C3.s4221c3f2");
    check_field_offset(lv, s4221c3f3, ABISELECT(40,24), "S4221C3.s4221c3f3");
    check_field_offset(lv, s4221c3f4, ABISELECT(48,28), "S4221C3.s4221c3f4");
    check_field_offset(lv, s4221c3f5, ABISELECT(64,40), "S4221C3.s4221c3f5");
    check_field_offset(lv, s4221c3f6, ABISELECT(72,44), "S4221C3.s4221c3f6");
    check_field_offset(lv, s4221c3f7, ABISELECT(80,48), "S4221C3.s4221c3f7");
    test_class_info(&lv, &cd_S4221C3);
    dp->~S4221C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4221C3(Test_S4221C3, "S4221C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S4221C3C1Ev();
extern void _ZN7S4221C3D1Ev();
Name_Map name_map_S4221C3[] = {
  NSPAIR(_ZN7S4221C3C1Ev),
  NSPAIR(_ZN7S4221C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4221C3[];
extern void _ZN7S4221C3D1Ev();
extern void _ZN7S4221C3D0Ev();
extern void _ZN7S4221C33v11Ev();
extern void _ZN7S4221C33v12Ev();
extern void _ZN7S4221C33v13Ev();
extern void _ZN7S4221C33v14Ev();
extern void _ZN7S4221C33v15Ev();
extern void _ZN7S4221C33v16Ev();
extern void _ZN7S4221C33v17Ev();
extern void _ZN7S4221C33v18Ev();
extern void _ZN7S4221C33v19Ev();
extern void _ZN7S4221C33v20Ev();
extern void _ZN7S4221C33v21Ev();
extern void _ZN7S4221C33v22Ev();
extern void _ZN7S4221C33v23Ev();
extern void _ZN7S4221C33v24Ev();
static  VTBL_ENTRY vtc_S4221C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4221C3[0]),
  (VTBL_ENTRY)&_ZN7S4221C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4221C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v24Ev,
};
extern VTBL_ENTRY _ZTI7S4221C3[];
extern  VTBL_ENTRY _ZTV7S4221C3[];
Class_Descriptor cd_S4221C3 = {  "S4221C3", // class name
  0,0,//no base classes
  &(vtc_S4221C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S4221C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4221C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C2  : S4221C3 {
  char s4221c2f0;
  void *s4221c2f1[2];
  virtual  ~S4221C2(); // _ZN7S4221C2D1Ev
  virtual void  v25(); // _ZN7S4221C23v25Ev
  S4221C2(); // tgen
};
//SIG(-1 S4221C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S4221C2 ::~S4221C2(){ note_dtor("S4221C2", this);}
void  S4221C2 ::v25(){vfunc_called(this, "_ZN7S4221C23v25Ev");}
S4221C2 ::S4221C2(){ note_ctor("S4221C2", this);} // tgen

static void Test_S4221C2()
{
  extern Class_Descriptor cd_S4221C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S4221C2, buf);
    S4221C2 *dp, &lv = *(dp=new (buf) S4221C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S4221C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4221C2)");
    check_base_class_offset(lv, (S4221C3*), 0, "S4221C2");
    check_field_offset(lv, s4221c2f0, ABISELECT(88,56), "S4221C2.s4221c2f0");
    check_field_offset(lv, s4221c2f1, ABISELECT(96,60), "S4221C2.s4221c2f1");
    test_class_info(&lv, &cd_S4221C2);
    dp->~S4221C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4221C2(Test_S4221C2, "S4221C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S4221C2C1Ev();
extern void _ZN7S4221C2D1Ev();
Name_Map name_map_S4221C2[] = {
  NSPAIR(_ZN7S4221C2C1Ev),
  NSPAIR(_ZN7S4221C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4221C3;
extern VTBL_ENTRY _ZTI7S4221C3[];
extern  VTBL_ENTRY _ZTV7S4221C3[];
static Base_Class bases_S4221C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4221C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4221C2[];
extern void _ZN7S4221C2D1Ev();
extern void _ZN7S4221C2D0Ev();
extern void _ZN7S4221C33v11Ev();
extern void _ZN7S4221C33v12Ev();
extern void _ZN7S4221C33v13Ev();
extern void _ZN7S4221C33v14Ev();
extern void _ZN7S4221C33v15Ev();
extern void _ZN7S4221C33v16Ev();
extern void _ZN7S4221C33v17Ev();
extern void _ZN7S4221C33v18Ev();
extern void _ZN7S4221C33v19Ev();
extern void _ZN7S4221C33v20Ev();
extern void _ZN7S4221C33v21Ev();
extern void _ZN7S4221C33v22Ev();
extern void _ZN7S4221C33v23Ev();
extern void _ZN7S4221C33v24Ev();
extern void _ZN7S4221C23v25Ev();
static  VTBL_ENTRY vtc_S4221C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4221C2[0]),
  (VTBL_ENTRY)&_ZN7S4221C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4221C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4221C23v25Ev,
};
extern VTBL_ENTRY _ZTI7S4221C2[];
extern  VTBL_ENTRY _ZTV7S4221C2[];
Class_Descriptor cd_S4221C2 = {  "S4221C2", // class name
  bases_S4221C2, 1,
  &(vtc_S4221C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S4221C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4221C2),19, //virtual function table var
  2, // 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  S4221C6_nt  {
  void *s4221c6f0;
  int s4221c6f1;
  ::S4228C37 s4221c6f2;
  void  mf4221c6(); // _ZN10S4221C6_nt8mf4221c6Ev
};
//SIG(-1 S4221C6_nt) C1{ m Fp Fi FC2{ m}}


void  S4221C6_nt ::mf4221c6(){}

//skip512 S4221C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4221C1  : S4221C2 {
  void *s4221c1f0[3];
  int s4221c1f1;
  ::S4221C6_nt s4221c1f2;
  char s4221c1f3;
  int s4221c1f4[2];
  ::S4221C6_nt s4221c1f5;
  ::S4228C19_nt s4221c1f6;
  ::S4228C19_nt s4221c1f7;
  ::S4228C19_nt s4221c1f8;
  ::S4228C19_nt s4221c1f9;
  char s4221c1f10;
  virtual  ~S4221C1(); // _ZN7S4221C1D1Ev
  virtual void  v1(); // _ZN7S4221C12v1Ev
  virtual void  v2(); // _ZN7S4221C12v2Ev
  virtual void  v3(); // _ZN7S4221C12v3Ev
  virtual void  v4(); // _ZN7S4221C12v4Ev
  virtual void  v5(); // _ZN7S4221C12v5Ev
  virtual void  v6(); // _ZN7S4221C12v6Ev
  virtual void  v7(); // _ZN7S4221C12v7Ev
  virtual void  v8(); // _ZN7S4221C12v8Ev
  virtual void  v9(); // _ZN7S4221C12v9Ev
  virtual void  v10(); // _ZN7S4221C13v10Ev
  S4221C1(); // tgen
};
//SIG(1 S4221C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v25 Fc Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp[3] Fi FC6{ m Fp Fi FC7{ m}} Fc Fi[2] FC6 FC4 FC4 FC4 FC4 Fc}


 S4221C1 ::~S4221C1(){ note_dtor("S4221C1", this);}
void  S4221C1 ::v1(){vfunc_called(this, "_ZN7S4221C12v1Ev");}
void  S4221C1 ::v2(){vfunc_called(this, "_ZN7S4221C12v2Ev");}
void  S4221C1 ::v3(){vfunc_called(this, "_ZN7S4221C12v3Ev");}
void  S4221C1 ::v4(){vfunc_called(this, "_ZN7S4221C12v4Ev");}
void  S4221C1 ::v5(){vfunc_called(this, "_ZN7S4221C12v5Ev");}
void  S4221C1 ::v6(){vfunc_called(this, "_ZN7S4221C12v6Ev");}
void  S4221C1 ::v7(){vfunc_called(this, "_ZN7S4221C12v7Ev");}
void  S4221C1 ::v8(){vfunc_called(this, "_ZN7S4221C12v8Ev");}
void  S4221C1 ::v9(){vfunc_called(this, "_ZN7S4221C12v9Ev");}
void  S4221C1 ::v10(){vfunc_called(this, "_ZN7S4221C13v10Ev");}
S4221C1 ::S4221C1(){ note_ctor("S4221C1", this);} // tgen

static void Test_S4221C1()
{
  extern Class_Descriptor cd_S4221C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(34,44)];
    init_test(&cd_S4221C1, buf);
    S4221C1 *dp, &lv = *(dp=new (buf) S4221C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(264,172), "sizeof(S4221C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4221C1)");
    check_base_class_offset(lv, (S4221C3*)(S4221C2*), 0, "S4221C1");
    check_base_class_offset(lv, (S4221C2*), 0, "S4221C1");
    check_field_offset(lv, s4221c1f0, ABISELECT(112,68), "S4221C1.s4221c1f0");
    check_field_offset(lv, s4221c1f1, ABISELECT(136,80), "S4221C1.s4221c1f1");
    check_field_offset(lv, s4221c1f2, ABISELECT(144,84), "S4221C1.s4221c1f2");
    check_field_offset(lv, s4221c1f3, ABISELECT(160,96), "S4221C1.s4221c1f3");
    check_field_offset(lv, s4221c1f4, ABISELECT(164,100), "S4221C1.s4221c1f4");
    check_field_offset(lv, s4221c1f5, ABISELECT(176,108), "S4221C1.s4221c1f5");
    check_field_offset(lv, s4221c1f6, ABISELECT(192,120), "S4221C1.s4221c1f6");
    check_field_offset(lv, s4221c1f7, ABISELECT(208,132), "S4221C1.s4221c1f7");
    check_field_offset(lv, s4221c1f8, ABISELECT(224,144), "S4221C1.s4221c1f8");
    check_field_offset(lv, s4221c1f9, ABISELECT(240,156), "S4221C1.s4221c1f9");
    check_field_offset(lv, s4221c1f10, ABISELECT(256,168), "S4221C1.s4221c1f10");
    test_class_info(&lv, &cd_S4221C1);
    dp->~S4221C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4221C1(Test_S4221C1, "S4221C1", ABISELECT(264,172));

#else // __cplusplus

extern void _ZN7S4221C1C1Ev();
extern void _ZN7S4221C1D1Ev();
Name_Map name_map_S4221C1[] = {
  NSPAIR(_ZN7S4221C1C1Ev),
  NSPAIR(_ZN7S4221C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4221C3;
extern VTBL_ENTRY _ZTI7S4221C3[];
extern  VTBL_ENTRY _ZTV7S4221C3[];
extern Class_Descriptor cd_S4221C2;
extern VTBL_ENTRY _ZTI7S4221C2[];
extern  VTBL_ENTRY _ZTV7S4221C2[];
static Base_Class bases_S4221C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4221C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4221C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4221C1[];
extern void _ZN7S4221C1D1Ev();
extern void _ZN7S4221C1D0Ev();
extern void _ZN7S4221C33v11Ev();
extern void _ZN7S4221C33v12Ev();
extern void _ZN7S4221C33v13Ev();
extern void _ZN7S4221C33v14Ev();
extern void _ZN7S4221C33v15Ev();
extern void _ZN7S4221C33v16Ev();
extern void _ZN7S4221C33v17Ev();
extern void _ZN7S4221C33v18Ev();
extern void _ZN7S4221C33v19Ev();
extern void _ZN7S4221C33v20Ev();
extern void _ZN7S4221C33v21Ev();
extern void _ZN7S4221C33v22Ev();
extern void _ZN7S4221C33v23Ev();
extern void _ZN7S4221C33v24Ev();
extern void _ZN7S4221C23v25Ev();
extern void _ZN7S4221C12v1Ev();
extern void _ZN7S4221C12v2Ev();
extern void _ZN7S4221C12v3Ev();
extern void _ZN7S4221C12v4Ev();
extern void _ZN7S4221C12v5Ev();
extern void _ZN7S4221C12v6Ev();
extern void _ZN7S4221C12v7Ev();
extern void _ZN7S4221C12v8Ev();
extern void _ZN7S4221C12v9Ev();
extern void _ZN7S4221C13v10Ev();
static  VTBL_ENTRY vtc_S4221C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4221C1[0]),
  (VTBL_ENTRY)&_ZN7S4221C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4221C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4221C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4221C23v25Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4221C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4221C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4221C1[];
extern  VTBL_ENTRY _ZTV7S4221C1[];
Class_Descriptor cd_S4221C1 = {  "S4221C1", // class name
  bases_S4221C1, 2,
  &(vtc_S4221C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(264,172), // object size
  NSPAIRA(_ZTI7S4221C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4221C1),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C3  : S20760C13 , virtual S4228C27 , virtual S4228C23 {
  short s6104c3f0;
  ~S6104C3(); // tgen
  S6104C3(); // tgen
};
//SIG(-1 S6104C3) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S6104C3 ::~S6104C3(){ note_dtor("S6104C3", this);} // tgen
S6104C3 ::S6104C3(){ note_ctor("S6104C3", this);} // tgen

static void Test_S6104C3()
{
  extern Class_Descriptor cd_S6104C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S6104C3, buf);
    S6104C3 *dp, &lv = *(dp=new (buf) S6104C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S6104C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6104C3)");
    check_base_class_offset(lv, (S20760C13*), 0, "S6104C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S6104C3");
    check_base_class_offset(lv, (S4228C23*), 0, "S6104C3");
    check_field_offset(lv, s6104c3f0, ABISELECT(32,28), "S6104C3.s6104c3f0");
    test_class_info(&lv, &cd_S6104C3);
    dp->~S6104C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C3(Test_S6104C3, "S6104C3", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S6104C3C1Ev();
extern void _ZN7S6104C3D1Ev();
Name_Map name_map_S6104C3[] = {
  NSPAIR(_ZN7S6104C3C1Ev),
  NSPAIR(_ZN7S6104C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
static Base_Class bases_S6104C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S6104C3[];
extern void _ZN7S6104C3D1Ev();
extern void _ZN7S6104C3D0Ev();
static  VTBL_ENTRY vtc_S6104C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C3[0]),
  (VTBL_ENTRY)&_ZN7S6104C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S6104C3[];
static  VTT_ENTRY vtt_S6104C3[] = {
  {&(_ZTV7S6104C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6104C3[];
extern  VTBL_ENTRY _ZTV7S6104C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C3[];
Class_Descriptor cd_S6104C3 = {  "S6104C3", // class name
  bases_S6104C3, 3,
  &(vtc_S6104C3[0]), // expected_vtbl_contents
  &(vtt_S6104C3[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S6104C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6104C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6104C3),1, //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  S6104C12  : virtual S20760C9 {
  virtual  ~S6104C12(); // _ZN8S6104C12D2Ev
  S6104C12(); // tgen
};
//SIG(-1 S6104C12) C1{ VBC2{ vd m FL} vd}


 S6104C12 ::~S6104C12(){ note_dtor("S6104C12", this);}
S6104C12 ::S6104C12(){ note_ctor("S6104C12", this);} // tgen

static void Test_S6104C12()
{
  extern Class_Descriptor cd_S6104C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6104C12, buf);
    S6104C12 *dp, &lv = *(dp=new (buf) S6104C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6104C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6104C12)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S6104C12");
    test_class_info(&lv, &cd_S6104C12);
    dp->~S6104C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C12(Test_S6104C12, "S6104C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S6104C12C1Ev();
extern void _ZN8S6104C12D2Ev();
Name_Map name_map_S6104C12[] = {
  NSPAIR(_ZN8S6104C12C1Ev),
  NSPAIR(_ZN8S6104C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S6104C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C12[];
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S6104C12D1Ev,_ZThn4_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S6104C12D0Ev,_ZThn4_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C12[];
static  VTT_ENTRY vtt_S6104C12[] = {
  {&(_ZTV8S6104C12[3]),  3,10},
  {&(_ZTV8S6104C12[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
static VTBL_ENTRY alt_thunk_names196[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6104C12D0Ev,_ZThn4_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6104C12D1Ev,_ZThn4_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C12 = {  "S6104C12", // class name
  bases_S6104C12, 1,
  &(vtc_S6104C12[0]), // expected_vtbl_contents
  &(vtt_S6104C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S6104C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6104C12),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C12),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names196,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C11  : S20760C9 , virtual S20760C13 , S6104C12 {
  ::S20760C13 s6104c11f0;
  ~S6104C11(); // tgen
  S6104C11(); // tgen
};
//SIG(-1 S6104C11) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S6104C11 ::~S6104C11(){ note_dtor("S6104C11", this);} // tgen
S6104C11 ::S6104C11(){ note_ctor("S6104C11", this);} // tgen

static void Test_S6104C11()
{
  extern Class_Descriptor cd_S6104C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S6104C11, buf);
    S6104C11 *dp, &lv = *(dp=new (buf) S6104C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S6104C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6104C11)");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6104C11");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S6104C11");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(88,72), "S6104C11");
    check_base_class_offset(lv, (S6104C12*), ABISELECT(16,12), "S6104C11");
    check_field_offset(lv, s6104c11f0, ABISELECT(24,16), "S6104C11.s6104c11f0");
    test_class_info(&lv, &cd_S6104C11);
    dp->~S6104C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C11(Test_S6104C11, "S6104C11", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S6104C11C1Ev();
extern void _ZN8S6104C11D1Ev();
Name_Map name_map_S6104C11[] = {
  NSPAIR(_ZN8S6104C11C1Ev),
  NSPAIR(_ZN8S6104C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
static Base_Class bases_S6104C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C11[];
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S6104C11D1Ev,_ZThn72_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S6104C11D0Ev,_ZThn72_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C11[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C11[];
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C12D1Ev,_ZThn60_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C12D0Ev,_ZThn60_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__8S6104C11[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
static  VTT_ENTRY vtt_S6104C11[] = {
  {&(_ZTV8S6104C11[4]),  4,21},
  {&(_tg__ZTV8S6104C12__8S6104C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__8S6104C11[3]),  3,5},
  {&(_ZTV8S6104C11[14]),  14,21},
  {&(_ZTV8S6104C11[9]),  9,21},
  {&(_ZTV8S6104C11[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
static VTBL_ENTRY alt_thunk_names197[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C12D0Ev,_ZThn60_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C12D1Ev,_ZThn60_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6104C11D0Ev,_ZThn72_N8S6104C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6104C11D1Ev,_ZThn72_N8S6104C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C11 = {  "S6104C11", // class name
  bases_S6104C11, 4,
  &(vtc_S6104C11[0]), // expected_vtbl_contents
  &(vtt_S6104C11[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S6104C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6104C11),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C11),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names197,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C14  : virtual S20760C13 , virtual S6104C11 {
  long double s6104c14f0;
  ~S6104C14(); // tgen
  S6104C14(); // tgen
};
//SIG(-1 S6104C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S6104C14 ::~S6104C14(){ note_dtor("S6104C14", this);} // tgen
S6104C14 ::S6104C14(){ note_ctor("S6104C14", this);} // tgen

static void Test_S6104C14()
{
  extern Class_Descriptor cd_S6104C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S6104C14, buf);
    S6104C14 *dp, &lv = *(dp=new (buf) S6104C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S6104C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S6104C14");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(32,16), "S6104C14");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(64,44), "S6104C14");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(120,88), "S6104C14");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(80,56), "S6104C14");
    check_base_class_offset(lv, (S6104C11*), ABISELECT(64,44), "S6104C14");
    check_field_offset(lv, s6104c14f0, ABISELECT(16,4), "S6104C14.s6104c14f0");
    test_class_info(&lv, &cd_S6104C14);
    dp->~S6104C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C14(Test_S6104C14, "S6104C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S6104C14C1Ev();
extern void _ZN8S6104C14D1Ev();
Name_Map name_map_S6104C14[] = {
  NSPAIR(_ZN8S6104C14C1Ev),
  NSPAIR(_ZN8S6104C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
static Base_Class bases_S6104C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C14[];
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S6104C14D1Ev,_ZThn16_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S6104C14D0Ev,_ZThn16_N8S6104C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn120_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn120_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C14[];
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
static  VTT_ENTRY vtt_S6104C14[] = {
  {&(_ZTV8S6104C14[5]),  5,29},
  {&(_ZTV8S6104C14[10]),  10,29},
  {&(_ZTV8S6104C14[17]),  17,29},
  {&(_ZTV8S6104C14[22]),  22,29},
  {&(_ZTV8S6104C14[27]),  27,29},
  {&(_tg__ZTV8S6104C11__8S6104C14[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
static VTBL_ENTRY alt_thunk_names198[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6104C14D0Ev,_ZThn16_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6104C14D1Ev,_ZThn16_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C14 = {  "S6104C14", // class name
  bases_S6104C14, 5,
  &(vtc_S6104C14[0]), // expected_vtbl_contents
  &(vtt_S6104C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S6104C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6104C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names198,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C13  : S4161C4_nt , S6104C14 , S20760C22_nt , virtual S6104C12 {
  virtual  ~S6104C13(); // _ZN8S6104C13D2Ev
  S6104C13(); // tgen
};
//SIG(-1 S6104C13) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S6104C13 ::~S6104C13(){ note_dtor("S6104C13", this);}
S6104C13 ::S6104C13(){ note_ctor("S6104C13", this);} // tgen

static void Test_S6104C13()
{
  extern Class_Descriptor cd_S6104C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S6104C13, buf);
    S6104C13 *dp, &lv = *(dp=new (buf) S6104C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S6104C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C13)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S6104C13");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*), ABISELECT(48,24), "S6104C13");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(48,24), "S6104C13");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(80,52), "S6104C13");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(136,96), "S6104C13");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(136,96), "S6104C13");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(96,64), "S6104C13");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*), ABISELECT(80,52), "S6104C13");
    check_base_class_offset(lv, (S6104C14*), 0, "S6104C13");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S6104C13");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*), ABISELECT(152,108), "S6104C13");
    test_class_info(&lv, &cd_S6104C13);
    dp->~S6104C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C13(Test_S6104C13, "S6104C13", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S6104C13C1Ev();
extern void _ZN8S6104C13D2Ev();
Name_Map name_map_S6104C13[] = {
  NSPAIR(_ZN8S6104C13C1Ev),
  NSPAIR(_ZN8S6104C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
static Base_Class bases_S6104C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6104C14,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6104C12,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C13[];
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
extern void ABISELECT(_ZThn40_N8S6104C13D1Ev,_ZThn20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C13D0Ev,_ZThn20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S6104C13D1Ev,_ZThn24_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S6104C13D0Ev,_ZThn24_N8S6104C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn52_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn52_N8S6104C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn96_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn96_N8S6104C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn152_N8S6104C13D1Ev,_ZThn108_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn152_N8S6104C13D0Ev,_ZThn108_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C13[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C13D1Ev,_ZThn20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C13D0Ev,_ZThn20_N8S6104C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C13[];
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C14__8S6104C13[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S6104C14D1Ev,_ZThn24_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S6104C14D0Ev,_ZThn24_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C14__8S6104C13[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn52_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn52_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C14__8S6104C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C14__8S6104C13[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn96_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn96_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C14__8S6104C13[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__8S6104C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
static  VTT_ENTRY vtt_S6104C13[] = {
  {&(_ZTV8S6104C13[6]),  6,40},
  {&(_tg__ZTV8S6104C14__8S6104C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C14__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C14__8S6104C13[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C14__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C14__8S6104C13[3]),  3,5},
  {&(_ZTV8S6104C13[15]),  15,40},
  {&(_ZTV8S6104C13[22]),  22,40},
  {&(_ZTV8S6104C13[27]),  27,40},
  {&(_ZTV8S6104C13[32]),  32,40},
  {&(_ZTV8S6104C13[38]),  38,40},
  {&(_tg__ZTV8S6104C11__8S6104C13[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__8S6104C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
static VTBL_ENTRY alt_thunk_names199[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D0Ev,_ZThn32_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6104C12D1Ev,_ZThn32_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn52_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn52_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn96_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C14D0Ev,_ZThn24_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn96_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C14D1Ev,_ZThn24_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6104C13D0Ev,_ZThn108_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6104C13D1Ev,_ZThn108_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn52_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn52_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn96_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C13D0Ev,_ZThn24_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn96_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6104C13D1Ev,_ZThn24_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C13 = {  "S6104C13", // class name
  bases_S6104C13, 9,
  &(vtc_S6104C13[0]), // expected_vtbl_contents
  &(vtt_S6104C13[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S6104C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6104C13),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C13),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names199,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C10  : virtual S4161C4_nt , virtual S20760C9 , virtual S6104C11 , S6104C13 , virtual S20759C5_nt {
  ~S6104C10(); // tgen
  S6104C10(); // tgen
};
//SIG(-1 S6104C10) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S6104C10 ::~S6104C10(){ note_dtor("S6104C10", this);} // tgen
S6104C10 ::S6104C10(){ note_ctor("S6104C10", this);} // tgen

static void Test_S6104C10()
{
  extern Class_Descriptor cd_S6104C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S6104C10, buf);
    S6104C10 *dp, &lv = *(dp=new (buf) S6104C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S6104C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C10)");
    /*is_ambiguous_... S6104C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S6104C10");
    /*is_ambiguous_... S6104C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S6104C10");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(56,28), "S6104C10");
    /*is_ambiguous_... S6104C10::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(56,28), "S6104C10");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(72,40), "S6104C10");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(128,84), "S6104C10");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*)(S6104C13*), ABISELECT(128,84), "S6104C10");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(88,52), "S6104C10");
    check_base_class_offset(lv, (S6104C11*), ABISELECT(72,40), "S6104C10");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*)(S6104C13*), ABISELECT(72,40), "S6104C10");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C13*), ABISELECT(32,16), "S6104C10");
    check_base_class_offset(lv, (S6104C14*)(S6104C13*), 0, "S6104C10");
    check_base_class_offset(lv, (S20760C22_nt*)(S6104C13*), ABISELECT(40,20), "S6104C10");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C13*), ABISELECT(160,112), "S6104C10");
    check_base_class_offset(lv, (S6104C13*), 0, "S6104C10");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S6104C10");
    test_class_info(&lv, &cd_S6104C10);
    dp->~S6104C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C10(Test_S6104C10, "S6104C10", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN8S6104C10C1Ev();
extern void _ZN8S6104C10D1Ev();
Name_Map name_map_S6104C10[] = {
  NSPAIR(_ZN8S6104C10C1Ev),
  NSPAIR(_ZN8S6104C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C13;
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S6104C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S6104C14,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6104C13,    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_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C10[];
extern void _ZN8S6104C10D1Ev();
extern void _ZN8S6104C10D0Ev();
extern void ABISELECT(_ZThn40_N8S6104C10D1Ev,_ZThn20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S6104C10D0Ev,_ZThn20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C10D1Ev,_ZThn28_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C10D0Ev,_ZThn28_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C10D1Ev,_ZThn40_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C10D0Ev,_ZThn40_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S6104C10D1Ev,_ZThn84_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S6104C10D0Ev,_ZThn84_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S6104C10D1Ev,_ZThn112_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S6104C10D0Ev,_ZThn112_N8S6104C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C10[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&_ZN8S6104C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C10D1Ev,_ZThn20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6104C10D0Ev,_ZThn20_N8S6104C10D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C10[];
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C13__8S6104C10[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
};
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S6104C14D1Ev,_ZThn84_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S6104C14D0Ev,_ZThn84_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C14D1Ev,_ZThn40_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C14D0Ev,_ZThn40_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C14D1Ev,_ZThn28_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C14D0Ev,_ZThn28_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C148S6104C13__8S6104C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S6104C13D1Ev,_ZThn84_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S6104C13D0Ev,_ZThn84_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C13__8S6104C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S6104C13D1Ev,_ZThn40_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S6104C13D0Ev,_ZThn40_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C13__8S6104C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C13__8S6104C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C13D1Ev,_ZThn28_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C13D0Ev,_ZThn28_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C13__8S6104C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S6104C13D1Ev,_ZThn112_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S6104C13D0Ev,_ZThn112_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C13__8S6104C10[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C10[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C10[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C10[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__8S6104C10[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
static  VTT_ENTRY vtt_S6104C10[] = {
  {&(_ZTV8S6104C10[8]),  8,47},
  {&(_tg__ZTV8S6104C13__8S6104C10[6]),  6,8},
  {&(_tg__ZTV8S6104C148S6104C13__8S6104C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C148S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C148S6104C13__8S6104C10[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C148S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C148S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C13__8S6104C10[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C13__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C13__8S6104C10[4]),  4,6},
  {&(_ZTV8S6104C10[17]),  17,47},
  {&(_ZTV8S6104C10[24]),  24,47},
  {&(_ZTV8S6104C10[34]),  34,47},
  {&(_ZTV8S6104C10[29]),  29,47},
  {&(_ZTV8S6104C10[40]),  40,47},
  {&(_ZTV8S6104C10[45]),  45,47},
  {&(_tg__ZTV8S6104C11__8S6104C10[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__8S6104C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6104C10[];
extern  VTBL_ENTRY _ZTV8S6104C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C10[];
static VTBL_ENTRY alt_thunk_names200[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C13D0Ev,_ZThn112_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C13D1Ev,_ZThn112_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C13D0Ev,_ZThn40_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C13D1Ev,_ZThn40_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C13D0Ev,_ZThn28_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C13D0Ev,_ZThn84_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C13D1Ev,_ZThn28_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C13D1Ev,_ZThn84_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C14D0Ev,_ZThn40_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C14D1Ev,_ZThn40_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C14D0Ev,_ZThn28_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C14D0Ev,_ZThn84_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C14D1Ev,_ZThn28_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C14D1Ev,_ZThn84_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C10D0Ev,_ZThn112_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6104C10D1Ev,_ZThn112_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C10D0Ev,_ZThn40_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6104C10D1Ev,_ZThn40_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C10D0Ev,_ZThn84_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C10D0Ev,_ZThn28_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6104C10D1Ev,_ZThn84_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C10D1Ev,_ZThn28_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C10 = {  "S6104C10", // class name
  bases_S6104C10, 12,
  &(vtc_S6104C10[0]), // expected_vtbl_contents
  &(vtt_S6104C10[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI8S6104C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6104C10),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C10),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names200,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C17  : virtual S20760C13 , S6104C11 , virtual S4161C4_nt {
  ::S6104C10 s6104c17f0;
  ~S6104C17(); // tgen
  S6104C17(); // tgen
};
//SIG(-1 S6104C17) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S6104C17 ::~S6104C17(){ note_dtor("S6104C17", this);} // tgen
S6104C17 ::S6104C17(){ note_ctor("S6104C17", this);} // tgen

static void Test_S6104C17()
{
  extern Class_Descriptor cd_S6104C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S6104C17, buf);
    S6104C17 *dp, &lv = *(dp=new (buf) S6104C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S6104C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C17)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S6104C17");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(256,168), "S6104C17");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), 0, "S6104C17");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(288,196), "S6104C17");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(16,12), "S6104C17");
    check_base_class_offset(lv, (S6104C11*), 0, "S6104C17");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S6104C17");
    check_field_offset(lv, s6104c17f0, ABISELECT(64,44), "S6104C17.s6104c17f0");
    test_class_info(&lv, &cd_S6104C17);
    dp->~S6104C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C17(Test_S6104C17, "S6104C17", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S6104C17C1Ev();
extern void _ZN8S6104C17D1Ev();
Name_Map name_map_S6104C17[] = {
  NSPAIR(_ZN8S6104C17C1Ev),
  NSPAIR(_ZN8S6104C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S6104C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6104C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6104C17[];
extern void _ZN8S6104C17D1Ev();
extern void _ZN8S6104C17D0Ev();
extern void ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn256_N8S6104C17D1Ev,_ZThn168_N8S6104C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
extern void ABISELECT(_ZThn256_N8S6104C17D0Ev,_ZThn168_N8S6104C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn288_N8S6104C17D1Ev,_ZThn196_N8S6104C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
extern void ABISELECT(_ZThn288_N8S6104C17D0Ev,_ZThn196_N8S6104C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6104C17[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&_ZN8S6104C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C17D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S6104C17[];
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C17[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C17[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZThn272_N8S6104C12D1Ev,_ZThn184_N8S6104C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
extern void ABISELECT(_ZThn272_N8S6104C12D0Ev,_ZThn184_N8S6104C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C17[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn256_N8S6104C11D1Ev,_ZThn168_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn256_N8S6104C11D0Ev,_ZThn168_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__8S6104C17[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__8S6104C17[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn288_N8S6104C11D1Ev,_ZThn196_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn288_N8S6104C11D0Ev,_ZThn196_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__8S6104C17[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
static  VTT_ENTRY vtt_S6104C17[] = {
  {&(_ZTV8S6104C17[5]),  5,22},
  {&(_tg__ZTV8S6104C11__8S6104C17[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__8S6104C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__8S6104C17[3]),  3,5},
  {&(_ZTV8S6104C17[15]),  15,22},
  {&(_ZTV8S6104C17[10]),  10,22},
  {&(_ZTV8S6104C17[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S6104C17[];
extern  VTBL_ENTRY _ZTV8S6104C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C17[];
static VTBL_ENTRY alt_thunk_names201[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C11D0Ev,_ZThn196_N8S6104C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C11D0Ev,_ZThn168_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C11D1Ev,_ZThn196_N8S6104C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C11D1Ev,_ZThn168_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6104C12D0Ev,_ZThn184_N8S6104C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6104C12D1Ev,_ZThn184_N8S6104C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C17D0Ev,_ZThn196_N8S6104C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C17D0Ev,_ZThn168_N8S6104C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6104C17D1Ev,_ZThn196_N8S6104C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6104C17D1Ev,_ZThn168_N8S6104C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C17 = {  "S6104C17", // class name
  bases_S6104C17, 6,
  &(vtc_S6104C17[0]), // expected_vtbl_contents
  &(vtt_S6104C17[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S6104C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6104C17),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6104C17),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names201,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C7  : S4228C37 , S20760C9 , virtual S4161C4_nt , S6104C10 , virtual S6104C17 {
  int s6104c7f0;
  virtual  ~S6104C7(); // _ZN7S6104C7D2Ev
  S6104C7(); // tgen
};
//SIG(-1 S6104C7) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S6104C7 ::~S6104C7(){ note_dtor("S6104C7", this);}
S6104C7 ::S6104C7(){ note_ctor("S6104C7", this);} // tgen

static void Test_S6104C7()
{
  extern Class_Descriptor cd_S6104C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S6104C7, buf);
    S6104C7 *dp, &lv = *(dp=new (buf) S6104C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S6104C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C7)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6104C7");
    /*is_ambiguous_... S6104C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6104C7");
    /*is_ambiguous_... S6104C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S6104C7");
    /*is_ambiguous_... S6104C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6104C10*), ABISELECT(72,40), "S6104C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C17*), ABISELECT(72,40), "S6104C7");
    /*is_ambiguous_... S6104C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C10*), ABISELECT(80,44), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(80,44), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(80,44), "S6104C7");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(80,44), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(96,56), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(152,100), "S6104C7");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*)(S6104C13*)(S6104C10*), ABISELECT(152,100), "S6104C7");
    check_base_class_offset(lv, (S20760C13*)(S6104C17*), ABISELECT(152,100), "S6104C7");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*)(S6104C17*), ABISELECT(152,100), "S6104C7");
    /*is_ambiguous_... S6104C7::S6104C11 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(112,68), "S6104C7");
    check_base_class_offset(lv, (S6104C11*)(S6104C10*), ABISELECT(96,56), "S6104C7");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*)(S6104C13*)(S6104C10*), ABISELECT(96,56), "S6104C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C13*)(S6104C10*), ABISELECT(48,28), "S6104C7");
    check_base_class_offset(lv, (S6104C14*)(S6104C13*)(S6104C10*), ABISELECT(16,12), "S6104C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S6104C13*)(S6104C10*), ABISELECT(56,32), "S6104C7");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C13*)(S6104C10*), ABISELECT(184,128), "S6104C7");
    check_base_class_offset(lv, (S6104C13*)(S6104C10*), ABISELECT(16,12), "S6104C7");
    check_base_class_offset(lv, (S20759C5_nt*)(S6104C10*), ABISELECT(192,132), "S6104C7");
    check_base_class_offset(lv, (S6104C10*), ABISELECT(16,12), "S6104C7");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*)(S6104C17*), ABISELECT(208,140), "S6104C7");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(224,152), "S6104C7");
    check_base_class_offset(lv, (S6104C11*)(S6104C17*), ABISELECT(208,140), "S6104C7");
    check_base_class_offset(lv, (S6104C17*), ABISELECT(208,140), "S6104C7");
    check_field_offset(lv, s6104c7f0, ABISELECT(64,36), "S6104C7.s6104c7f0");
    test_class_info(&lv, &cd_S6104C7);
    dp->~S6104C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C7(Test_S6104C7, "S6104C7", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S6104C7C1Ev();
extern void _ZN7S6104C7D2Ev();
Name_Map name_map_S6104C7[] = {
  NSPAIR(_ZN7S6104C7C1Ev),
  NSPAIR(_ZN7S6104C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C13;
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S6104C10;
extern VTBL_ENTRY _ZTI8S6104C10[];
extern  VTBL_ENTRY _ZTV8S6104C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S6104C17;
extern VTBL_ENTRY _ZTI8S6104C17[];
extern  VTBL_ENTRY _ZTV8S6104C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C17[];
static Base_Class bases_S6104C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S6104C14,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6104C13,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6104C10,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(208,140), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6104C17,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6104C7[];
extern void _ZN7S6104C7D1Ev();
extern void _ZN7S6104C7D0Ev();
extern void ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S6104C7D1Ev,_ZThn32_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S6104C7D0Ev,_ZThn32_N7S6104C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn44_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn44_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn56_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn56_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn100_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn100_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn128_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn128_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn140_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn140_N7S6104C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev)();
static  VTBL_ENTRY vtc_S6104C7[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&_ZN7S6104C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C7D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6104C7D1Ev,_ZThn32_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6104C7D0Ev,_ZThn32_N7S6104C7D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S6104C7[];
extern void _ZN8S6104C10D1Ev();
extern void _ZN8S6104C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C10__7S6104C7[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&_ZN8S6104C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C10D0Ev,
};
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
};
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn32_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn32_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn88_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn88_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn44_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn44_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn32_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn32_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn116_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn116_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C138S6104C10__7S6104C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn32_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn32_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C10__7S6104C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn44_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn44_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C10__7S6104C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn88_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn88_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C10__7S6104C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C10__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C10__7S6104C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S6104C10__7S6104C7[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__7S6104C7[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__7S6104C7[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C7[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__7S6104C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__7S6104C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__7S6104C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__7S6104C7[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__7S6104C7[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void _ZN8S6104C17D1Ev();
extern void _ZN8S6104C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C17__7S6104C7[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&_ZN8S6104C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C17D0Ev,
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C7[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C7[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C17__7S6104C7[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C7[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C17__7S6104C7[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
static  VTT_ENTRY vtt_S6104C7[] = {
  {&(_ZTV7S6104C7[9]),  9,71},
  {&(_tg__ZTV8S6104C10__7S6104C7[8]),  8,10},
  {&(_tg__ZTV8S6104C138S6104C10__7S6104C7[6]),  6,8},
  {&(_tg__ZTV8S6104C148S6104C138S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C148S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C138S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C138S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C138S6104C10__7S6104C7[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C10__7S6104C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C10__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C10__7S6104C7[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S6104C10__7S6104C7[3]),  3,5},
  {&(_ZTV7S6104C7[19]),  19,71},
  {&(_ZTV7S6104C7[28]),  28,71},
  {&(_ZTV7S6104C7[35]),  35,71},
  {&(_ZTV7S6104C7[45]),  45,71},
  {&(_ZTV7S6104C7[40]),  40,71},
  {&(_ZTV7S6104C7[51]),  51,71},
  {&(_ZTV7S6104C7[56]),  56,71},
  {&(_ZTV7S6104C7[64]),  64,71},
  {&(_ZTV7S6104C7[69]),  69,71},
  {&(_tg__ZTV8S6104C11__7S6104C7[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C17__7S6104C7[5]),  5,7},
  {&(_tg__ZTV8S6104C118S6104C17__A1__7S6104C7[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C17__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C17__7S6104C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6104C7[];
extern  VTBL_ENTRY _ZTV7S6104C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C7[];
static VTBL_ENTRY alt_thunk_names202[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn116_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn116_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn44_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn44_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn88_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn32_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn88_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn32_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn116_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn116_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn44_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn44_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn32_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn88_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn32_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn88_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn44_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn44_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn32_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn88_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn32_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn88_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn140_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn140_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn128_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn128_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn56_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn56_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn100_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn44_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn100_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn44_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C7 = {  "S6104C7", // class name
  bases_S6104C7, 19,
  &(vtc_S6104C7[0]), // expected_vtbl_contents
  &(vtt_S6104C7[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S6104C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6104C7),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6104C7),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names202,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6104C1  : S4228C37 , S6104C3 , S6104C7 {
  ::S20469C23_nt s6104c1f0;
  virtual  ~S6104C1(); // _ZN7S6104C1D2Ev
  S6104C1(); // tgen
};
//SIG(1 S6104C1) C1{ BC2{ m} BC3{ BC4{ vd m Fi[6]} VBC5{ m} VBC6{ m} Fs} BC7{ BC2 BC8{ vd m FL} VBC9{ m Fp} BC10{ VBC9 VBC8 VBC11{ BC8 VBC4 BC12{ VBC8 vd} FC4} BC13{ BC9 BC14{ VBC4 VBC11 FD} BC15{ vd m} VBC12 vd} VBC16{ vd m Fl}} VBC17{ VBC4 BC11 VBC9 FC10} vd Fi} vd FU18{ m}}


 S6104C1 ::~S6104C1(){ note_dtor("S6104C1", this);}
S6104C1 ::S6104C1(){ note_ctor("S6104C1", this);} // tgen

static void Test_S6104C1()
{
  extern Class_Descriptor cd_S6104C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,87)];
    init_test(&cd_S6104C1, buf);
    S6104C1 *dp, &lv = *(dp=new (buf) S6104C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,344), "sizeof(S6104C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6104C1)");
    /*is_ambiguous_... S6104C1::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S4228C27*)(S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S4228C23*)(S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S6104C3*), 0, "S6104C1");
    check_base_class_offset(lv, (S4228C37*)(S6104C7*), ABISELECT(48,32), "S6104C1");
    /*is_ambiguous_... S6104C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C7*), ABISELECT(48,32), "S6104C1");
    /*is_ambiguous_... S6104C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6104C7*), ABISELECT(120,76), "S6104C1");
    /*is_ambiguous_... S6104C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6104C10*)(S6104C7*), ABISELECT(120,76), "S6104C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C17*), ABISELECT(120,76), "S6104C1");
    /*is_ambiguous_... S6104C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C10*)(S6104C7*), ABISELECT(128,80), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*), ABISELECT(128,80), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C12*), ABISELECT(128,80), "S6104C1");
    check_base_class_offset(lv, (S20760C9*)(S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(128,80), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*), ABISELECT(144,92), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6104C11*), ABISELECT(200,136), "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C14*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(200,136), "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C17*), ABISELECT(200,136), "S6104C1");
    check_base_class_offset(lv, (S20760C13*)(S6104C11*)(S6104C17*), ABISELECT(200,136), "S6104C1");
    /*is_ambiguous_... S6104C1::S6104C11 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C11*), ABISELECT(160,104), "S6104C1");
    check_base_class_offset(lv, (S6104C11*)(S6104C10*)(S6104C7*), ABISELECT(144,92), "S6104C1");
    check_base_class_offset(lv, (S6104C11*)(S6104C14*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(144,92), "S6104C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(96,60), "S6104C1");
    check_base_class_offset(lv, (S6104C14*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(64,44), "S6104C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(104,64), "S6104C1");
    /*is_ambiguous_... S6104C13::S6104C12 */ AMB_check_base_class_offset(lv, (S6104C12*)(S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(232,164), "S6104C1");
    check_base_class_offset(lv, (S6104C13*)(S6104C10*)(S6104C7*), ABISELECT(64,44), "S6104C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S6104C10*)(S6104C7*), ABISELECT(240,168), "S6104C1");
    check_base_class_offset(lv, (S6104C10*)(S6104C7*), ABISELECT(64,44), "S6104C1");
    /*is_ambiguous_... S6104C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6104C11*)(S6104C17*), ABISELECT(256,176), "S6104C1");
    check_base_class_offset(lv, (S6104C12*)(S6104C11*)(S6104C17*), ABISELECT(272,188), "S6104C1");
    check_base_class_offset(lv, (S6104C11*)(S6104C17*), ABISELECT(256,176), "S6104C1");
    check_base_class_offset(lv, (S6104C17*)(S6104C7*), ABISELECT(256,176), "S6104C1");
    check_base_class_offset(lv, (S6104C7*), ABISELECT(48,32), "S6104C1");
    check_field_offset(lv, s6104c1f0, ABISELECT(116,72), "S6104C1.s6104c1f0");
    test_class_info(&lv, &cd_S6104C1);
    dp->~S6104C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6104C1(Test_S6104C1, "S6104C1", ABISELECT(512,344));

#else // __cplusplus

extern void _ZN7S6104C1C1Ev();
extern void _ZN7S6104C1D2Ev();
Name_Map name_map_S6104C1[] = {
  NSPAIR(_ZN7S6104C1C1Ev),
  NSPAIR(_ZN7S6104C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S6104C3;
extern VTBL_ENTRY _ZTI7S6104C3[];
extern  VTBL_ENTRY _ZTV7S6104C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6104C14;
extern VTBL_ENTRY _ZTI8S6104C14[];
extern  VTBL_ENTRY _ZTV8S6104C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C13;
extern VTBL_ENTRY _ZTI8S6104C13[];
extern  VTBL_ENTRY _ZTV8S6104C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C13[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S6104C10;
extern VTBL_ENTRY _ZTI8S6104C10[];
extern  VTBL_ENTRY _ZTV8S6104C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6104C12;
extern VTBL_ENTRY _ZTI8S6104C12[];
extern  VTBL_ENTRY _ZTV8S6104C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C12[];
extern Class_Descriptor cd_S6104C11;
extern VTBL_ENTRY _ZTI8S6104C11[];
extern  VTBL_ENTRY _ZTV8S6104C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C11[];
extern Class_Descriptor cd_S6104C17;
extern VTBL_ENTRY _ZTI8S6104C17[];
extern  VTBL_ENTRY _ZTV8S6104C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6104C17[];
extern Class_Descriptor cd_S6104C7;
extern VTBL_ENTRY _ZTI7S6104C7[];
extern  VTBL_ENTRY _ZTV7S6104C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C7[];
static Base_Class bases_S6104C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6104C3,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,80), //bcp->offset
    38, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(144,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
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(200,136), //bcp->offset
    55, //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
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6104C12,    ABISELECT(160,104), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(144,92), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C14,    ABISELECT(64,44), //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
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(104,64), //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(232,164), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6104C13,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(240,168), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S6104C10,    ABISELECT(64,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(256,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
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6104C12,    ABISELECT(272,188), //bcp->offset
    79, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6104C11,    ABISELECT(256,176), //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
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6104C17,    ABISELECT(256,176), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6104C7,    ABISELECT(48,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6104C1[];
extern void _ZN7S6104C1D1Ev();
extern void _ZN7S6104C1D0Ev();
extern void ABISELECT(_ZThn48_N7S6104C1D1Ev,_ZThn32_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6104C1D0Ev,_ZThn32_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S6104C1D1Ev,_ZThn44_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S6104C1D0Ev,_ZThn44_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S6104C1D1Ev,_ZThn64_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S6104C1D0Ev,_ZThn64_N7S6104C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6104C1D1Ev,_ZThn80_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6104C1D0Ev,_ZThn80_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C1D1Ev,_ZTv0_n20_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6104C1D1Ev,_ZThn92_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C1D0Ev,_ZTv0_n20_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6104C1D0Ev,_ZThn92_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6104C1D1Ev,_ZTvn12_n20_N7S6104C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6104C1D0Ev,_ZTvn12_n20_N7S6104C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S6104C1D1Ev,_ZThn136_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S6104C1D0Ev,_ZThn136_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C1D1Ev,_ZTv0_n16_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S6104C1D1Ev,_ZThn164_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C1D0Ev,_ZTv0_n16_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S6104C1D0Ev,_ZThn164_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S6104C1D1Ev,_ZThn168_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S6104C1D0Ev,_ZThn168_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C1D1Ev,_ZTv0_n24_N7S6104C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S6104C1D1Ev,_ZThn176_N7S6104C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C1D0Ev,_ZTv0_n24_N7S6104C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S6104C1D0Ev,_ZThn176_N7S6104C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6104C1D1Ev,_ZTvn12_n24_N7S6104C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6104C1D0Ev,_ZTvn12_n24_N7S6104C1D0Ev)();
static  VTBL_ENTRY vtc_S6104C1[] = {
  ABISELECT(256,176),
  ABISELECT(240,168),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(120,76),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&_ZN7S6104C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C1D0Ev,
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6104C1D1Ev,_ZThn32_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6104C1D0Ev,_ZThn32_N7S6104C1D0Ev),
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6104C1D1Ev,_ZThn44_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6104C1D0Ev,_ZThn44_N7S6104C1D0Ev),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6104C1D1Ev,_ZThn64_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6104C1D0Ev,_ZThn64_N7S6104C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C1D1Ev,_ZTv0_n20_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C1D0Ev,_ZTv0_n20_N7S6104C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C1D1Ev,_ZTvn12_n20_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C1D0Ev,_ZTvn12_n20_N7S6104C1D0Ev),
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev),
  ABISELECT(-232,-164),
  ABISELECT(-104,-84),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C1D1Ev,_ZTv0_n16_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C1D0Ev,_ZTv0_n16_N7S6104C1D0Ev),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev),
  ABISELECT(-256,-176),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C1D1Ev,_ZTv0_n24_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C1D0Ev,_ZTv0_n24_N7S6104C1D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI7S6104C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C1D1Ev,_ZTvn12_n24_N7S6104C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C1D0Ev,_ZTvn12_n24_N7S6104C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6104C1[];
extern void _ZN7S6104C3D1Ev();
extern void _ZN7S6104C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6104C3__7S6104C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C3[0]),
  (VTBL_ENTRY)&_ZN7S6104C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C3D0Ev,
};
extern void _ZN7S6104C7D1Ev();
extern void _ZN7S6104C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6104C7__7S6104C1[] = {
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&_ZN7S6104C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6104C7D0Ev,
};
extern void _ZN8S6104C10D1Ev();
extern void _ZN8S6104C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&_ZN8S6104C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C10D0Ev,
};
extern void _ZN8S6104C13D1Ev();
extern void _ZN8S6104C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&_ZN8S6104C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C13D0Ev,
};
extern void _ZN8S6104C14D1Ev();
extern void _ZN8S6104C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&_ZN8S6104C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn92_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn92_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn48_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn48_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D1Ev,_ZTvn12_n20_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C14D0Ev,_ZTvn12_n20_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn36_N8S6104C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn36_N8S6104C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6104C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn92_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn92_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn48_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn48_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D1Ev,_ZTvn12_n20_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C13D0Ev,_ZTvn12_n20_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn36_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn36_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn120_N8S6104C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn120_N8S6104C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C138S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6104C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn36_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn36_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn48_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn48_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn92_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn92_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D1Ev,_ZTvn12_n20_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6104C10D0Ev,_ZTvn12_n20_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn124_N8S6104C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn124_N8S6104C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S6104C107S6104C7__7S6104C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI8S6104C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev),
};
extern void ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C10__7S6104C7__7S6104C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D1Ev,_ZThn12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6104C7D0Ev,_ZThn12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn48_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn48_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S6104C7__7S6104C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn60_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn60_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C11__7S6104C7__7S6104C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn104_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn104_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S6104C7__7S6104C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__7S6104C7__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D1Ev,_ZTvn12_n20_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6104C7D0Ev,_ZTvn12_n20_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__7S6104C7__7S6104C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn136_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn136_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S6104C7__7S6104C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn144_N7S6104C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn144_N7S6104C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6104C17__7S6104C7__7S6104C1[] = {
  ABISELECT(-208,-144),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7__7S6104C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S6104C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D1Ev,_ZTvn12_n24_N7S6104C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6104C7D0Ev,_ZTvn12_n24_N7S6104C7D0Ev),
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C11__7S6104C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__7S6104C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C11__7S6104C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C11__7S6104C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C11__7S6104C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C12__A1__7S6104C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C12__A1__7S6104C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void _ZN8S6104C17D1Ev();
extern void _ZN8S6104C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C17__7S6104C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&_ZN8S6104C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C17D0Ev,
};
extern void _ZN8S6104C11D1Ev();
extern void _ZN8S6104C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&_ZN8S6104C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C11D0Ev,
};
extern void _ZN8S6104C12D1Ev();
extern void _ZN8S6104C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C1[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&_ZN8S6104C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6104C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C1[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S6104C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D1Ev,_ZTv0_n12_N8S6104C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C12D0Ev,_ZTv0_n12_N8S6104C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D1Ev,_ZThn12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C11D0Ev,_ZThn12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6104C17__7S6104C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D1Ev,_ZThn12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6104C17D0Ev,_ZThn12_N8S6104C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6104C17__7S6104C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S6104C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D1Ev,_ZTv0_n12_N8S6104C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6104C17D0Ev,_ZTv0_n12_N8S6104C17D0Ev),
};
static  VTT_ENTRY vtt_S6104C1[] = {
  {&(_ZTV7S6104C1[11]),  11,84},
  {&(_tg__ZTV7S6104C3__7S6104C1[4]),  4,6},
  {&(_tg__ZTV7S6104C7__7S6104C1[9]),  9,11},
  {&(_tg__ZTV8S6104C107S6104C7__7S6104C1[8]),  8,10},
  {&(_tg__ZTV8S6104C138S6104C107S6104C7__7S6104C1[6]),  6,8},
  {&(_tg__ZTV8S6104C148S6104C138S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C148S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C138S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C138S6104C107S6104C7__7S6104C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__8S6104C107S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__8S6104C107S6104C7__7S6104C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__8S6104C107S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C10__7S6104C7__7S6104C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C11__7S6104C7__7S6104C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__7S6104C7__7S6104C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S6104C7__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C17__7S6104C7__7S6104C1[6]),  6,8},
  {&(_tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C7__7S6104C1[3]),  3,5},
  {&(_ZTV7S6104C1[22]),  22,84},
  {&(_ZTV7S6104C1[32]),  32,84},
  {&(_ZTV7S6104C1[41]),  41,84},
  {&(_ZTV7S6104C1[48]),  48,84},
  {&(_ZTV7S6104C1[58]),  58,84},
  {&(_ZTV7S6104C1[53]),  53,84},
  {&(_ZTV7S6104C1[64]),  64,84},
  {&(_ZTV7S6104C1[69]),  69,84},
  {&(_ZTV7S6104C1[77]),  77,84},
  {&(_ZTV7S6104C1[82]),  82,84},
  {&(_tg__ZTV8S6104C11__7S6104C1[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C11__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C12__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C17__7S6104C1[5]),  5,7},
  {&(_tg__ZTV8S6104C118S6104C17__A1__7S6104C1[4]),  4,6},
  {&(_tg__ZTV8S6104C128S6104C118S6104C17__A2__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6104C128S6104C118S6104C17__A2__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C118S6104C17__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C12__8S6104C118S6104C17__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C118S6104C17__A1__7S6104C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6104C17__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S6104C128S6104C11__8S6104C17__7S6104C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6104C17__7S6104C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6104C1[];
extern  VTBL_ENTRY _ZTV7S6104C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6104C1[];
static VTBL_ENTRY alt_thunk_names203[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D0Ev,_ZTv0_n12_N8S6104C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D0Ev,_ZThn44_N8S6104C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C11D1Ev,_ZTv0_n12_N8S6104C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6104C11D1Ev,_ZThn44_N8S6104C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D0Ev,_ZTv0_n24_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D0Ev,_ZThn144_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C7D1Ev,_ZTv0_n24_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6104C7D1Ev,_ZThn144_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D0Ev,_ZTv0_n16_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D0Ev,_ZThn132_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C7D1Ev,_ZTv0_n16_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6104C7D1Ev,_ZThn132_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D0Ev,_ZTv0_n20_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D0Ev,_ZThn60_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C7D1Ev,_ZTv0_n20_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6104C7D1Ev,_ZThn60_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D0Ev,_ZTv0_n12_N7S6104C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D0Ev,_ZThn136_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D0Ev,_ZThn104_N7S6104C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D0Ev,_ZThn48_N7S6104C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C7D1Ev,_ZTv0_n12_N7S6104C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6104C7D1Ev,_ZThn136_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6104C7D1Ev,_ZThn104_N7S6104C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6104C7D1Ev,_ZThn48_N7S6104C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D0Ev,_ZTv0_n16_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D0Ev,_ZThn120_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C10D1Ev,_ZTv0_n16_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C10D1Ev,_ZThn120_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D0Ev,_ZTv0_n20_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D0Ev,_ZThn48_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C10D1Ev,_ZTv0_n20_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C10D1Ev,_ZThn48_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D0Ev,_ZTv0_n12_N8S6104C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D0Ev,_ZThn124_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D0Ev,_ZThn92_N8S6104C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D0Ev,_ZThn36_N8S6104C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C10D1Ev,_ZTv0_n12_N8S6104C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6104C10D1Ev,_ZThn124_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C10D1Ev,_ZThn92_N8S6104C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C10D1Ev,_ZThn36_N8S6104C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D0Ev,_ZTv0_n16_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D0Ev,_ZThn120_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6104C13D1Ev,_ZTv0_n16_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6104C13D1Ev,_ZThn120_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D0Ev,_ZTv0_n20_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D0Ev,_ZThn48_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C13D1Ev,_ZTv0_n20_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C13D1Ev,_ZThn48_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D0Ev,_ZTv0_n12_N8S6104C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D0Ev,_ZThn36_N8S6104C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D0Ev,_ZThn92_N8S6104C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C13D1Ev,_ZTv0_n12_N8S6104C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C13D1Ev,_ZThn36_N8S6104C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C13D1Ev,_ZThn92_N8S6104C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D0Ev,_ZTv0_n20_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D0Ev,_ZThn48_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6104C14D1Ev,_ZTv0_n20_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6104C14D1Ev,_ZThn48_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D0Ev,_ZTv0_n12_N8S6104C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D0Ev,_ZThn36_N8S6104C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D0Ev,_ZThn92_N8S6104C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6104C14D1Ev,_ZTv0_n12_N8S6104C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6104C14D1Ev,_ZThn36_N8S6104C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6104C14D1Ev,_ZThn92_N8S6104C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C1D0Ev,_ZTv0_n24_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6104C1D0Ev,_ZThn176_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6104C1D1Ev,_ZTv0_n24_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6104C1D1Ev,_ZThn176_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C1D0Ev,_ZTv0_n16_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6104C1D0Ev,_ZThn164_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6104C1D1Ev,_ZTv0_n16_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6104C1D1Ev,_ZThn164_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C1D0Ev,_ZTv0_n20_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6104C1D0Ev,_ZThn92_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6104C1D1Ev,_ZTv0_n20_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6104C1D1Ev,_ZThn92_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C1D0Ev,_ZTv0_n12_N7S6104C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6104C1D0Ev,_ZThn168_N7S6104C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6104C1D0Ev,_ZThn136_N7S6104C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6104C1D0Ev,_ZThn80_N7S6104C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6104C1D1Ev,_ZTv0_n12_N7S6104C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6104C1D1Ev,_ZThn168_N7S6104C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6104C1D1Ev,_ZThn136_N7S6104C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6104C1D1Ev,_ZThn80_N7S6104C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6104C1 = {  "S6104C1", // class name
  bases_S6104C1, 25,
  &(vtc_S6104C1[0]), // expected_vtbl_contents
  &(vtt_S6104C1[0]), // expected_vtt_contents
  ABISELECT(512,344), // object size
  NSPAIRA(_ZTI7S6104C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6104C1),84, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6104C1),58, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names203,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C3  : S20760C13 , virtual S4228C27 , virtual S4228C23 {
  short s6105c3f0;
  ~S6105C3(); // tgen
  S6105C3(); // tgen
};
//SIG(-1 S6105C3) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S6105C3 ::~S6105C3(){ note_dtor("S6105C3", this);} // tgen
S6105C3 ::S6105C3(){ note_ctor("S6105C3", this);} // tgen

static void Test_S6105C3()
{
  extern Class_Descriptor cd_S6105C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S6105C3, buf);
    S6105C3 *dp, &lv = *(dp=new (buf) S6105C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S6105C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6105C3)");
    check_base_class_offset(lv, (S20760C13*), 0, "S6105C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S6105C3");
    check_base_class_offset(lv, (S4228C23*), 0, "S6105C3");
    check_field_offset(lv, s6105c3f0, ABISELECT(32,28), "S6105C3.s6105c3f0");
    test_class_info(&lv, &cd_S6105C3);
    dp->~S6105C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C3(Test_S6105C3, "S6105C3", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN7S6105C3C1Ev();
extern void _ZN7S6105C3D1Ev();
Name_Map name_map_S6105C3[] = {
  NSPAIR(_ZN7S6105C3C1Ev),
  NSPAIR(_ZN7S6105C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
static Base_Class bases_S6105C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S6105C3[];
extern void _ZN7S6105C3D1Ev();
extern void _ZN7S6105C3D0Ev();
static  VTBL_ENTRY vtc_S6105C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C3[0]),
  (VTBL_ENTRY)&_ZN7S6105C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S6105C3[];
static  VTT_ENTRY vtt_S6105C3[] = {
  {&(_ZTV7S6105C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6105C3[];
extern  VTBL_ENTRY _ZTV7S6105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C3[];
Class_Descriptor cd_S6105C3 = {  "S6105C3", // class name
  bases_S6105C3, 3,
  &(vtc_S6105C3[0]), // expected_vtbl_contents
  &(vtt_S6105C3[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI7S6105C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6105C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6105C3),1, //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  S6105C12  : virtual S20760C9 {
  virtual  ~S6105C12(); // _ZN8S6105C12D2Ev
  S6105C12(); // tgen
};
//SIG(-1 S6105C12) C1{ VBC2{ vd m FL} vd}


 S6105C12 ::~S6105C12(){ note_dtor("S6105C12", this);}
S6105C12 ::S6105C12(){ note_ctor("S6105C12", this);} // tgen

static void Test_S6105C12()
{
  extern Class_Descriptor cd_S6105C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6105C12, buf);
    S6105C12 *dp, &lv = *(dp=new (buf) S6105C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6105C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6105C12)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S6105C12");
    test_class_info(&lv, &cd_S6105C12);
    dp->~S6105C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C12(Test_S6105C12, "S6105C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S6105C12C1Ev();
extern void _ZN8S6105C12D2Ev();
Name_Map name_map_S6105C12[] = {
  NSPAIR(_ZN8S6105C12C1Ev),
  NSPAIR(_ZN8S6105C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S6105C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C12[];
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S6105C12D1Ev,_ZThn4_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S6105C12D0Ev,_ZThn4_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C12[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C12[];
static  VTT_ENTRY vtt_S6105C12[] = {
  {&(_ZTV8S6105C12[3]),  3,10},
  {&(_ZTV8S6105C12[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
static VTBL_ENTRY alt_thunk_names204[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6105C12D0Ev,_ZThn4_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6105C12D1Ev,_ZThn4_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C12 = {  "S6105C12", // class name
  bases_S6105C12, 1,
  &(vtc_S6105C12[0]), // expected_vtbl_contents
  &(vtt_S6105C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S6105C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6105C12),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C12),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names204,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C11  : S20760C9 , virtual S20760C13 , S6105C12 {
  ::S20760C13 s6105c11f0;
  ~S6105C11(); // tgen
  S6105C11(); // tgen
};
//SIG(-1 S6105C11) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S6105C11 ::~S6105C11(){ note_dtor("S6105C11", this);} // tgen
S6105C11 ::S6105C11(){ note_ctor("S6105C11", this);} // tgen

static void Test_S6105C11()
{
  extern Class_Descriptor cd_S6105C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S6105C11, buf);
    S6105C11 *dp, &lv = *(dp=new (buf) S6105C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S6105C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6105C11)");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6105C11");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S6105C11");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(88,72), "S6105C11");
    check_base_class_offset(lv, (S6105C12*), ABISELECT(16,12), "S6105C11");
    check_field_offset(lv, s6105c11f0, ABISELECT(24,16), "S6105C11.s6105c11f0");
    test_class_info(&lv, &cd_S6105C11);
    dp->~S6105C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C11(Test_S6105C11, "S6105C11", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S6105C11C1Ev();
extern void _ZN8S6105C11D1Ev();
Name_Map name_map_S6105C11[] = {
  NSPAIR(_ZN8S6105C11C1Ev),
  NSPAIR(_ZN8S6105C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
static Base_Class bases_S6105C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C11[];
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn88_N8S6105C11D1Ev,_ZThn72_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn88_N8S6105C11D0Ev,_ZThn72_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C11[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C11[];
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C12D1Ev,_ZThn60_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C12D0Ev,_ZThn60_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__8S6105C11[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
static  VTT_ENTRY vtt_S6105C11[] = {
  {&(_ZTV8S6105C11[4]),  4,21},
  {&(_tg__ZTV8S6105C12__8S6105C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__8S6105C11[3]),  3,5},
  {&(_ZTV8S6105C11[14]),  14,21},
  {&(_ZTV8S6105C11[9]),  9,21},
  {&(_ZTV8S6105C11[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
static VTBL_ENTRY alt_thunk_names205[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C12D0Ev,_ZThn60_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C12D1Ev,_ZThn60_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6105C11D0Ev,_ZThn72_N8S6105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S6105C11D1Ev,_ZThn72_N8S6105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C11 = {  "S6105C11", // class name
  bases_S6105C11, 4,
  &(vtc_S6105C11[0]), // expected_vtbl_contents
  &(vtt_S6105C11[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S6105C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6105C11),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C11),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names205,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C14  : virtual S20760C13 , virtual S6105C11 {
  long double s6105c14f0;
  ~S6105C14(); // tgen
  S6105C14(); // tgen
};
//SIG(-1 S6105C14) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S6105C14 ::~S6105C14(){ note_dtor("S6105C14", this);} // tgen
S6105C14 ::S6105C14(){ note_ctor("S6105C14", this);} // tgen

static void Test_S6105C14()
{
  extern Class_Descriptor cd_S6105C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S6105C14, buf);
    S6105C14 *dp, &lv = *(dp=new (buf) S6105C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S6105C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S6105C14");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(32,16), "S6105C14");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(64,44), "S6105C14");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(120,88), "S6105C14");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(80,56), "S6105C14");
    check_base_class_offset(lv, (S6105C11*), ABISELECT(64,44), "S6105C14");
    check_field_offset(lv, s6105c14f0, ABISELECT(16,4), "S6105C14.s6105c14f0");
    test_class_info(&lv, &cd_S6105C14);
    dp->~S6105C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C14(Test_S6105C14, "S6105C14", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S6105C14C1Ev();
extern void _ZN8S6105C14D1Ev();
Name_Map name_map_S6105C14[] = {
  NSPAIR(_ZN8S6105C14C1Ev),
  NSPAIR(_ZN8S6105C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
static Base_Class bases_S6105C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C14[];
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn32_N8S6105C14D1Ev,_ZThn16_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn32_N8S6105C14D0Ev,_ZThn16_N8S6105C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn120_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn120_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C14[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C14[];
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C14[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C14[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C14[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C14[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C14[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C14[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
static  VTT_ENTRY vtt_S6105C14[] = {
  {&(_ZTV8S6105C14[5]),  5,29},
  {&(_ZTV8S6105C14[10]),  10,29},
  {&(_ZTV8S6105C14[17]),  17,29},
  {&(_ZTV8S6105C14[22]),  22,29},
  {&(_ZTV8S6105C14[27]),  27,29},
  {&(_tg__ZTV8S6105C11__8S6105C14[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
static VTBL_ENTRY alt_thunk_names206[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6105C14D0Ev,_ZThn16_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S6105C14D1Ev,_ZThn16_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C14 = {  "S6105C14", // class name
  bases_S6105C14, 5,
  &(vtc_S6105C14[0]), // expected_vtbl_contents
  &(vtt_S6105C14[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S6105C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6105C14),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C14),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names206,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C13  : S4161C4_nt , S6105C14 , S20760C22_nt , virtual S6105C12 {
  virtual  ~S6105C13(); // _ZN8S6105C13D2Ev
  S6105C13(); // tgen
};
//SIG(-1 S6105C13) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S6105C13 ::~S6105C13(){ note_dtor("S6105C13", this);}
S6105C13 ::S6105C13(){ note_ctor("S6105C13", this);} // tgen

static void Test_S6105C13()
{
  extern Class_Descriptor cd_S6105C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S6105C13, buf);
    S6105C13 *dp, &lv = *(dp=new (buf) S6105C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S6105C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C13)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S6105C13");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*), ABISELECT(48,24), "S6105C13");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(48,24), "S6105C13");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(80,52), "S6105C13");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(136,96), "S6105C13");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(136,96), "S6105C13");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(96,64), "S6105C13");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*), ABISELECT(80,52), "S6105C13");
    check_base_class_offset(lv, (S6105C14*), 0, "S6105C13");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S6105C13");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*), ABISELECT(152,108), "S6105C13");
    test_class_info(&lv, &cd_S6105C13);
    dp->~S6105C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C13(Test_S6105C13, "S6105C13", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S6105C13C1Ev();
extern void _ZN8S6105C13D2Ev();
Name_Map name_map_S6105C13[] = {
  NSPAIR(_ZN8S6105C13C1Ev),
  NSPAIR(_ZN8S6105C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
static Base_Class bases_S6105C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6105C14,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6105C12,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C13[];
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
extern void ABISELECT(_ZThn40_N8S6105C13D1Ev,_ZThn20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C13D0Ev,_ZThn20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn48_N8S6105C13D1Ev,_ZThn24_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn48_N8S6105C13D0Ev,_ZThn24_N8S6105C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn52_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn52_N8S6105C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn96_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn96_N8S6105C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn152_N8S6105C13D1Ev,_ZThn108_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn152_N8S6105C13D0Ev,_ZThn108_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C13[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C13D1Ev,_ZThn20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C13D0Ev,_ZThn20_N8S6105C13D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C13[];
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C14__8S6105C13[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn48_N8S6105C14D1Ev,_ZThn24_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn48_N8S6105C14D0Ev,_ZThn24_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C14__8S6105C13[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn52_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn52_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C14__8S6105C13[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C14__8S6105C13[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn96_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn96_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C14__8S6105C13[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C13[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C13[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C13[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C13[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C13[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__8S6105C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
static  VTT_ENTRY vtt_S6105C13[] = {
  {&(_ZTV8S6105C13[6]),  6,40},
  {&(_tg__ZTV8S6105C14__8S6105C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C14__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C14__8S6105C13[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C14__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C14__8S6105C13[3]),  3,5},
  {&(_ZTV8S6105C13[15]),  15,40},
  {&(_ZTV8S6105C13[22]),  22,40},
  {&(_ZTV8S6105C13[27]),  27,40},
  {&(_ZTV8S6105C13[32]),  32,40},
  {&(_ZTV8S6105C13[38]),  38,40},
  {&(_tg__ZTV8S6105C11__8S6105C13[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__8S6105C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
static VTBL_ENTRY alt_thunk_names207[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D0Ev,_ZThn32_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S6105C12D1Ev,_ZThn32_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn52_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn52_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn96_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C14D0Ev,_ZThn24_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn96_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C14D1Ev,_ZThn24_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6105C13D0Ev,_ZThn108_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6105C13D1Ev,_ZThn108_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn52_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn52_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn96_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C13D0Ev,_ZThn24_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn96_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S6105C13D1Ev,_ZThn24_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C13 = {  "S6105C13", // class name
  bases_S6105C13, 9,
  &(vtc_S6105C13[0]), // expected_vtbl_contents
  &(vtt_S6105C13[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S6105C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6105C13),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C13),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names207,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C10  : virtual S4161C4_nt , virtual S20760C9 , virtual S6105C11 , S6105C13 , virtual S20760C5_nt {
  ~S6105C10(); // tgen
  S6105C10(); // tgen
};
//SIG(-1 S6105C10) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S6105C10 ::~S6105C10(){ note_dtor("S6105C10", this);} // tgen
S6105C10 ::S6105C10(){ note_ctor("S6105C10", this);} // tgen

static void Test_S6105C10()
{
  extern Class_Descriptor cd_S6105C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S6105C10, buf);
    S6105C10 *dp, &lv = *(dp=new (buf) S6105C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S6105C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C10)");
    /*is_ambiguous_... S6105C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S6105C10");
    /*is_ambiguous_... S6105C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S6105C10");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(56,28), "S6105C10");
    /*is_ambiguous_... S6105C10::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(56,28), "S6105C10");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(72,40), "S6105C10");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(128,84), "S6105C10");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*)(S6105C13*), ABISELECT(128,84), "S6105C10");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(88,52), "S6105C10");
    check_base_class_offset(lv, (S6105C11*), ABISELECT(72,40), "S6105C10");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*)(S6105C13*), ABISELECT(72,40), "S6105C10");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C13*), ABISELECT(32,16), "S6105C10");
    check_base_class_offset(lv, (S6105C14*)(S6105C13*), 0, "S6105C10");
    check_base_class_offset(lv, (S20760C22_nt*)(S6105C13*), ABISELECT(40,20), "S6105C10");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C13*), ABISELECT(160,112), "S6105C10");
    check_base_class_offset(lv, (S6105C13*), 0, "S6105C10");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S6105C10");
    test_class_info(&lv, &cd_S6105C10);
    dp->~S6105C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C10(Test_S6105C10, "S6105C10", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN8S6105C10C1Ev();
extern void _ZN8S6105C10D1Ev();
Name_Map name_map_S6105C10[] = {
  NSPAIR(_ZN8S6105C10C1Ev),
  NSPAIR(_ZN8S6105C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C13;
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S6105C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S6105C14,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6105C13,    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_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C10[];
extern void _ZN8S6105C10D1Ev();
extern void _ZN8S6105C10D0Ev();
extern void ABISELECT(_ZThn40_N8S6105C10D1Ev,_ZThn20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S6105C10D0Ev,_ZThn20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C10D1Ev,_ZThn28_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C10D0Ev,_ZThn28_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C10D1Ev,_ZThn40_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C10D0Ev,_ZThn40_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S6105C10D1Ev,_ZThn84_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S6105C10D0Ev,_ZThn84_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S6105C10D1Ev,_ZThn112_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S6105C10D0Ev,_ZThn112_N8S6105C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C10[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&_ZN8S6105C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C10D1Ev,_ZThn20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S6105C10D0Ev,_ZThn20_N8S6105C10D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C10[];
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C13__8S6105C10[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
};
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S6105C14D1Ev,_ZThn84_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S6105C14D0Ev,_ZThn84_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C14D1Ev,_ZThn40_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C14D0Ev,_ZThn40_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C14D1Ev,_ZThn28_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C14D0Ev,_ZThn28_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C148S6105C13__8S6105C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S6105C13D1Ev,_ZThn84_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S6105C13D0Ev,_ZThn84_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C13__8S6105C10[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S6105C13D1Ev,_ZThn40_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S6105C13D0Ev,_ZThn40_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C13__8S6105C10[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C13__8S6105C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C13D1Ev,_ZThn28_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C13D0Ev,_ZThn28_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C13__8S6105C10[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn160_N8S6105C13D1Ev,_ZThn112_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn160_N8S6105C13D0Ev,_ZThn112_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C13__8S6105C10[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C10[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C10[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C10[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C10[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C10[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__8S6105C10[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
static  VTT_ENTRY vtt_S6105C10[] = {
  {&(_ZTV8S6105C10[8]),  8,47},
  {&(_tg__ZTV8S6105C13__8S6105C10[6]),  6,8},
  {&(_tg__ZTV8S6105C148S6105C13__8S6105C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C148S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C148S6105C13__8S6105C10[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C148S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C148S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C13__8S6105C10[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C13__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C13__8S6105C10[4]),  4,6},
  {&(_ZTV8S6105C10[17]),  17,47},
  {&(_ZTV8S6105C10[24]),  24,47},
  {&(_ZTV8S6105C10[34]),  34,47},
  {&(_ZTV8S6105C10[29]),  29,47},
  {&(_ZTV8S6105C10[40]),  40,47},
  {&(_ZTV8S6105C10[45]),  45,47},
  {&(_tg__ZTV8S6105C11__8S6105C10[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__8S6105C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S6105C10[];
extern  VTBL_ENTRY _ZTV8S6105C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C10[];
static VTBL_ENTRY alt_thunk_names208[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C13D0Ev,_ZThn112_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C13D1Ev,_ZThn112_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C13D0Ev,_ZThn40_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C13D1Ev,_ZThn40_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C13D0Ev,_ZThn28_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C13D0Ev,_ZThn84_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C13D1Ev,_ZThn28_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C13D1Ev,_ZThn84_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C14D0Ev,_ZThn40_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C14D1Ev,_ZThn40_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C14D0Ev,_ZThn28_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C14D0Ev,_ZThn84_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C14D1Ev,_ZThn28_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C14D1Ev,_ZThn84_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C10D0Ev,_ZThn112_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S6105C10D1Ev,_ZThn112_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C10D0Ev,_ZThn40_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S6105C10D1Ev,_ZThn40_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C10D0Ev,_ZThn84_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C10D0Ev,_ZThn28_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6105C10D1Ev,_ZThn84_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C10D1Ev,_ZThn28_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C10 = {  "S6105C10", // class name
  bases_S6105C10, 12,
  &(vtc_S6105C10[0]), // expected_vtbl_contents
  &(vtt_S6105C10[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI8S6105C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6105C10),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C10),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names208,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C17  : virtual S20760C13 , S6105C11 , virtual S4161C4_nt {
  ::S6105C10 s6105c17f0;
  ~S6105C17(); // tgen
  S6105C17(); // tgen
};
//SIG(-1 S6105C17) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S6105C17 ::~S6105C17(){ note_dtor("S6105C17", this);} // tgen
S6105C17 ::S6105C17(){ note_ctor("S6105C17", this);} // tgen

static void Test_S6105C17()
{
  extern Class_Descriptor cd_S6105C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S6105C17, buf);
    S6105C17 *dp, &lv = *(dp=new (buf) S6105C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S6105C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C17)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S6105C17");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(256,172), "S6105C17");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), 0, "S6105C17");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(288,200), "S6105C17");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(16,12), "S6105C17");
    check_base_class_offset(lv, (S6105C11*), 0, "S6105C17");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S6105C17");
    check_field_offset(lv, s6105c17f0, ABISELECT(64,44), "S6105C17.s6105c17f0");
    test_class_info(&lv, &cd_S6105C17);
    dp->~S6105C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C17(Test_S6105C17, "S6105C17", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S6105C17C1Ev();
extern void _ZN8S6105C17D1Ev();
Name_Map name_map_S6105C17[] = {
  NSPAIR(_ZN8S6105C17C1Ev),
  NSPAIR(_ZN8S6105C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S6105C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6105C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6105C17[];
extern void _ZN8S6105C17D1Ev();
extern void _ZN8S6105C17D0Ev();
extern void ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn256_N8S6105C17D1Ev,_ZThn172_N8S6105C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
extern void ABISELECT(_ZThn256_N8S6105C17D0Ev,_ZThn172_N8S6105C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn288_N8S6105C17D1Ev,_ZThn200_N8S6105C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
extern void ABISELECT(_ZThn288_N8S6105C17D0Ev,_ZThn200_N8S6105C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6105C17[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&_ZN8S6105C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C17D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
extern VTBL_ENTRY _ZTV8S6105C17[];
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C17[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C17[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZThn272_N8S6105C12D1Ev,_ZThn188_N8S6105C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
extern void ABISELECT(_ZThn272_N8S6105C12D0Ev,_ZThn188_N8S6105C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C17[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn256_N8S6105C11D1Ev,_ZThn172_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn256_N8S6105C11D0Ev,_ZThn172_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__8S6105C17[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__8S6105C17[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn288_N8S6105C11D1Ev,_ZThn200_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn288_N8S6105C11D0Ev,_ZThn200_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__8S6105C17[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
static  VTT_ENTRY vtt_S6105C17[] = {
  {&(_ZTV8S6105C17[5]),  5,22},
  {&(_tg__ZTV8S6105C11__8S6105C17[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__8S6105C17[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__8S6105C17[3]),  3,5},
  {&(_ZTV8S6105C17[15]),  15,22},
  {&(_ZTV8S6105C17[10]),  10,22},
  {&(_ZTV8S6105C17[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S6105C17[];
extern  VTBL_ENTRY _ZTV8S6105C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C17[];
static VTBL_ENTRY alt_thunk_names209[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C11D0Ev,_ZThn200_N8S6105C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C11D0Ev,_ZThn172_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C11D1Ev,_ZThn200_N8S6105C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C11D1Ev,_ZThn172_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6105C12D0Ev,_ZThn188_N8S6105C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S6105C12D1Ev,_ZThn188_N8S6105C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C17D0Ev,_ZThn200_N8S6105C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C17D0Ev,_ZThn172_N8S6105C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S6105C17D1Ev,_ZThn200_N8S6105C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S6105C17D1Ev,_ZThn172_N8S6105C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C17 = {  "S6105C17", // class name
  bases_S6105C17, 6,
  &(vtc_S6105C17[0]), // expected_vtbl_contents
  &(vtt_S6105C17[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S6105C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6105C17),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6105C17),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names209,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C7  : S4228C37 , S20760C9 , virtual S4161C4_nt , S6105C10 , virtual S6105C17 {
  int s6105c7f0;
  virtual  ~S6105C7(); // _ZN7S6105C7D2Ev
  S6105C7(); // tgen
};
//SIG(-1 S6105C7) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S6105C7 ::~S6105C7(){ note_dtor("S6105C7", this);}
S6105C7 ::S6105C7(){ note_ctor("S6105C7", this);} // tgen

static void Test_S6105C7()
{
  extern Class_Descriptor cd_S6105C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S6105C7, buf);
    S6105C7 *dp, &lv = *(dp=new (buf) S6105C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S6105C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C7)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6105C7");
    /*is_ambiguous_... S6105C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S6105C7");
    /*is_ambiguous_... S6105C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S6105C7");
    /*is_ambiguous_... S6105C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6105C10*), ABISELECT(72,40), "S6105C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C17*), ABISELECT(72,40), "S6105C7");
    /*is_ambiguous_... S6105C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C10*), ABISELECT(80,44), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(80,44), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(80,44), "S6105C7");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(80,44), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(96,56), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(152,100), "S6105C7");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*)(S6105C13*)(S6105C10*), ABISELECT(152,100), "S6105C7");
    check_base_class_offset(lv, (S20760C13*)(S6105C17*), ABISELECT(152,100), "S6105C7");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*)(S6105C17*), ABISELECT(152,100), "S6105C7");
    /*is_ambiguous_... S6105C7::S6105C11 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(112,68), "S6105C7");
    check_base_class_offset(lv, (S6105C11*)(S6105C10*), ABISELECT(96,56), "S6105C7");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*)(S6105C13*)(S6105C10*), ABISELECT(96,56), "S6105C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C13*)(S6105C10*), ABISELECT(48,28), "S6105C7");
    check_base_class_offset(lv, (S6105C14*)(S6105C13*)(S6105C10*), ABISELECT(16,12), "S6105C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S6105C13*)(S6105C10*), ABISELECT(56,32), "S6105C7");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C13*)(S6105C10*), ABISELECT(184,128), "S6105C7");
    check_base_class_offset(lv, (S6105C13*)(S6105C10*), ABISELECT(16,12), "S6105C7");
    check_base_class_offset(lv, (S20760C5_nt*)(S6105C10*), ABISELECT(192,132), "S6105C7");
    check_base_class_offset(lv, (S6105C10*), ABISELECT(16,12), "S6105C7");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*)(S6105C17*), ABISELECT(208,144), "S6105C7");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(224,156), "S6105C7");
    check_base_class_offset(lv, (S6105C11*)(S6105C17*), ABISELECT(208,144), "S6105C7");
    check_base_class_offset(lv, (S6105C17*), ABISELECT(208,144), "S6105C7");
    check_field_offset(lv, s6105c7f0, ABISELECT(64,36), "S6105C7.s6105c7f0");
    test_class_info(&lv, &cd_S6105C7);
    dp->~S6105C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C7(Test_S6105C7, "S6105C7", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN7S6105C7C1Ev();
extern void _ZN7S6105C7D2Ev();
Name_Map name_map_S6105C7[] = {
  NSPAIR(_ZN7S6105C7C1Ev),
  NSPAIR(_ZN7S6105C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C13;
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S6105C10;
extern VTBL_ENTRY _ZTI8S6105C10[];
extern  VTBL_ENTRY _ZTV8S6105C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S6105C17;
extern VTBL_ENTRY _ZTI8S6105C17[];
extern  VTBL_ENTRY _ZTV8S6105C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C17[];
static Base_Class bases_S6105C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S6105C14,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6105C13,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6105C10,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(208,144), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6105C17,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6105C7[];
extern void _ZN7S6105C7D1Ev();
extern void _ZN7S6105C7D0Ev();
extern void ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S6105C7D1Ev,_ZThn32_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S6105C7D0Ev,_ZThn32_N7S6105C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn44_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn44_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn56_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn56_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn100_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn100_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn128_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn128_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn144_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn144_N7S6105C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev)();
static  VTBL_ENTRY vtc_S6105C7[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&_ZN7S6105C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C7D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6105C7D1Ev,_ZThn32_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S6105C7D0Ev,_ZThn32_N7S6105C7D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S6105C7[];
extern void _ZN8S6105C10D1Ev();
extern void _ZN8S6105C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C10__7S6105C7[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&_ZN8S6105C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C10D0Ev,
};
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
};
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn32_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn32_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn88_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn88_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn44_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn44_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn32_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn32_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn116_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn116_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C138S6105C10__7S6105C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn32_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn32_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C10__7S6105C7[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn44_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn44_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C10__7S6105C7[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn88_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn88_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C10__7S6105C7[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C10__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C10__7S6105C7[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S6105C10__7S6105C7[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__7S6105C7[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__7S6105C7[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C7[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__7S6105C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__7S6105C7[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__7S6105C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__7S6105C7[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__7S6105C7[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void _ZN8S6105C17D1Ev();
extern void _ZN8S6105C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C17__7S6105C7[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&_ZN8S6105C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C17D0Ev,
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C7[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C7[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C17__7S6105C7[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C7[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C17__7S6105C7[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
static  VTT_ENTRY vtt_S6105C7[] = {
  {&(_ZTV7S6105C7[9]),  9,71},
  {&(_tg__ZTV8S6105C10__7S6105C7[8]),  8,10},
  {&(_tg__ZTV8S6105C138S6105C10__7S6105C7[6]),  6,8},
  {&(_tg__ZTV8S6105C148S6105C138S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C148S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C138S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C138S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C138S6105C10__7S6105C7[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C10__7S6105C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C10__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C10__7S6105C7[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S6105C10__7S6105C7[3]),  3,5},
  {&(_ZTV7S6105C7[19]),  19,71},
  {&(_ZTV7S6105C7[28]),  28,71},
  {&(_ZTV7S6105C7[35]),  35,71},
  {&(_ZTV7S6105C7[45]),  45,71},
  {&(_ZTV7S6105C7[40]),  40,71},
  {&(_ZTV7S6105C7[51]),  51,71},
  {&(_ZTV7S6105C7[56]),  56,71},
  {&(_ZTV7S6105C7[64]),  64,71},
  {&(_ZTV7S6105C7[69]),  69,71},
  {&(_tg__ZTV8S6105C11__7S6105C7[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C17__7S6105C7[5]),  5,7},
  {&(_tg__ZTV8S6105C118S6105C17__A1__7S6105C7[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C17__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C17__7S6105C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6105C7[];
extern  VTBL_ENTRY _ZTV7S6105C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C7[];
static VTBL_ENTRY alt_thunk_names210[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn116_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn116_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn44_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn44_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn88_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn32_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn88_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn32_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn116_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn116_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn44_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn44_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn32_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn88_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn32_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn88_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn44_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn44_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn32_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn88_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn32_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn88_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn144_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn144_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn128_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn128_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn56_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn56_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn100_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn44_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn100_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn44_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C7 = {  "S6105C7", // class name
  bases_S6105C7, 19,
  &(vtc_S6105C7[0]), // expected_vtbl_contents
  &(vtt_S6105C7[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI7S6105C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6105C7),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6105C7),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names210,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6105C1  : S4228C37 , S6105C3 , S6105C7 {
  ::S20469C23_nt s6105c1f0;
  virtual  ~S6105C1(); // _ZN7S6105C1D2Ev
  S6105C1(); // tgen
};
//SIG(1 S6105C1) C1{ BC2{ m} BC3{ BC4{ vd m Fi[6]} VBC5{ m} VBC6{ m} Fs} BC7{ BC2 BC8{ vd m FL} VBC9{ m Fp} BC10{ VBC9 VBC8 VBC11{ BC8 VBC4 BC12{ VBC8 vd} FC4} BC13{ BC9 BC14{ VBC4 VBC11 FD} BC15{ vd m} VBC12 vd} VBC16{ vd m FL}} VBC17{ VBC4 BC11 VBC9 FC10} vd Fi} vd FU18{ m}}


 S6105C1 ::~S6105C1(){ note_dtor("S6105C1", this);}
S6105C1 ::S6105C1(){ note_ctor("S6105C1", this);} // tgen

static void Test_S6105C1()
{
  extern Class_Descriptor cd_S6105C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(33,89)];
    init_test(&cd_S6105C1, buf);
    S6105C1 *dp, &lv = *(dp=new (buf) S6105C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(512,352), "sizeof(S6105C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6105C1)");
    /*is_ambiguous_... S6105C1::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S4228C27*)(S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S4228C23*)(S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S6105C3*), 0, "S6105C1");
    check_base_class_offset(lv, (S4228C37*)(S6105C7*), ABISELECT(48,32), "S6105C1");
    /*is_ambiguous_... S6105C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C7*), ABISELECT(48,32), "S6105C1");
    /*is_ambiguous_... S6105C7::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6105C7*), ABISELECT(120,76), "S6105C1");
    /*is_ambiguous_... S6105C10::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S6105C10*)(S6105C7*), ABISELECT(120,76), "S6105C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C17*), ABISELECT(120,76), "S6105C1");
    /*is_ambiguous_... S6105C10::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C10*)(S6105C7*), ABISELECT(128,80), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*), ABISELECT(128,80), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C12 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C12*), ABISELECT(128,80), "S6105C1");
    check_base_class_offset(lv, (S20760C9*)(S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(128,80), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*), ABISELECT(144,92), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S20760C13*)(S6105C11*), ABISELECT(200,136), "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C14*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(200,136), "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C17*), ABISELECT(200,136), "S6105C1");
    check_base_class_offset(lv, (S20760C13*)(S6105C11*)(S6105C17*), ABISELECT(200,136), "S6105C1");
    /*is_ambiguous_... S6105C1::S6105C11 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C11*), ABISELECT(160,104), "S6105C1");
    check_base_class_offset(lv, (S6105C11*)(S6105C10*)(S6105C7*), ABISELECT(144,92), "S6105C1");
    check_base_class_offset(lv, (S6105C11*)(S6105C14*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(144,92), "S6105C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(96,60), "S6105C1");
    check_base_class_offset(lv, (S6105C14*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(64,44), "S6105C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(104,64), "S6105C1");
    /*is_ambiguous_... S6105C13::S6105C12 */ AMB_check_base_class_offset(lv, (S6105C12*)(S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(232,164), "S6105C1");
    check_base_class_offset(lv, (S6105C13*)(S6105C10*)(S6105C7*), ABISELECT(64,44), "S6105C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S6105C10*)(S6105C7*), ABISELECT(240,168), "S6105C1");
    check_base_class_offset(lv, (S6105C10*)(S6105C7*), ABISELECT(64,44), "S6105C1");
    /*is_ambiguous_... S6105C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S6105C11*)(S6105C17*), ABISELECT(256,180), "S6105C1");
    check_base_class_offset(lv, (S6105C12*)(S6105C11*)(S6105C17*), ABISELECT(272,192), "S6105C1");
    check_base_class_offset(lv, (S6105C11*)(S6105C17*), ABISELECT(256,180), "S6105C1");
    check_base_class_offset(lv, (S6105C17*)(S6105C7*), ABISELECT(256,180), "S6105C1");
    check_base_class_offset(lv, (S6105C7*), ABISELECT(48,32), "S6105C1");
    check_field_offset(lv, s6105c1f0, ABISELECT(116,72), "S6105C1.s6105c1f0");
    test_class_info(&lv, &cd_S6105C1);
    dp->~S6105C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6105C1(Test_S6105C1, "S6105C1", ABISELECT(512,352));

#else // __cplusplus

extern void _ZN7S6105C1C1Ev();
extern void _ZN7S6105C1D2Ev();
Name_Map name_map_S6105C1[] = {
  NSPAIR(_ZN7S6105C1C1Ev),
  NSPAIR(_ZN7S6105C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S6105C3;
extern VTBL_ENTRY _ZTI7S6105C3[];
extern  VTBL_ENTRY _ZTV7S6105C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S6105C14;
extern VTBL_ENTRY _ZTI8S6105C14[];
extern  VTBL_ENTRY _ZTV8S6105C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C14[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C13;
extern VTBL_ENTRY _ZTI8S6105C13[];
extern  VTBL_ENTRY _ZTV8S6105C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S6105C10;
extern VTBL_ENTRY _ZTI8S6105C10[];
extern  VTBL_ENTRY _ZTV8S6105C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C10[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S6105C12;
extern VTBL_ENTRY _ZTI8S6105C12[];
extern  VTBL_ENTRY _ZTV8S6105C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C12[];
extern Class_Descriptor cd_S6105C11;
extern VTBL_ENTRY _ZTI8S6105C11[];
extern  VTBL_ENTRY _ZTV8S6105C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C11[];
extern Class_Descriptor cd_S6105C17;
extern VTBL_ENTRY _ZTI8S6105C17[];
extern  VTBL_ENTRY _ZTV8S6105C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6105C17[];
extern Class_Descriptor cd_S6105C7;
extern VTBL_ENTRY _ZTI7S6105C7[];
extern  VTBL_ENTRY _ZTV7S6105C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C7[];
static Base_Class bases_S6105C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6105C3,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    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
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,80), //bcp->offset
    38, //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
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(144,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
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(200,136), //bcp->offset
    55, //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
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S6105C12,    ABISELECT(160,104), //bcp->offset
    50, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(144,92), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S4161C4_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C14,    ABISELECT(64,44), //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
    15, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(104,64), //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
    16, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(232,164), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S6105C13,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(240,168), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S6105C10,    ABISELECT(64,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(256,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6105C12,    ABISELECT(272,192), //bcp->offset
    79, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6105C11,    ABISELECT(256,180), //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
    10, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S6105C17,    ABISELECT(256,180), //bcp->offset
    71, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S6105C7,    ABISELECT(48,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6105C1[];
extern void _ZN7S6105C1D1Ev();
extern void _ZN7S6105C1D0Ev();
extern void ABISELECT(_ZThn48_N7S6105C1D1Ev,_ZThn32_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6105C1D0Ev,_ZThn32_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S6105C1D1Ev,_ZThn44_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S6105C1D0Ev,_ZThn44_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S6105C1D1Ev,_ZThn64_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S6105C1D0Ev,_ZThn64_N7S6105C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn128_N7S6105C1D1Ev,_ZThn80_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn128_N7S6105C1D0Ev,_ZThn80_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C1D1Ev,_ZTv0_n20_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S6105C1D1Ev,_ZThn92_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C1D0Ev,_ZTv0_n20_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S6105C1D0Ev,_ZThn92_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S6105C1D1Ev,_ZTvn12_n20_N7S6105C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6105C1D0Ev,_ZTvn12_n20_N7S6105C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S6105C1D1Ev,_ZThn136_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S6105C1D0Ev,_ZThn136_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C1D1Ev,_ZTv0_n16_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn232_N7S6105C1D1Ev,_ZThn164_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C1D0Ev,_ZTv0_n16_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn232_N7S6105C1D0Ev,_ZThn164_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn240_N7S6105C1D1Ev,_ZThn168_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn240_N7S6105C1D0Ev,_ZThn168_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C1D1Ev,_ZTv0_n24_N7S6105C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S6105C1D1Ev,_ZThn180_N7S6105C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C1D0Ev,_ZTv0_n24_N7S6105C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S6105C1D0Ev,_ZThn180_N7S6105C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S6105C1D1Ev,_ZTvn12_n24_N7S6105C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6105C1D0Ev,_ZTvn12_n24_N7S6105C1D0Ev)();
static  VTBL_ENTRY vtc_S6105C1[] = {
  ABISELECT(256,180),
  ABISELECT(240,168),
  ABISELECT(232,164),
  ABISELECT(200,136),
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(120,76),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&_ZN7S6105C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C1D0Ev,
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6105C1D1Ev,_ZThn32_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6105C1D0Ev,_ZThn32_N7S6105C1D0Ev),
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6105C1D1Ev,_ZThn44_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S6105C1D0Ev,_ZThn44_N7S6105C1D0Ev),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6105C1D1Ev,_ZThn64_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn104_N7S6105C1D0Ev,_ZThn64_N7S6105C1D0Ev),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev),
  ABISELECT(-144,-92),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C1D1Ev,_ZTv0_n20_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C1D0Ev,_ZTv0_n20_N7S6105C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C1D1Ev,_ZTvn12_n20_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C1D0Ev,_ZTvn12_n20_N7S6105C1D0Ev),
  ABISELECT(-200,-136),
  ABISELECT(-200,-136),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev),
  ABISELECT(-232,-164),
  ABISELECT(-104,-84),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C1D1Ev,_ZTv0_n16_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C1D0Ev,_ZTv0_n16_N7S6105C1D0Ev),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev),
  ABISELECT(-256,-180),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C1D1Ev,_ZTv0_n24_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C1D0Ev,_ZTv0_n24_N7S6105C1D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-272,-192),
  (VTBL_ENTRY)&(_ZTI7S6105C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C1D1Ev,_ZTvn12_n24_N7S6105C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C1D0Ev,_ZTvn12_n24_N7S6105C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6105C1[];
extern void _ZN7S6105C3D1Ev();
extern void _ZN7S6105C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6105C3__7S6105C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C3[0]),
  (VTBL_ENTRY)&_ZN7S6105C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C3D0Ev,
};
extern void _ZN7S6105C7D1Ev();
extern void _ZN7S6105C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6105C7__7S6105C1[] = {
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&_ZN7S6105C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6105C7D0Ev,
};
extern void _ZN8S6105C10D1Ev();
extern void _ZN8S6105C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&_ZN8S6105C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C10D0Ev,
};
extern void _ZN8S6105C13D1Ev();
extern void _ZN8S6105C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&_ZN8S6105C13D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C13D0Ev,
};
extern void _ZN8S6105C14D1Ev();
extern void _ZN8S6105C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&_ZN8S6105C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn92_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn92_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn48_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn48_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D1Ev,_ZTvn12_n20_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C14D0Ev,_ZTvn12_n20_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn36_N8S6105C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn36_N8S6105C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6105C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn92_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn92_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn48_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn48_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D1Ev,_ZTvn12_n20_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C13D0Ev,_ZTvn12_n20_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn36_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn36_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn120_N8S6105C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn120_N8S6105C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C138S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6105C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn36_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn36_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn48_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn48_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn92_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn92_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D1Ev,_ZTvn12_n20_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S6105C10D0Ev,_ZTvn12_n20_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn124_N8S6105C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev)();
extern void ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn124_N8S6105C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S6105C107S6105C7__7S6105C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI8S6105C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev),
};
extern void ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C10__7S6105C7__7S6105C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D1Ev,_ZThn12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S6105C7D0Ev,_ZThn12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn48_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn48_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S6105C7__7S6105C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn60_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn60_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C11__7S6105C7__7S6105C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn104_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn104_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S6105C7__7S6105C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__7S6105C7__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D1Ev,_ZTvn12_n20_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S6105C7D0Ev,_ZTvn12_n20_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__7S6105C7__7S6105C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn136_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn136_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S6105C7__7S6105C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn148_N7S6105C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn148_N7S6105C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6105C17__7S6105C7__7S6105C1[] = {
  ABISELECT(-208,-148),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7__7S6105C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S6105C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D1Ev,_ZTvn12_n24_N7S6105C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S6105C7D0Ev,_ZTvn12_n24_N7S6105C7D0Ev),
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C11__7S6105C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__7S6105C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C11__7S6105C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C11__7S6105C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C11__7S6105C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C12__A1__7S6105C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C12__A1__7S6105C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void _ZN8S6105C17D1Ev();
extern void _ZN8S6105C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C17__7S6105C1[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&_ZN8S6105C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C17D0Ev,
};
extern void _ZN8S6105C11D1Ev();
extern void _ZN8S6105C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&_ZN8S6105C11D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C11D0Ev,
};
extern void _ZN8S6105C12D1Ev();
extern void _ZN8S6105C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C1[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&_ZN8S6105C12D1Ev,
  (VTBL_ENTRY)&_ZN8S6105C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C1[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S6105C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D1Ev,_ZTv0_n12_N8S6105C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C12D0Ev,_ZTv0_n12_N8S6105C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D1Ev,_ZThn12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C11D0Ev,_ZThn12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S6105C17__7S6105C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D1Ev,_ZThn12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S6105C17D0Ev,_ZThn12_N8S6105C17D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S6105C17__7S6105C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S6105C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D1Ev,_ZTv0_n12_N8S6105C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S6105C17D0Ev,_ZTv0_n12_N8S6105C17D0Ev),
};
static  VTT_ENTRY vtt_S6105C1[] = {
  {&(_ZTV7S6105C1[11]),  11,84},
  {&(_tg__ZTV7S6105C3__7S6105C1[4]),  4,6},
  {&(_tg__ZTV7S6105C7__7S6105C1[9]),  9,11},
  {&(_tg__ZTV8S6105C107S6105C7__7S6105C1[8]),  8,10},
  {&(_tg__ZTV8S6105C138S6105C107S6105C7__7S6105C1[6]),  6,8},
  {&(_tg__ZTV8S6105C148S6105C138S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C148S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C138S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C138S6105C107S6105C7__7S6105C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__8S6105C107S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__8S6105C107S6105C7__7S6105C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__8S6105C107S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C10__7S6105C7__7S6105C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C11__7S6105C7__7S6105C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__7S6105C7__7S6105C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S6105C7__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C17__7S6105C7__7S6105C1[6]),  6,8},
  {&(_tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C7__7S6105C1[3]),  3,5},
  {&(_ZTV7S6105C1[22]),  22,84},
  {&(_ZTV7S6105C1[32]),  32,84},
  {&(_ZTV7S6105C1[41]),  41,84},
  {&(_ZTV7S6105C1[48]),  48,84},
  {&(_ZTV7S6105C1[58]),  58,84},
  {&(_ZTV7S6105C1[53]),  53,84},
  {&(_ZTV7S6105C1[64]),  64,84},
  {&(_ZTV7S6105C1[69]),  69,84},
  {&(_ZTV7S6105C1[77]),  77,84},
  {&(_ZTV7S6105C1[82]),  82,84},
  {&(_tg__ZTV8S6105C11__7S6105C1[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C11__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C12__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C17__7S6105C1[5]),  5,7},
  {&(_tg__ZTV8S6105C118S6105C17__A1__7S6105C1[4]),  4,6},
  {&(_tg__ZTV8S6105C128S6105C118S6105C17__A2__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S6105C128S6105C118S6105C17__A2__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C118S6105C17__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C12__8S6105C118S6105C17__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C118S6105C17__A1__7S6105C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S6105C17__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S6105C128S6105C11__8S6105C17__7S6105C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S6105C17__7S6105C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S6105C1[];
extern  VTBL_ENTRY _ZTV7S6105C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6105C1[];
static VTBL_ENTRY alt_thunk_names211[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D0Ev,_ZTv0_n12_N8S6105C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D0Ev,_ZThn44_N8S6105C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C11D1Ev,_ZTv0_n12_N8S6105C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6105C11D1Ev,_ZThn44_N8S6105C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D0Ev,_ZTv0_n24_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D0Ev,_ZThn148_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C7D1Ev,_ZTv0_n24_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6105C7D1Ev,_ZThn148_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D0Ev,_ZTv0_n16_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D0Ev,_ZThn132_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C7D1Ev,_ZTv0_n16_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S6105C7D1Ev,_ZThn132_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D0Ev,_ZTv0_n20_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D0Ev,_ZThn60_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C7D1Ev,_ZTv0_n20_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6105C7D1Ev,_ZThn60_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D0Ev,_ZTv0_n12_N7S6105C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D0Ev,_ZThn136_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D0Ev,_ZThn104_N7S6105C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D0Ev,_ZThn48_N7S6105C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C7D1Ev,_ZTv0_n12_N7S6105C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S6105C7D1Ev,_ZThn136_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S6105C7D1Ev,_ZThn104_N7S6105C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S6105C7D1Ev,_ZThn48_N7S6105C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D0Ev,_ZTv0_n16_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D0Ev,_ZThn120_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C10D1Ev,_ZTv0_n16_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C10D1Ev,_ZThn120_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D0Ev,_ZTv0_n20_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D0Ev,_ZThn48_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C10D1Ev,_ZTv0_n20_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C10D1Ev,_ZThn48_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D0Ev,_ZTv0_n12_N8S6105C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D0Ev,_ZThn124_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D0Ev,_ZThn92_N8S6105C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D0Ev,_ZThn36_N8S6105C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C10D1Ev,_ZTv0_n12_N8S6105C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S6105C10D1Ev,_ZThn124_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C10D1Ev,_ZThn92_N8S6105C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C10D1Ev,_ZThn36_N8S6105C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D0Ev,_ZTv0_n16_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D0Ev,_ZThn120_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S6105C13D1Ev,_ZTv0_n16_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S6105C13D1Ev,_ZThn120_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D0Ev,_ZTv0_n20_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D0Ev,_ZThn48_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C13D1Ev,_ZTv0_n20_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C13D1Ev,_ZThn48_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D0Ev,_ZTv0_n12_N8S6105C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D0Ev,_ZThn36_N8S6105C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D0Ev,_ZThn92_N8S6105C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C13D1Ev,_ZTv0_n12_N8S6105C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C13D1Ev,_ZThn36_N8S6105C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C13D1Ev,_ZThn92_N8S6105C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D0Ev,_ZTv0_n20_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D0Ev,_ZThn48_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S6105C14D1Ev,_ZTv0_n20_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S6105C14D1Ev,_ZThn48_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D0Ev,_ZTv0_n12_N8S6105C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D0Ev,_ZThn36_N8S6105C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D0Ev,_ZThn92_N8S6105C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S6105C14D1Ev,_ZTv0_n12_N8S6105C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6105C14D1Ev,_ZThn36_N8S6105C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6105C14D1Ev,_ZThn92_N8S6105C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C1D0Ev,_ZTv0_n24_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6105C1D0Ev,_ZThn180_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6105C1D1Ev,_ZTv0_n24_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S6105C1D1Ev,_ZThn180_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C1D0Ev,_ZTv0_n16_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6105C1D0Ev,_ZThn164_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S6105C1D1Ev,_ZTv0_n16_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N7S6105C1D1Ev,_ZThn164_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C1D0Ev,_ZTv0_n20_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6105C1D0Ev,_ZThn92_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S6105C1D1Ev,_ZTv0_n20_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S6105C1D1Ev,_ZThn92_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C1D0Ev,_ZTv0_n12_N7S6105C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6105C1D0Ev,_ZThn168_N7S6105C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6105C1D0Ev,_ZThn136_N7S6105C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6105C1D0Ev,_ZThn80_N7S6105C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6105C1D1Ev,_ZTv0_n12_N7S6105C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S6105C1D1Ev,_ZThn168_N7S6105C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S6105C1D1Ev,_ZThn136_N7S6105C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S6105C1D1Ev,_ZThn80_N7S6105C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6105C1 = {  "S6105C1", // class name
  bases_S6105C1, 25,
  &(vtc_S6105C1[0]), // expected_vtbl_contents
  &(vtt_S6105C1[0]), // expected_vtt_contents
  ABISELECT(512,352), // object size
  NSPAIRA(_ZTI7S6105C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6105C1),84, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6105C1),58, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names211,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C4  {
  void *s7780c4f0;
  int s7780c4f1[2];
  void *s7780c4f2;
  int s7780c4f3;
  virtual void  v2(); // _ZN7S7780C42v2Ev
  ~S7780C4(); // tgen
  S7780C4(); // tgen
};
//SIG(-1 S7780C4) C1{ v1 Fp Fi[2] Fp Fi}


void  S7780C4 ::v2(){vfunc_called(this, "_ZN7S7780C42v2Ev");}
S7780C4 ::~S7780C4(){ note_dtor("S7780C4", this);} // tgen
S7780C4 ::S7780C4(){ note_ctor("S7780C4", this);} // tgen

static void Test_S7780C4()
{
  extern Class_Descriptor cd_S7780C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7780C4, buf);
    S7780C4 *dp, &lv = *(dp=new (buf) S7780C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7780C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7780C4)");
    check_field_offset(lv, s7780c4f0, ABISELECT(8,4), "S7780C4.s7780c4f0");
    check_field_offset(lv, s7780c4f1, ABISELECT(16,8), "S7780C4.s7780c4f1");
    check_field_offset(lv, s7780c4f2, ABISELECT(24,16), "S7780C4.s7780c4f2");
    check_field_offset(lv, s7780c4f3, ABISELECT(32,20), "S7780C4.s7780c4f3");
    test_class_info(&lv, &cd_S7780C4);
    dp->~S7780C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C4(Test_S7780C4, "S7780C4", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7780C4C1Ev();
extern void _ZN7S7780C4D1Ev();
Name_Map name_map_S7780C4[] = {
  NSPAIR(_ZN7S7780C4C1Ev),
  NSPAIR(_ZN7S7780C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7780C4[];
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY vtc_S7780C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C4[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
Class_Descriptor cd_S7780C4 = {  "S7780C4", // class name
  0,0,//no base classes
  &(vtc_S7780C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7780C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7780C4),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  S7780C5  {
  long double s7780c5f0[6];
  void *s7780c5f1[6];
  long s7780c5f2[6];
  short s7780c5f3;
  char s7780c5f4;
  void *s7780c5f5;
  virtual void  v3(); // _ZN7S7780C52v3Ev
  ~S7780C5(); // tgen
  S7780C5(); // tgen
};
//SIG(-1 S7780C5) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S7780C5 ::v3(){vfunc_called(this, "_ZN7S7780C52v3Ev");}
S7780C5 ::~S7780C5(){ note_dtor("S7780C5", this);} // tgen
S7780C5 ::S7780C5(){ note_ctor("S7780C5", this);} // tgen

static void Test_S7780C5()
{
  extern Class_Descriptor cd_S7780C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S7780C5, buf);
    S7780C5 *dp, &lv = *(dp=new (buf) S7780C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S7780C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C5)");
    check_field_offset(lv, s7780c5f0, ABISELECT(16,4), "S7780C5.s7780c5f0");
    check_field_offset(lv, s7780c5f1, ABISELECT(112,76), "S7780C5.s7780c5f1");
    check_field_offset(lv, s7780c5f2, ABISELECT(160,100), "S7780C5.s7780c5f2");
    check_field_offset(lv, s7780c5f3, ABISELECT(208,124), "S7780C5.s7780c5f3");
    check_field_offset(lv, s7780c5f4, ABISELECT(210,126), "S7780C5.s7780c5f4");
    check_field_offset(lv, s7780c5f5, ABISELECT(216,128), "S7780C5.s7780c5f5");
    test_class_info(&lv, &cd_S7780C5);
    dp->~S7780C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C5(Test_S7780C5, "S7780C5", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S7780C5C1Ev();
extern void _ZN7S7780C5D1Ev();
Name_Map name_map_S7780C5[] = {
  NSPAIR(_ZN7S7780C5C1Ev),
  NSPAIR(_ZN7S7780C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7780C5[];
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY vtc_S7780C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C5[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
Class_Descriptor cd_S7780C5 = {  "S7780C5", // class name
  0,0,//no base classes
  &(vtc_S7780C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S7780C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7780C5),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  S7780C6  {
  short s7780c6f0:12;
  int s7780c6f1;
  char s7780c6f2;
  virtual void  v4(); // _ZN7S7780C62v4Ev
  virtual void  v5(); // _ZN7S7780C62v5Ev
  ~S7780C6(); // tgen
  S7780C6(); // tgen
};
//SIG(-1 S7780C6) C1{ v1 v2 Fs:12 Fi Fc}


void  S7780C6 ::v4(){vfunc_called(this, "_ZN7S7780C62v4Ev");}
void  S7780C6 ::v5(){vfunc_called(this, "_ZN7S7780C62v5Ev");}
S7780C6 ::~S7780C6(){ note_dtor("S7780C6", this);} // tgen
S7780C6 ::S7780C6(){ note_ctor("S7780C6", this);} // tgen

static void Test_S7780C6()
{
  extern Class_Descriptor cd_S7780C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7780C6, buf);
    S7780C6 *dp, &lv = *(dp=new (buf) S7780C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7780C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7780C6)");
    set_bf_and_test(lv, s7780c6f0, ABISELECT(8,4), 0, 12, 1, "S7780C6");
    set_bf_and_test(lv, s7780c6f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S7780C6");
    check_field_offset(lv, s7780c6f1, ABISELECT(12,8), "S7780C6.s7780c6f1");
    check_field_offset(lv, s7780c6f2, ABISELECT(16,12), "S7780C6.s7780c6f2");
    test_class_info(&lv, &cd_S7780C6);
    dp->~S7780C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C6(Test_S7780C6, "S7780C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7780C6C1Ev();
extern void _ZN7S7780C6D1Ev();
Name_Map name_map_S7780C6[] = {
  NSPAIR(_ZN7S7780C6C1Ev),
  NSPAIR(_ZN7S7780C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7780C6[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C6[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
Class_Descriptor cd_S7780C6 = {  "S7780C6", // class name
  0,0,//no base classes
  &(vtc_S7780C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7780C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7780C6),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  S7780C7  : S7780C5 , S7780C6 {
  long double s7780c7f0;
  __tsi64 s7780c7f1;
  ::S7780C6 s7780c7f2;
  __tsi64 s7780c7f3[2];
  void *s7780c7f4[3];
  int s7780c7f5;
  virtual void  v6(); // _ZN7S7780C72v6Ev
  ~S7780C7(); // tgen
  S7780C7(); // tgen
};
//SIG(-1 S7780C7) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S7780C7 ::v6(){vfunc_called(this, "_ZN7S7780C72v6Ev");}
S7780C7 ::~S7780C7(){ note_dtor("S7780C7", this);} // tgen
S7780C7 ::S7780C7(){ note_ctor("S7780C7", this);} // tgen

static void Test_S7780C7()
{
  extern Class_Descriptor cd_S7780C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S7780C7, buf);
    S7780C7 *dp, &lv = *(dp=new (buf) S7780C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S7780C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C7)");
    check_base_class_offset(lv, (S7780C5*), 0, "S7780C7");
    check_base_class_offset(lv, (S7780C6*), ABISELECT(224,132), "S7780C7");
    check_field_offset(lv, s7780c7f0, ABISELECT(256,148), "S7780C7.s7780c7f0");
    check_field_offset(lv, s7780c7f1, ABISELECT(272,160), "S7780C7.s7780c7f1");
    check_field_offset(lv, s7780c7f2, ABISELECT(280,168), "S7780C7.s7780c7f2");
    check_field_offset(lv, s7780c7f3, ABISELECT(304,184), "S7780C7.s7780c7f3");
    check_field_offset(lv, s7780c7f4, ABISELECT(320,200), "S7780C7.s7780c7f4");
    check_field_offset(lv, s7780c7f5, ABISELECT(344,212), "S7780C7.s7780c7f5");
    test_class_info(&lv, &cd_S7780C7);
    dp->~S7780C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C7(Test_S7780C7, "S7780C7", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN7S7780C7C1Ev();
extern void _ZN7S7780C7D1Ev();
Name_Map name_map_S7780C7[] = {
  NSPAIR(_ZN7S7780C7C1Ev),
  NSPAIR(_ZN7S7780C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
static Base_Class bases_S7780C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7780C6,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C7[];
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C7[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S7780C7[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
Class_Descriptor cd_S7780C7 = {  "S7780C7", // class name
  bases_S7780C7, 2,
  &(vtc_S7780C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI7S7780C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7780C7),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  S7780C3  : virtual S7780C4 , virtual S7780C5 , virtual S7780C6 , virtual S7780C7 {
  int s7780c3f0;
  ::S7780C5 s7780c3f1;
  int s7780c3f2;
  short s7780c3f3:2;
  void *s7780c3f4;
  int s7780c3f5;
  virtual  ~S7780C3(); // _ZN7S7780C3D2Ev
  S7780C3(); // tgen
};
//SIG(-1 S7780C3) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S7780C3 ::~S7780C3(){ note_dtor("S7780C3", this);}
S7780C3 ::S7780C3(){ note_ctor("S7780C3", this);} // tgen

static void Test_S7780C3()
{
  extern Class_Descriptor cd_S7780C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S7780C3, buf);
    S7780C3 *dp, &lv = *(dp=new (buf) S7780C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S7780C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C3)");
    check_base_class_offset(lv, (S7780C4*), ABISELECT(264,156), "S7780C3");
    /*is_ambiguous_... S7780C3::S7780C5 */ AMB_check_base_class_offset(lv, (S7780C5*), ABISELECT(304,180), "S7780C3");
    /*is_ambiguous_... S7780C3::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*), ABISELECT(528,312), "S7780C3");
    check_base_class_offset(lv, (S7780C5*)(S7780C7*), ABISELECT(560,328), "S7780C3");
    check_base_class_offset(lv, (S7780C6*)(S7780C7*), ABISELECT(784,460), "S7780C3");
    check_base_class_offset(lv, (S7780C7*), ABISELECT(560,328), "S7780C3");
    check_field_offset(lv, s7780c3f0, ABISELECT(8,4), "S7780C3.s7780c3f0");
    check_field_offset(lv, s7780c3f1, ABISELECT(16,8), "S7780C3.s7780c3f1");
    check_field_offset(lv, s7780c3f2, ABISELECT(240,140), "S7780C3.s7780c3f2");
    set_bf_and_test(lv, s7780c3f3, ABISELECT(244,144), 0, 2, 1, "S7780C3");
    set_bf_and_test(lv, s7780c3f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S7780C3");
    check_field_offset(lv, s7780c3f4, ABISELECT(248,148), "S7780C3.s7780c3f4");
    check_field_offset(lv, s7780c3f5, ABISELECT(256,152), "S7780C3.s7780c3f5");
    test_class_info(&lv, &cd_S7780C3);
    dp->~S7780C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C3(Test_S7780C3, "S7780C3", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN7S7780C3C1Ev();
extern void _ZN7S7780C3D2Ev();
Name_Map name_map_S7780C3[] = {
  NSPAIR(_ZN7S7780C3C1Ev),
  NSPAIR(_ZN7S7780C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C4;
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C7;
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
static Base_Class bases_S7780C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C4,    ABISELECT(264,156), //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_S7780C5,    ABISELECT(304,180), //bcp->offset
    12, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C6,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C5,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C6,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C7,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C3[];
extern void _ZN7S7780C3D1Ev();
extern void _ZN7S7780C3D0Ev();
extern void _ZN7S7780C42v2Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C3[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C3D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S7780C3[];
static  VTT_ENTRY vtt_S7780C3[] = {
  {&(_ZTV7S7780C3[6]),  6,34},
  {&(_ZTV7S7780C3[11]),  11,34},
  {&(_ZTV7S7780C3[15]),  15,34},
  {&(_ZTV7S7780C3[20]),  20,34},
  {&(_ZTV7S7780C3[28]),  28,34},
  {&(_ZTV7S7780C3[32]),  32,34},
};
extern VTBL_ENTRY _ZTI7S7780C3[];
extern  VTBL_ENTRY _ZTV7S7780C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C3[];
Class_Descriptor cd_S7780C3 = {  "S7780C3", // class name
  bases_S7780C3, 6,
  &(vtc_S7780C3[0]), // expected_vtbl_contents
  &(vtt_S7780C3[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI7S7780C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7780C3),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7780C3),6, //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  S7780C2  : virtual S7780C3 , S7780C6 {
  int s7780c2f0[6];
  __tsi64 s7780c2f1;
  int s7780c2f2;
  void *s7780c2f3;
  long double s7780c2f4;
  virtual  ~S7780C2(); // _ZN7S7780C2D2Ev
  virtual void  v7(); // _ZN7S7780C22v7Ev
  S7780C2(); // tgen
};
//SIG(-1 S7780C2) C1{ VBC2{ VBC3{ v2 Fp Fi[2] Fp Fi} VBC4{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v4 v5 Fs:12 Fi Fc} VBC6{ BC4 BC5 v6 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC5 vd v1 Fi[6] FL Fi Fp FD}


 S7780C2 ::~S7780C2(){ note_dtor("S7780C2", this);}
void  S7780C2 ::v7(){vfunc_called(this, "_ZN7S7780C22v7Ev");}
S7780C2 ::S7780C2(){ note_ctor("S7780C2", this);} // tgen

static void Test_S7780C2()
{
  extern Class_Descriptor cd_S7780C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,154)];
    init_test(&cd_S7780C2, buf);
    S7780C2 *dp, &lv = *(dp=new (buf) S7780C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,612), "sizeof(S7780C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C2)");
    check_base_class_offset(lv, (S7780C4*)(S7780C3*), ABISELECT(360,224), "S7780C2");
    /*is_ambiguous_... S7780C3::S7780C5 */ AMB_check_base_class_offset(lv, (S7780C5*)(S7780C3*), ABISELECT(400,248), "S7780C2");
    /*is_ambiguous_... S7780C3::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*)(S7780C3*), ABISELECT(624,380), "S7780C2");
    check_base_class_offset(lv, (S7780C5*)(S7780C7*), ABISELECT(656,396), "S7780C2");
    check_base_class_offset(lv, (S7780C6*)(S7780C7*), ABISELECT(880,528), "S7780C2");
    check_base_class_offset(lv, (S7780C7*)(S7780C3*), ABISELECT(656,396), "S7780C2");
    check_base_class_offset(lv, (S7780C3*), ABISELECT(96,68), "S7780C2");
    /*is_ambiguous_... S7780C2::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*), 0, "S7780C2");
    check_field_offset(lv, s7780c2f0, ABISELECT(20,16), "S7780C2.s7780c2f0");
    check_field_offset(lv, s7780c2f1, ABISELECT(48,40), "S7780C2.s7780c2f1");
    check_field_offset(lv, s7780c2f2, ABISELECT(56,48), "S7780C2.s7780c2f2");
    check_field_offset(lv, s7780c2f3, ABISELECT(64,52), "S7780C2.s7780c2f3");
    check_field_offset(lv, s7780c2f4, ABISELECT(80,56), "S7780C2.s7780c2f4");
    test_class_info(&lv, &cd_S7780C2);
    dp->~S7780C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C2(Test_S7780C2, "S7780C2", ABISELECT(1008,612));

#else // __cplusplus

extern void _ZN7S7780C2C1Ev();
extern void _ZN7S7780C2D2Ev();
Name_Map name_map_S7780C2[] = {
  NSPAIR(_ZN7S7780C2C1Ev),
  NSPAIR(_ZN7S7780C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C4;
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C7;
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
extern Class_Descriptor cd_S7780C3;
extern VTBL_ENTRY _ZTI7S7780C3[];
extern  VTBL_ENTRY _ZTV7S7780C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C3[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
static Base_Class bases_S7780C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C4,    ABISELECT(360,224), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(400,248), //bcp->offset
    25, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7780C6,    ABISELECT(624,380), //bcp->offset
    29, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(656,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C6,    ABISELECT(880,528), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C7,    ABISELECT(656,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C3,    ABISELECT(96,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7780C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C2[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C2D1Ev();
extern void _ZN7S7780C2D0Ev();
extern void _ZN7S7780C22v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7780C2D1Ev,_ZThn68_N7S7780C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7780C2D0Ev,_ZThn68_N7S7780C2D0Ev)() __attribute__((weak));
extern void _ZN7S7780C42v2Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C2[] = {
  ABISELECT(656,396),
  ABISELECT(624,380),
  ABISELECT(400,248),
  ABISELECT(360,224),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7780C22v7Ev,
  ABISELECT(-96,-68),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev),
  0,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
  0,
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-656,-396),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-880,-528),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S7780C2[];
extern void _ZN7S7780C3D1Ev();
extern void _ZN7S7780C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C3__7S7780C2[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C3D0Ev,
};
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C4__7S7780C3__7S7780C2[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C5__7S7780C3__7S7780C2[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C6__7S7780C3__7S7780C2[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C7__7S7780C3__7S7780C2[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C2[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
static  VTT_ENTRY vtt_S7780C2[] = {
  {&(_ZTV7S7780C2[7]),  7,47},
  {&(_ZTV7S7780C2[19]),  19,47},
  {&(_ZTV7S7780C2[24]),  24,47},
  {&(_ZTV7S7780C2[28]),  28,47},
  {&(_ZTV7S7780C2[33]),  33,47},
  {&(_ZTV7S7780C2[41]),  41,47},
  {&(_ZTV7S7780C2[45]),  45,47},
  {&(_tg__ZTV7S7780C3__7S7780C2[6]),  6,8},
  {&(_tg__ZTV7S7780C4__7S7780C3__7S7780C2[3]),  3,4},
  {&(_tg__ZTV7S7780C5__7S7780C3__7S7780C2[3]),  3,4},
  {&(_tg__ZTV7S7780C6__7S7780C3__7S7780C2[4]),  4,6},
  {&(_tg__ZTV7S7780C7__7S7780C3__7S7780C2[6]),  6,8},
  {&(_tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C2[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7780C2[];
extern  VTBL_ENTRY _ZTV7S7780C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C2[];
static VTBL_ENTRY alt_thunk_names212[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7780C2D0Ev,_ZThn68_N7S7780C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7780C2D1Ev,_ZThn68_N7S7780C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7780C2 = {  "S7780C2", // class name
  bases_S7780C2, 8,
  &(vtc_S7780C2[0]), // expected_vtbl_contents
  &(vtt_S7780C2[0]), // expected_vtt_contents
  ABISELECT(1008,612), // object size
  NSPAIRA(_ZTI7S7780C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7780C2),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7780C2),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names212,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C8  : S7780C5 {
  __tsi64 s7780c8f0;
  ::S7780C3 s7780c8f1;
  virtual void  v8(); // _ZN7S7780C82v8Ev
  virtual void  v9(); // _ZN7S7780C82v9Ev
  ~S7780C8(); // tgen
  S7780C8(); // tgen
};
//SIG(-1 S7780C8) C1{ BC2{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} v1 v2 FL FC3{ VBC4{ v4 Fp Fi[2] Fp Fi} VBC2 VBC5{ v5 v6 Fs:12 Fi Fc} VBC6{ BC2 BC5 v7 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC2 Fi Fs:2 Fp Fi}}


void  S7780C8 ::v8(){vfunc_called(this, "_ZN7S7780C82v8Ev");}
void  S7780C8 ::v9(){vfunc_called(this, "_ZN7S7780C82v9Ev");}
S7780C8 ::~S7780C8(){ note_dtor("S7780C8", this);} // tgen
S7780C8 ::S7780C8(){ note_ctor("S7780C8", this);} // tgen

static void Test_S7780C8()
{
  extern Class_Descriptor cd_S7780C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,172)];
    init_test(&cd_S7780C8, buf);
    S7780C8 *dp, &lv = *(dp=new (buf) S7780C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,684), "sizeof(S7780C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C8)");
    check_base_class_offset(lv, (S7780C5*), 0, "S7780C8");
    check_field_offset(lv, s7780c8f0, ABISELECT(224,132), "S7780C8.s7780c8f0");
    check_field_offset(lv, s7780c8f1, ABISELECT(240,140), "S7780C8.s7780c8f1");
    test_class_info(&lv, &cd_S7780C8);
    dp->~S7780C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C8(Test_S7780C8, "S7780C8", ABISELECT(1152,684));

#else // __cplusplus

extern void _ZN7S7780C8C1Ev();
extern void _ZN7S7780C8D1Ev();
Name_Map name_map_S7780C8[] = {
  NSPAIR(_ZN7S7780C8C1Ev),
  NSPAIR(_ZN7S7780C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
static Base_Class bases_S7780C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C8[];
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C82v8Ev();
extern void _ZN7S7780C82v9Ev();
static  VTBL_ENTRY vtc_S7780C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C8[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v9Ev,
};
extern VTBL_ENTRY _ZTI7S7780C8[];
extern  VTBL_ENTRY _ZTV7S7780C8[];
Class_Descriptor cd_S7780C8 = {  "S7780C8", // class name
  bases_S7780C8, 1,
  &(vtc_S7780C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1152,684), // object size
  NSPAIRA(_ZTI7S7780C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7780C8),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7780C1  : S7780C2 , S7780C8 {
  int s7780c1f0;
  ::S7780C3 s7780c1f1;
  char s7780c1f2;
  virtual  ~S7780C1(); // _ZN7S7780C1D2Ev
  virtual void  v1(); // _ZN7S7780C12v1Ev
  S7780C1(); // tgen
};
//SIG(1 S7780C1) C1{ BC2{ VBC3{ VBC4{ v2 Fp Fi[2] Fp Fi} VBC5{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC6{ v4 v5 Fs:12 Fi Fc} VBC7{ BC5 BC6 v6 FD FL FC6 FL[2] Fp[3] Fi} vd Fi FC5 Fi Fs:2 Fp Fi} BC6 vd v7 Fi[6] FL Fi Fp FD} BC8{ BC5 v8 v9 FL FC3} vd v1 Fi FC3 Fc}


 S7780C1 ::~S7780C1(){ note_dtor("S7780C1", this);}
void  S7780C1 ::v1(){vfunc_called(this, "_ZN7S7780C12v1Ev");}
S7780C1 ::S7780C1(){ note_ctor("S7780C1", this);} // tgen

static void Test_S7780C1()
{
  extern Class_Descriptor cd_S7780C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(195,463)];
    init_test(&cd_S7780C1, buf);
    S7780C1 *dp, &lv = *(dp=new (buf) S7780C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3104,1848), "sizeof(S7780C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7780C1)");
    check_base_class_offset(lv, (S7780C4*)(S7780C3*), ABISELECT(2456,1460), "S7780C1");
    /*is_ambiguous_... S7780C3::S7780C5 */ AMB_check_base_class_offset(lv, (S7780C5*)(S7780C3*), ABISELECT(2496,1484), "S7780C1");
    /*is_ambiguous_... S7780C3::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*)(S7780C3*), ABISELECT(2720,1616), "S7780C1");
    check_base_class_offset(lv, (S7780C5*)(S7780C7*), ABISELECT(2752,1632), "S7780C1");
    check_base_class_offset(lv, (S7780C6*)(S7780C7*), ABISELECT(2976,1764), "S7780C1");
    check_base_class_offset(lv, (S7780C7*)(S7780C3*), ABISELECT(2752,1632), "S7780C1");
    check_base_class_offset(lv, (S7780C3*)(S7780C2*), ABISELECT(2192,1304), "S7780C1");
    /*is_ambiguous_... S7780C2::S7780C6 */ AMB_check_base_class_offset(lv, (S7780C6*)(S7780C2*), 0, "S7780C1");
    check_base_class_offset(lv, (S7780C2*), 0, "S7780C1");
    check_base_class_offset(lv, (S7780C5*)(S7780C8*), ABISELECT(96,68), "S7780C1");
    check_base_class_offset(lv, (S7780C8*), ABISELECT(96,68), "S7780C1");
    check_field_offset(lv, s7780c1f0, ABISELECT(1248,752), "S7780C1.s7780c1f0");
    check_field_offset(lv, s7780c1f1, ABISELECT(1264,756), "S7780C1.s7780c1f1");
    check_field_offset(lv, s7780c1f2, ABISELECT(2176,1300), "S7780C1.s7780c1f2");
    test_class_info(&lv, &cd_S7780C1);
    dp->~S7780C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7780C1(Test_S7780C1, "S7780C1", ABISELECT(3104,1848));

#else // __cplusplus

extern void _ZN7S7780C1C1Ev();
extern void _ZN7S7780C1D2Ev();
Name_Map name_map_S7780C1[] = {
  NSPAIR(_ZN7S7780C1C1Ev),
  NSPAIR(_ZN7S7780C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7780C4;
extern VTBL_ENTRY _ZTI7S7780C4[];
extern  VTBL_ENTRY _ZTV7S7780C4[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C7;
extern VTBL_ENTRY _ZTI7S7780C7[];
extern  VTBL_ENTRY _ZTV7S7780C7[];
extern Class_Descriptor cd_S7780C3;
extern VTBL_ENTRY _ZTI7S7780C3[];
extern  VTBL_ENTRY _ZTV7S7780C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C3[];
extern Class_Descriptor cd_S7780C6;
extern VTBL_ENTRY _ZTI7S7780C6[];
extern  VTBL_ENTRY _ZTV7S7780C6[];
extern Class_Descriptor cd_S7780C2;
extern VTBL_ENTRY _ZTI7S7780C2[];
extern  VTBL_ENTRY _ZTV7S7780C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C2[];
extern Class_Descriptor cd_S7780C5;
extern VTBL_ENTRY _ZTI7S7780C5[];
extern  VTBL_ENTRY _ZTV7S7780C5[];
extern Class_Descriptor cd_S7780C8;
extern VTBL_ENTRY _ZTI7S7780C8[];
extern  VTBL_ENTRY _ZTV7S7780C8[];
static Base_Class bases_S7780C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7780C4,    ABISELECT(2456,1460), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(2496,1484), //bcp->offset
    31, //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
    6, //immediately_derived
  0, 1},
  {&cd_S7780C6,    ABISELECT(2720,1616), //bcp->offset
    35, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C5,    ABISELECT(2752,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C6,    ABISELECT(2976,1764), //bcp->offset
    49, //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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7780C7,    ABISELECT(2752,1632), //bcp->offset
    41, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7780C3,    ABISELECT(2192,1304), //bcp->offset
    18, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7780C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    8, //immediately_derived
  0, 0},
  {&cd_S7780C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7780C5,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7780C8,    ABISELECT(96,68), //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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7780C1[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C1D1Ev();
extern void _ZN7S7780C1D0Ev();
extern void _ZN7S7780C22v7Ev();
extern void _ZN7S7780C12v1Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C82v8Ev();
extern void _ZN7S7780C82v9Ev();
extern void ABISELECT(_ZTv0_n56_N7S7780C1D1Ev,_ZTv0_n28_N7S7780C1D1Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C1D1Ev,_ZThn1304_N7S7780C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7780C1D0Ev,_ZTv0_n28_N7S7780C1D0Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C1D0Ev,_ZThn1304_N7S7780C1D0Ev)() __attribute__((weak));
extern void _ZN7S7780C42v2Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY vtc_S7780C1[] = {
  ABISELECT(2752,1632),
  ABISELECT(2720,1616),
  ABISELECT(2496,1484),
  ABISELECT(2456,1460),
  ABISELECT(2192,1304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7780C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7780C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7780C12v1Ev,
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v8Ev,
  (VTBL_ENTRY)&_ZN7S7780C82v9Ev,
  ABISELECT(-2192,-1304),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-2192,-1304),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C1D1Ev,_ZTv0_n28_N7S7780C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C1D0Ev,_ZTv0_n28_N7S7780C1D0Ev),
  0,
  ABISELECT(-2456,-1460),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
  0,
  ABISELECT(-2496,-1484),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  0,
  0,
  ABISELECT(-2720,-1616),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-2752,-1632),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
  ABISELECT(-2976,-1764),
  (VTBL_ENTRY)&(_ZTI7S7780C1[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern VTBL_ENTRY _ZTV7S7780C1[];
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
extern void _ZN7S7780C2D1Ev();
extern void _ZN7S7780C2D0Ev();
extern void _ZN7S7780C22v7Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C2__7S7780C1[] = {
  ABISELECT(2752,1632),
  ABISELECT(2720,1616),
  ABISELECT(2496,1484),
  ABISELECT(2456,1460),
  ABISELECT(2192,1304),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7780C22v7Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C2D1Ev,_ZThn1304_N7S7780C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev)();
extern void ABISELECT(_ZThn2192_N7S7780C2D0Ev,_ZThn1304_N7S7780C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7780C3__7S7780C2__7S7780C1[] = {
  ABISELECT(-2192,-1304),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-2192,-1304),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev),
};
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C4__7S7780C2__7S7780C1[] = {
  0,
  ABISELECT(-2456,-1460),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C5__7S7780C2__7S7780C1[] = {
  0,
  ABISELECT(-2496,-1484),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C6__7S7780C2__7S7780C1[] = {
  0,
  0,
  ABISELECT(-2720,-1616),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C7__7S7780C2__7S7780C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-2752,-1632),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C67S7780C7__A1__7S7780C2__7S7780C1[] = {
  ABISELECT(-2976,-1764),
  (VTBL_ENTRY)&(_ZTI7S7780C2[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C3D1Ev();
extern void _ZN7S7780C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C3__7S7780C1[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7780C3D0Ev,
};
extern void _ZN7S7780C42v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C4__7S7780C3__7S7780C1[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C42v2Ev,
};
extern void _ZN7S7780C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C5__7S7780C3__7S7780C1[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C6__7S7780C3__7S7780C1[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
extern void _ZN7S7780C52v3Ev();
extern void _ZN7S7780C72v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C7__7S7780C3__7S7780C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7780C72v6Ev,
};
extern void _ZN7S7780C62v4Ev();
extern void _ZN7S7780C62v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C1[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S7780C3[0]),
  (VTBL_ENTRY)&_ZN7S7780C62v4Ev,
  (VTBL_ENTRY)&_ZN7S7780C62v5Ev,
};
static  VTT_ENTRY vtt_S7780C1[] = {
  {&(_ZTV7S7780C1[7]),  7,53},
  {&(_tg__ZTV7S7780C2__7S7780C1[7]),  7,12},
  {&(_tg__ZTV7S7780C3__7S7780C2__7S7780C1[7]),  7,9},
  {&(_tg__ZTV7S7780C4__7S7780C2__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C5__7S7780C2__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C6__7S7780C2__7S7780C1[4]),  4,6},
  {&(_tg__ZTV7S7780C7__7S7780C2__7S7780C1[6]),  6,8},
  {&(_tg__ZTV7S7780C67S7780C7__A1__7S7780C2__7S7780C1[2]),  2,4},
  {&(_ZTV7S7780C1[25]),  25,53},
  {&(_ZTV7S7780C1[30]),  30,53},
  {&(_ZTV7S7780C1[34]),  34,53},
  {&(_ZTV7S7780C1[39]),  39,53},
  {&(_ZTV7S7780C1[47]),  47,53},
  {&(_ZTV7S7780C1[51]),  51,53},
  {&(_tg__ZTV7S7780C3__7S7780C1[6]),  6,8},
  {&(_tg__ZTV7S7780C4__7S7780C3__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C5__7S7780C3__7S7780C1[3]),  3,4},
  {&(_tg__ZTV7S7780C6__7S7780C3__7S7780C1[4]),  4,6},
  {&(_tg__ZTV7S7780C7__7S7780C3__7S7780C1[6]),  6,8},
  {&(_tg__ZTV7S7780C67S7780C7__A1__7S7780C3__7S7780C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S7780C1[];
extern  VTBL_ENTRY _ZTV7S7780C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7780C1[];
static VTBL_ENTRY alt_thunk_names213[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D0Ev,_ZTv0_n28_N7S7780C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C2D0Ev,_ZThn1304_N7S7780C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C2D1Ev,_ZTv0_n28_N7S7780C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C2D1Ev,_ZThn1304_N7S7780C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C1D0Ev,_ZTv0_n28_N7S7780C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C1D0Ev,_ZThn1304_N7S7780C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7780C1D1Ev,_ZTv0_n28_N7S7780C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2192_N7S7780C1D1Ev,_ZThn1304_N7S7780C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7780C1 = {  "S7780C1", // class name
  bases_S7780C1, 11,
  &(vtc_S7780C1[0]), // expected_vtbl_contents
  &(vtt_S7780C1[0]), // expected_vtt_contents
  ABISELECT(3104,1848), // object size
  NSPAIRA(_ZTI7S7780C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7780C1),53, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7780C1),20, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names213,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S396C4  : S3423C8_nt {
};
//SIG(-1 S396C4) C1{ BC2{ m Fi}}



static void Test_S396C4()
{
  extern Class_Descriptor cd_S396C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S396C4, buf);
    S396C4 &lv = *(new (buf) S396C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S396C4)");
    check2(__alignof__(lv), 4, "__alignof__(S396C4)");
    check_base_class_offset(lv, (S3423C8_nt*), 0, "S396C4");
    test_class_info(&lv, &cd_S396C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C4(Test_S396C4, "S396C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S396C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C4[];
Class_Descriptor cd_S396C4 = {  "S396C4", // class name
  bases_S396C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S396C4),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  S396C3  : S396C4 {
  ::S4161C4_nt s396c3f0;
  void *s396c3f1;
  virtual  ~S396C3(); // _ZN6S396C3D1Ev
  virtual void  v8(); // _ZN6S396C32v8Ev
  virtual void  v9(); // _ZN6S396C32v9Ev
  virtual void  v10(); // _ZN6S396C33v10Ev
  virtual void  v11(); // _ZN6S396C33v11Ev
  virtual void  v12(); // _ZN6S396C33v12Ev
  virtual void  v13(); // _ZN6S396C33v13Ev
  virtual void  v14(); // _ZN6S396C33v14Ev
  virtual void  v15(); // _ZN6S396C33v15Ev
  virtual void  v16(); // _ZN6S396C33v16Ev
  virtual void  v17(); // _ZN6S396C33v17Ev
  virtual void  v18(); // _ZN6S396C33v18Ev
  virtual void  v19(); // _ZN6S396C33v19Ev
  virtual void  v20(); // _ZN6S396C33v20Ev
  virtual void  v21(); // _ZN6S396C33v21Ev
  virtual void  v22(); // _ZN6S396C33v22Ev
  virtual void  v23(); // _ZN6S396C33v23Ev
  virtual void  v24(); // _ZN6S396C33v24Ev
  virtual void  v25(); // _ZN6S396C33v25Ev
  virtual void  v26(); // _ZN6S396C33v26Ev
  virtual void  v27(); // _ZN6S396C33v27Ev
  virtual void  v28(); // _ZN6S396C33v28Ev
  virtual void  v29(); // _ZN6S396C33v29Ev
  virtual void  v30(); // _ZN6S396C33v30Ev
  S396C3(); // tgen
};
//SIG(-1 S396C3) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC4{ m Fp} Fp}


 S396C3 ::~S396C3(){ note_dtor("S396C3", this);}
void  S396C3 ::v8(){vfunc_called(this, "_ZN6S396C32v8Ev");}
void  S396C3 ::v9(){vfunc_called(this, "_ZN6S396C32v9Ev");}
void  S396C3 ::v10(){vfunc_called(this, "_ZN6S396C33v10Ev");}
void  S396C3 ::v11(){vfunc_called(this, "_ZN6S396C33v11Ev");}
void  S396C3 ::v12(){vfunc_called(this, "_ZN6S396C33v12Ev");}
void  S396C3 ::v13(){vfunc_called(this, "_ZN6S396C33v13Ev");}
void  S396C3 ::v14(){vfunc_called(this, "_ZN6S396C33v14Ev");}
void  S396C3 ::v15(){vfunc_called(this, "_ZN6S396C33v15Ev");}
void  S396C3 ::v16(){vfunc_called(this, "_ZN6S396C33v16Ev");}
void  S396C3 ::v17(){vfunc_called(this, "_ZN6S396C33v17Ev");}
void  S396C3 ::v18(){vfunc_called(this, "_ZN6S396C33v18Ev");}
void  S396C3 ::v19(){vfunc_called(this, "_ZN6S396C33v19Ev");}
void  S396C3 ::v20(){vfunc_called(this, "_ZN6S396C33v20Ev");}
void  S396C3 ::v21(){vfunc_called(this, "_ZN6S396C33v21Ev");}
void  S396C3 ::v22(){vfunc_called(this, "_ZN6S396C33v22Ev");}
void  S396C3 ::v23(){vfunc_called(this, "_ZN6S396C33v23Ev");}
void  S396C3 ::v24(){vfunc_called(this, "_ZN6S396C33v24Ev");}
void  S396C3 ::v25(){vfunc_called(this, "_ZN6S396C33v25Ev");}
void  S396C3 ::v26(){vfunc_called(this, "_ZN6S396C33v26Ev");}
void  S396C3 ::v27(){vfunc_called(this, "_ZN6S396C33v27Ev");}
void  S396C3 ::v28(){vfunc_called(this, "_ZN6S396C33v28Ev");}
void  S396C3 ::v29(){vfunc_called(this, "_ZN6S396C33v29Ev");}
void  S396C3 ::v30(){vfunc_called(this, "_ZN6S396C33v30Ev");}
S396C3 ::S396C3(){ note_ctor("S396C3", this);} // tgen

static void Test_S396C3()
{
  extern Class_Descriptor cd_S396C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S396C3, buf);
    S396C3 *dp, &lv = *(dp=new (buf) S396C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S396C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S396C3)");
    check_base_class_offset(lv, (S3423C8_nt*)(S396C4*), ABISELECT(8,4), "S396C3");
    check_base_class_offset(lv, (S396C4*), ABISELECT(8,4), "S396C3");
    check_field_offset(lv, s396c3f0, ABISELECT(16,8), "S396C3.s396c3f0");
    check_field_offset(lv, s396c3f1, ABISELECT(24,12), "S396C3.s396c3f1");
    test_class_info(&lv, &cd_S396C3);
    dp->~S396C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C3(Test_S396C3, "S396C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN6S396C3C1Ev();
extern void _ZN6S396C3D1Ev();
Name_Map name_map_S396C3[] = {
  NSPAIR(_ZN6S396C3C1Ev),
  NSPAIR(_ZN6S396C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S396C4;
extern VTBL_ENTRY _ZTI6S396C4[];
static Base_Class bases_S396C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S396C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C3[];
extern void _ZN6S396C3D1Ev();
extern void _ZN6S396C3D0Ev();
extern void _ZN6S396C32v8Ev();
extern void _ZN6S396C32v9Ev();
extern void _ZN6S396C33v10Ev();
extern void _ZN6S396C33v11Ev();
extern void _ZN6S396C33v12Ev();
extern void _ZN6S396C33v13Ev();
extern void _ZN6S396C33v14Ev();
extern void _ZN6S396C33v15Ev();
extern void _ZN6S396C33v16Ev();
extern void _ZN6S396C33v17Ev();
extern void _ZN6S396C33v18Ev();
extern void _ZN6S396C33v19Ev();
extern void _ZN6S396C33v20Ev();
extern void _ZN6S396C33v21Ev();
extern void _ZN6S396C33v22Ev();
extern void _ZN6S396C33v23Ev();
extern void _ZN6S396C33v24Ev();
extern void _ZN6S396C33v25Ev();
extern void _ZN6S396C33v26Ev();
extern void _ZN6S396C33v27Ev();
extern void _ZN6S396C33v28Ev();
extern void _ZN6S396C33v29Ev();
extern void _ZN6S396C33v30Ev();
static  VTBL_ENTRY vtc_S396C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S396C3[0]),
  (VTBL_ENTRY)&_ZN6S396C3D1Ev,
  (VTBL_ENTRY)&_ZN6S396C3D0Ev,
  (VTBL_ENTRY)&_ZN6S396C32v8Ev,
  (VTBL_ENTRY)&_ZN6S396C32v9Ev,
  (VTBL_ENTRY)&_ZN6S396C33v10Ev,
  (VTBL_ENTRY)&_ZN6S396C33v11Ev,
  (VTBL_ENTRY)&_ZN6S396C33v12Ev,
  (VTBL_ENTRY)&_ZN6S396C33v13Ev,
  (VTBL_ENTRY)&_ZN6S396C33v14Ev,
  (VTBL_ENTRY)&_ZN6S396C33v15Ev,
  (VTBL_ENTRY)&_ZN6S396C33v16Ev,
  (VTBL_ENTRY)&_ZN6S396C33v17Ev,
  (VTBL_ENTRY)&_ZN6S396C33v18Ev,
  (VTBL_ENTRY)&_ZN6S396C33v19Ev,
  (VTBL_ENTRY)&_ZN6S396C33v20Ev,
  (VTBL_ENTRY)&_ZN6S396C33v21Ev,
  (VTBL_ENTRY)&_ZN6S396C33v22Ev,
  (VTBL_ENTRY)&_ZN6S396C33v23Ev,
  (VTBL_ENTRY)&_ZN6S396C33v24Ev,
  (VTBL_ENTRY)&_ZN6S396C33v25Ev,
  (VTBL_ENTRY)&_ZN6S396C33v26Ev,
  (VTBL_ENTRY)&_ZN6S396C33v27Ev,
  (VTBL_ENTRY)&_ZN6S396C33v28Ev,
  (VTBL_ENTRY)&_ZN6S396C33v29Ev,
  (VTBL_ENTRY)&_ZN6S396C33v30Ev,
};
extern VTBL_ENTRY _ZTI6S396C3[];
extern  VTBL_ENTRY _ZTV6S396C3[];
Class_Descriptor cd_S396C3 = {  "S396C3", // class name
  bases_S396C3, 2,
  &(vtc_S396C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI6S396C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S396C3),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S396C2  : S396C3 {
  ::S3423C4_nt s396c2f0;
  virtual void  v31(); // _ZN6S396C23v31Ev
  virtual void  v32(); // _ZN6S396C23v32Ev
  virtual void  v33(); // _ZN6S396C23v33Ev
  virtual void  v34(); // _ZN6S396C23v34Ev
  virtual void  v35(); // _ZN6S396C23v35Ev
  virtual void  v36(); // _ZN6S396C23v36Ev
  virtual void  v37(); // _ZN6S396C23v37Ev
  virtual void  v38(); // _ZN6S396C23v38Ev
  virtual void  v39(); // _ZN6S396C23v39Ev
  virtual void  v40(); // _ZN6S396C23v40Ev
  virtual void  v41(); // _ZN6S396C23v41Ev
  ~S396C2(); // tgen
  S396C2(); // tgen
};
//SIG(-1 S396C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 FC5{ m Fp} Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC6{ m Fi[2]}}


void  S396C2 ::v31(){vfunc_called(this, "_ZN6S396C23v31Ev");}
void  S396C2 ::v32(){vfunc_called(this, "_ZN6S396C23v32Ev");}
void  S396C2 ::v33(){vfunc_called(this, "_ZN6S396C23v33Ev");}
void  S396C2 ::v34(){vfunc_called(this, "_ZN6S396C23v34Ev");}
void  S396C2 ::v35(){vfunc_called(this, "_ZN6S396C23v35Ev");}
void  S396C2 ::v36(){vfunc_called(this, "_ZN6S396C23v36Ev");}
void  S396C2 ::v37(){vfunc_called(this, "_ZN6S396C23v37Ev");}
void  S396C2 ::v38(){vfunc_called(this, "_ZN6S396C23v38Ev");}
void  S396C2 ::v39(){vfunc_called(this, "_ZN6S396C23v39Ev");}
void  S396C2 ::v40(){vfunc_called(this, "_ZN6S396C23v40Ev");}
void  S396C2 ::v41(){vfunc_called(this, "_ZN6S396C23v41Ev");}
S396C2 ::~S396C2(){ note_dtor("S396C2", this);} // tgen
S396C2 ::S396C2(){ note_ctor("S396C2", this);} // tgen

static void Test_S396C2()
{
  extern Class_Descriptor cd_S396C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S396C2, buf);
    S396C2 *dp, &lv = *(dp=new (buf) S396C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S396C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S396C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S396C4*)(S396C3*), ABISELECT(8,4), "S396C2");
    check_base_class_offset(lv, (S396C4*)(S396C3*), ABISELECT(8,4), "S396C2");
    check_base_class_offset(lv, (S396C3*), 0, "S396C2");
    check_field_offset(lv, s396c2f0, ABISELECT(32,16), "S396C2.s396c2f0");
    test_class_info(&lv, &cd_S396C2);
    dp->~S396C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C2(Test_S396C2, "S396C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN6S396C2C1Ev();
extern void _ZN6S396C2D1Ev();
Name_Map name_map_S396C2[] = {
  NSPAIR(_ZN6S396C2C1Ev),
  NSPAIR(_ZN6S396C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S396C4;
extern VTBL_ENTRY _ZTI6S396C4[];
extern Class_Descriptor cd_S396C3;
extern VTBL_ENTRY _ZTI6S396C3[];
extern  VTBL_ENTRY _ZTV6S396C3[];
static Base_Class bases_S396C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S396C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S396C2[];
extern void _ZN6S396C2D1Ev();
extern void _ZN6S396C2D0Ev();
extern void _ZN6S396C32v8Ev();
extern void _ZN6S396C32v9Ev();
extern void _ZN6S396C33v10Ev();
extern void _ZN6S396C33v11Ev();
extern void _ZN6S396C33v12Ev();
extern void _ZN6S396C33v13Ev();
extern void _ZN6S396C33v14Ev();
extern void _ZN6S396C33v15Ev();
extern void _ZN6S396C33v16Ev();
extern void _ZN6S396C33v17Ev();
extern void _ZN6S396C33v18Ev();
extern void _ZN6S396C33v19Ev();
extern void _ZN6S396C33v20Ev();
extern void _ZN6S396C33v21Ev();
extern void _ZN6S396C33v22Ev();
extern void _ZN6S396C33v23Ev();
extern void _ZN6S396C33v24Ev();
extern void _ZN6S396C33v25Ev();
extern void _ZN6S396C33v26Ev();
extern void _ZN6S396C33v27Ev();
extern void _ZN6S396C33v28Ev();
extern void _ZN6S396C33v29Ev();
extern void _ZN6S396C33v30Ev();
extern void _ZN6S396C23v31Ev();
extern void _ZN6S396C23v32Ev();
extern void _ZN6S396C23v33Ev();
extern void _ZN6S396C23v34Ev();
extern void _ZN6S396C23v35Ev();
extern void _ZN6S396C23v36Ev();
extern void _ZN6S396C23v37Ev();
extern void _ZN6S396C23v38Ev();
extern void _ZN6S396C23v39Ev();
extern void _ZN6S396C23v40Ev();
extern void _ZN6S396C23v41Ev();
static  VTBL_ENTRY vtc_S396C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S396C2[0]),
  (VTBL_ENTRY)&_ZN6S396C2D1Ev,
  (VTBL_ENTRY)&_ZN6S396C2D0Ev,
  (VTBL_ENTRY)&_ZN6S396C32v8Ev,
  (VTBL_ENTRY)&_ZN6S396C32v9Ev,
  (VTBL_ENTRY)&_ZN6S396C33v10Ev,
  (VTBL_ENTRY)&_ZN6S396C33v11Ev,
  (VTBL_ENTRY)&_ZN6S396C33v12Ev,
  (VTBL_ENTRY)&_ZN6S396C33v13Ev,
  (VTBL_ENTRY)&_ZN6S396C33v14Ev,
  (VTBL_ENTRY)&_ZN6S396C33v15Ev,
  (VTBL_ENTRY)&_ZN6S396C33v16Ev,
  (VTBL_ENTRY)&_ZN6S396C33v17Ev,
  (VTBL_ENTRY)&_ZN6S396C33v18Ev,
  (VTBL_ENTRY)&_ZN6S396C33v19Ev,
  (VTBL_ENTRY)&_ZN6S396C33v20Ev,
  (VTBL_ENTRY)&_ZN6S396C33v21Ev,
  (VTBL_ENTRY)&_ZN6S396C33v22Ev,
  (VTBL_ENTRY)&_ZN6S396C33v23Ev,
  (VTBL_ENTRY)&_ZN6S396C33v24Ev,
  (VTBL_ENTRY)&_ZN6S396C33v25Ev,
  (VTBL_ENTRY)&_ZN6S396C33v26Ev,
  (VTBL_ENTRY)&_ZN6S396C33v27Ev,
  (VTBL_ENTRY)&_ZN6S396C33v28Ev,
  (VTBL_ENTRY)&_ZN6S396C33v29Ev,
  (VTBL_ENTRY)&_ZN6S396C33v30Ev,
  (VTBL_ENTRY)&_ZN6S396C23v31Ev,
  (VTBL_ENTRY)&_ZN6S396C23v32Ev,
  (VTBL_ENTRY)&_ZN6S396C23v33Ev,
  (VTBL_ENTRY)&_ZN6S396C23v34Ev,
  (VTBL_ENTRY)&_ZN6S396C23v35Ev,
  (VTBL_ENTRY)&_ZN6S396C23v36Ev,
  (VTBL_ENTRY)&_ZN6S396C23v37Ev,
  (VTBL_ENTRY)&_ZN6S396C23v38Ev,
  (VTBL_ENTRY)&_ZN6S396C23v39Ev,
  (VTBL_ENTRY)&_ZN6S396C23v40Ev,
  (VTBL_ENTRY)&_ZN6S396C23v41Ev,
};
extern VTBL_ENTRY _ZTI6S396C2[];
extern  VTBL_ENTRY _ZTV6S396C2[];
Class_Descriptor cd_S396C2 = {  "S396C2", // class name
  bases_S396C2, 3,
  &(vtc_S396C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI6S396C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S396C2),38, //virtual function table var
  2, // 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  S396C1  : S396C2 {
  void *s396c1f0[2];
  int s396c1f1;
  ::S3423C4_nt s396c1f2;
  virtual void  v1(); // _ZN6S396C12v1Ev
  virtual void  v2(); // _ZN6S396C12v2Ev
  virtual void  v3(); // _ZN6S396C12v3Ev
  virtual void  v4(); // _ZN6S396C12v4Ev
  virtual void  v5(); // _ZN6S396C12v5Ev
  virtual void  v6(); // _ZN6S396C12v6Ev
  virtual void  v7(); // _ZN6S396C12v7Ev
  ~S396C1(); // tgen
  S396C1(); // tgen
};
//SIG(1 S396C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 FC6{ m Fp} Fp} v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 FC7{ m Fi[2]}} v1 v2 v3 v4 v5 v6 v7 Fp[2] Fi FC7}


void  S396C1 ::v1(){vfunc_called(this, "_ZN6S396C12v1Ev");}
void  S396C1 ::v2(){vfunc_called(this, "_ZN6S396C12v2Ev");}
void  S396C1 ::v3(){vfunc_called(this, "_ZN6S396C12v3Ev");}
void  S396C1 ::v4(){vfunc_called(this, "_ZN6S396C12v4Ev");}
void  S396C1 ::v5(){vfunc_called(this, "_ZN6S396C12v5Ev");}
void  S396C1 ::v6(){vfunc_called(this, "_ZN6S396C12v6Ev");}
void  S396C1 ::v7(){vfunc_called(this, "_ZN6S396C12v7Ev");}
S396C1 ::~S396C1(){ note_dtor("S396C1", this);} // tgen
S396C1 ::S396C1(){ note_ctor("S396C1", this);} // tgen

static void Test_S396C1()
{
  extern Class_Descriptor cd_S396C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S396C1, buf);
    S396C1 *dp, &lv = *(dp=new (buf) S396C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S396C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S396C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S396C4*)(S396C3*)(S396C2*), ABISELECT(8,4), "S396C1");
    check_base_class_offset(lv, (S396C4*)(S396C3*)(S396C2*), ABISELECT(8,4), "S396C1");
    check_base_class_offset(lv, (S396C3*)(S396C2*), 0, "S396C1");
    check_base_class_offset(lv, (S396C2*), 0, "S396C1");
    check_field_offset(lv, s396c1f0, ABISELECT(40,24), "S396C1.s396c1f0");
    check_field_offset(lv, s396c1f1, ABISELECT(56,32), "S396C1.s396c1f1");
    check_field_offset(lv, s396c1f2, ABISELECT(60,36), "S396C1.s396c1f2");
    test_class_info(&lv, &cd_S396C1);
    dp->~S396C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS396C1(Test_S396C1, "S396C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN6S396C1C1Ev();
extern void _ZN6S396C1D1Ev();
Name_Map name_map_S396C1[] = {
  NSPAIR(_ZN6S396C1C1Ev),
  NSPAIR(_ZN6S396C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S396C4;
extern VTBL_ENTRY _ZTI6S396C4[];
extern Class_Descriptor cd_S396C3;
extern VTBL_ENTRY _ZTI6S396C3[];
extern  VTBL_ENTRY _ZTV6S396C3[];
extern Class_Descriptor cd_S396C2;
extern VTBL_ENTRY _ZTI6S396C2[];
extern  VTBL_ENTRY _ZTV6S396C2[];
static Base_Class bases_S396C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S396C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S396C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S396C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S396C1[];
extern void _ZN6S396C1D1Ev();
extern void _ZN6S396C1D0Ev();
extern void _ZN6S396C32v8Ev();
extern void _ZN6S396C32v9Ev();
extern void _ZN6S396C33v10Ev();
extern void _ZN6S396C33v11Ev();
extern void _ZN6S396C33v12Ev();
extern void _ZN6S396C33v13Ev();
extern void _ZN6S396C33v14Ev();
extern void _ZN6S396C33v15Ev();
extern void _ZN6S396C33v16Ev();
extern void _ZN6S396C33v17Ev();
extern void _ZN6S396C33v18Ev();
extern void _ZN6S396C33v19Ev();
extern void _ZN6S396C33v20Ev();
extern void _ZN6S396C33v21Ev();
extern void _ZN6S396C33v22Ev();
extern void _ZN6S396C33v23Ev();
extern void _ZN6S396C33v24Ev();
extern void _ZN6S396C33v25Ev();
extern void _ZN6S396C33v26Ev();
extern void _ZN6S396C33v27Ev();
extern void _ZN6S396C33v28Ev();
extern void _ZN6S396C33v29Ev();
extern void _ZN6S396C33v30Ev();
extern void _ZN6S396C23v31Ev();
extern void _ZN6S396C23v32Ev();
extern void _ZN6S396C23v33Ev();
extern void _ZN6S396C23v34Ev();
extern void _ZN6S396C23v35Ev();
extern void _ZN6S396C23v36Ev();
extern void _ZN6S396C23v37Ev();
extern void _ZN6S396C23v38Ev();
extern void _ZN6S396C23v39Ev();
extern void _ZN6S396C23v40Ev();
extern void _ZN6S396C23v41Ev();
extern void _ZN6S396C12v1Ev();
extern void _ZN6S396C12v2Ev();
extern void _ZN6S396C12v3Ev();
extern void _ZN6S396C12v4Ev();
extern void _ZN6S396C12v5Ev();
extern void _ZN6S396C12v6Ev();
extern void _ZN6S396C12v7Ev();
static  VTBL_ENTRY vtc_S396C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S396C1[0]),
  (VTBL_ENTRY)&_ZN6S396C1D1Ev,
  (VTBL_ENTRY)&_ZN6S396C1D0Ev,
  (VTBL_ENTRY)&_ZN6S396C32v8Ev,
  (VTBL_ENTRY)&_ZN6S396C32v9Ev,
  (VTBL_ENTRY)&_ZN6S396C33v10Ev,
  (VTBL_ENTRY)&_ZN6S396C33v11Ev,
  (VTBL_ENTRY)&_ZN6S396C33v12Ev,
  (VTBL_ENTRY)&_ZN6S396C33v13Ev,
  (VTBL_ENTRY)&_ZN6S396C33v14Ev,
  (VTBL_ENTRY)&_ZN6S396C33v15Ev,
  (VTBL_ENTRY)&_ZN6S396C33v16Ev,
  (VTBL_ENTRY)&_ZN6S396C33v17Ev,
  (VTBL_ENTRY)&_ZN6S396C33v18Ev,
  (VTBL_ENTRY)&_ZN6S396C33v19Ev,
  (VTBL_ENTRY)&_ZN6S396C33v20Ev,
  (VTBL_ENTRY)&_ZN6S396C33v21Ev,
  (VTBL_ENTRY)&_ZN6S396C33v22Ev,
  (VTBL_ENTRY)&_ZN6S396C33v23Ev,
  (VTBL_ENTRY)&_ZN6S396C33v24Ev,
  (VTBL_ENTRY)&_ZN6S396C33v25Ev,
  (VTBL_ENTRY)&_ZN6S396C33v26Ev,
  (VTBL_ENTRY)&_ZN6S396C33v27Ev,
  (VTBL_ENTRY)&_ZN6S396C33v28Ev,
  (VTBL_ENTRY)&_ZN6S396C33v29Ev,
  (VTBL_ENTRY)&_ZN6S396C33v30Ev,
  (VTBL_ENTRY)&_ZN6S396C23v31Ev,
  (VTBL_ENTRY)&_ZN6S396C23v32Ev,
  (VTBL_ENTRY)&_ZN6S396C23v33Ev,
  (VTBL_ENTRY)&_ZN6S396C23v34Ev,
  (VTBL_ENTRY)&_ZN6S396C23v35Ev,
  (VTBL_ENTRY)&_ZN6S396C23v36Ev,
  (VTBL_ENTRY)&_ZN6S396C23v37Ev,
  (VTBL_ENTRY)&_ZN6S396C23v38Ev,
  (VTBL_ENTRY)&_ZN6S396C23v39Ev,
  (VTBL_ENTRY)&_ZN6S396C23v40Ev,
  (VTBL_ENTRY)&_ZN6S396C23v41Ev,
  (VTBL_ENTRY)&_ZN6S396C12v1Ev,
  (VTBL_ENTRY)&_ZN6S396C12v2Ev,
  (VTBL_ENTRY)&_ZN6S396C12v3Ev,
  (VTBL_ENTRY)&_ZN6S396C12v4Ev,
  (VTBL_ENTRY)&_ZN6S396C12v5Ev,
  (VTBL_ENTRY)&_ZN6S396C12v6Ev,
  (VTBL_ENTRY)&_ZN6S396C12v7Ev,
};
extern VTBL_ENTRY _ZTI6S396C1[];
extern  VTBL_ENTRY _ZTV6S396C1[];
Class_Descriptor cd_S396C1 = {  "S396C1", // class name
  bases_S396C1, 4,
  &(vtc_S396C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI6S396C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S396C1),45, //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  S19323C3  {
  long double s19323c3f0[6];
  void *s19323c3f1[6];
  long s19323c3f2[6];
  short s19323c3f3;
  char s19323c3f4;
  void *s19323c3f5;
  virtual void  v3(); // _ZN8S19323C32v3Ev
  ~S19323C3(); // tgen
  S19323C3(); // tgen
};
//SIG(-1 S19323C3) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S19323C3 ::v3(){vfunc_called(this, "_ZN8S19323C32v3Ev");}
S19323C3 ::~S19323C3(){ note_dtor("S19323C3", this);} // tgen
S19323C3 ::S19323C3(){ note_ctor("S19323C3", this);} // tgen

static void Test_S19323C3()
{
  extern Class_Descriptor cd_S19323C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S19323C3, buf);
    S19323C3 *dp, &lv = *(dp=new (buf) S19323C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S19323C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C3)");
    check_field_offset(lv, s19323c3f0, ABISELECT(16,4), "S19323C3.s19323c3f0");
    check_field_offset(lv, s19323c3f1, ABISELECT(112,76), "S19323C3.s19323c3f1");
    check_field_offset(lv, s19323c3f2, ABISELECT(160,100), "S19323C3.s19323c3f2");
    check_field_offset(lv, s19323c3f3, ABISELECT(208,124), "S19323C3.s19323c3f3");
    check_field_offset(lv, s19323c3f4, ABISELECT(210,126), "S19323C3.s19323c3f4");
    check_field_offset(lv, s19323c3f5, ABISELECT(216,128), "S19323C3.s19323c3f5");
    test_class_info(&lv, &cd_S19323C3);
    dp->~S19323C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C3(Test_S19323C3, "S19323C3", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN8S19323C3C1Ev();
extern void _ZN8S19323C3D1Ev();
Name_Map name_map_S19323C3[] = {
  NSPAIR(_ZN8S19323C3C1Ev),
  NSPAIR(_ZN8S19323C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19323C3[];
extern void _ZN8S19323C32v3Ev();
static  VTBL_ENTRY vtc_S19323C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C3[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
};
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
Class_Descriptor cd_S19323C3 = {  "S19323C3", // class name
  0,0,//no base classes
  &(vtc_S19323C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI8S19323C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19323C3),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  S19323C5  {
  void *s19323c5f0;
  int s19323c5f1[2];
  void *s19323c5f2;
  int s19323c5f3;
  virtual void  v7(); // _ZN8S19323C52v7Ev
  ~S19323C5(); // tgen
  S19323C5(); // tgen
};
//SIG(-1 S19323C5) C1{ v1 Fp Fi[2] Fp Fi}


void  S19323C5 ::v7(){vfunc_called(this, "_ZN8S19323C52v7Ev");}
S19323C5 ::~S19323C5(){ note_dtor("S19323C5", this);} // tgen
S19323C5 ::S19323C5(){ note_ctor("S19323C5", this);} // tgen

static void Test_S19323C5()
{
  extern Class_Descriptor cd_S19323C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19323C5, buf);
    S19323C5 *dp, &lv = *(dp=new (buf) S19323C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19323C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19323C5)");
    check_field_offset(lv, s19323c5f0, ABISELECT(8,4), "S19323C5.s19323c5f0");
    check_field_offset(lv, s19323c5f1, ABISELECT(16,8), "S19323C5.s19323c5f1");
    check_field_offset(lv, s19323c5f2, ABISELECT(24,16), "S19323C5.s19323c5f2");
    check_field_offset(lv, s19323c5f3, ABISELECT(32,20), "S19323C5.s19323c5f3");
    test_class_info(&lv, &cd_S19323C5);
    dp->~S19323C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C5(Test_S19323C5, "S19323C5", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19323C5C1Ev();
extern void _ZN8S19323C5D1Ev();
Name_Map name_map_S19323C5[] = {
  NSPAIR(_ZN8S19323C5C1Ev),
  NSPAIR(_ZN8S19323C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19323C5[];
extern void _ZN8S19323C52v7Ev();
static  VTBL_ENTRY vtc_S19323C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C5[0]),
  (VTBL_ENTRY)&_ZN8S19323C52v7Ev,
};
extern VTBL_ENTRY _ZTI8S19323C5[];
extern  VTBL_ENTRY _ZTV8S19323C5[];
Class_Descriptor cd_S19323C5 = {  "S19323C5", // class name
  0,0,//no base classes
  &(vtc_S19323C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19323C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19323C5),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  S19323C6  {
  short s19323c6f0:12;
  int s19323c6f1;
  char s19323c6f2;
  virtual void  v8(); // _ZN8S19323C62v8Ev
  virtual void  v9(); // _ZN8S19323C62v9Ev
  ~S19323C6(); // tgen
  S19323C6(); // tgen
};
//SIG(-1 S19323C6) C1{ v1 v2 Fs:12 Fi Fc}


void  S19323C6 ::v8(){vfunc_called(this, "_ZN8S19323C62v8Ev");}
void  S19323C6 ::v9(){vfunc_called(this, "_ZN8S19323C62v9Ev");}
S19323C6 ::~S19323C6(){ note_dtor("S19323C6", this);} // tgen
S19323C6 ::S19323C6(){ note_ctor("S19323C6", this);} // tgen

static void Test_S19323C6()
{
  extern Class_Descriptor cd_S19323C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19323C6, buf);
    S19323C6 *dp, &lv = *(dp=new (buf) S19323C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19323C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19323C6)");
    set_bf_and_test(lv, s19323c6f0, ABISELECT(8,4), 0, 12, 1, "S19323C6");
    set_bf_and_test(lv, s19323c6f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S19323C6");
    check_field_offset(lv, s19323c6f1, ABISELECT(12,8), "S19323C6.s19323c6f1");
    check_field_offset(lv, s19323c6f2, ABISELECT(16,12), "S19323C6.s19323c6f2");
    test_class_info(&lv, &cd_S19323C6);
    dp->~S19323C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C6(Test_S19323C6, "S19323C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19323C6C1Ev();
extern void _ZN8S19323C6D1Ev();
Name_Map name_map_S19323C6[] = {
  NSPAIR(_ZN8S19323C6C1Ev),
  NSPAIR(_ZN8S19323C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19323C6[];
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
static  VTBL_ENTRY vtc_S19323C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C6[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
};
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
Class_Descriptor cd_S19323C6 = {  "S19323C6", // class name
  0,0,//no base classes
  &(vtc_S19323C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19323C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19323C6),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  S19323C7  : S19323C3 , S19323C6 {
  long double s19323c7f0;
  __tsi64 s19323c7f1;
  ::S19323C6 s19323c7f2;
  __tsi64 s19323c7f3[2];
  void *s19323c7f4[3];
  int s19323c7f5;
  virtual void  v10(); // _ZN8S19323C73v10Ev
  ~S19323C7(); // tgen
  S19323C7(); // tgen
};
//SIG(-1 S19323C7) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S19323C7 ::v10(){vfunc_called(this, "_ZN8S19323C73v10Ev");}
S19323C7 ::~S19323C7(){ note_dtor("S19323C7", this);} // tgen
S19323C7 ::S19323C7(){ note_ctor("S19323C7", this);} // tgen

static void Test_S19323C7()
{
  extern Class_Descriptor cd_S19323C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S19323C7, buf);
    S19323C7 *dp, &lv = *(dp=new (buf) S19323C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S19323C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C7)");
    check_base_class_offset(lv, (S19323C3*), 0, "S19323C7");
    check_base_class_offset(lv, (S19323C6*), ABISELECT(224,132), "S19323C7");
    check_field_offset(lv, s19323c7f0, ABISELECT(256,148), "S19323C7.s19323c7f0");
    check_field_offset(lv, s19323c7f1, ABISELECT(272,160), "S19323C7.s19323c7f1");
    check_field_offset(lv, s19323c7f2, ABISELECT(280,168), "S19323C7.s19323c7f2");
    check_field_offset(lv, s19323c7f3, ABISELECT(304,184), "S19323C7.s19323c7f3");
    check_field_offset(lv, s19323c7f4, ABISELECT(320,200), "S19323C7.s19323c7f4");
    check_field_offset(lv, s19323c7f5, ABISELECT(344,212), "S19323C7.s19323c7f5");
    test_class_info(&lv, &cd_S19323C7);
    dp->~S19323C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C7(Test_S19323C7, "S19323C7", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN8S19323C7C1Ev();
extern void _ZN8S19323C7D1Ev();
Name_Map name_map_S19323C7[] = {
  NSPAIR(_ZN8S19323C7C1Ev),
  NSPAIR(_ZN8S19323C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C6;
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
static Base_Class bases_S19323C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19323C6,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C7[];
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C73v10Ev();
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
static  VTBL_ENTRY vtc_S19323C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C7[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C73v10Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S19323C7[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
};
extern VTBL_ENTRY _ZTI8S19323C7[];
extern  VTBL_ENTRY _ZTV8S19323C7[];
Class_Descriptor cd_S19323C7 = {  "S19323C7", // class name
  bases_S19323C7, 2,
  &(vtc_S19323C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI8S19323C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19323C7),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  S19323C4  : virtual S19323C5 , virtual S19323C3 , virtual S19323C6 , virtual S19323C7 {
  int s19323c4f0;
  ::S19323C3 s19323c4f1;
  int s19323c4f2;
  short s19323c4f3:2;
  void *s19323c4f4;
  int s19323c4f5;
  virtual  ~S19323C4(); // _ZN8S19323C4D2Ev
  S19323C4(); // tgen
};
//SIG(-1 S19323C4) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S19323C4 ::~S19323C4(){ note_dtor("S19323C4", this);}
S19323C4 ::S19323C4(){ note_ctor("S19323C4", this);} // tgen

static void Test_S19323C4()
{
  extern Class_Descriptor cd_S19323C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S19323C4, buf);
    S19323C4 *dp, &lv = *(dp=new (buf) S19323C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S19323C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C4)");
    check_base_class_offset(lv, (S19323C5*), ABISELECT(264,156), "S19323C4");
    /*is_ambiguous_... S19323C4::S19323C3 */ AMB_check_base_class_offset(lv, (S19323C3*), ABISELECT(304,180), "S19323C4");
    /*is_ambiguous_... S19323C4::S19323C6 */ AMB_check_base_class_offset(lv, (S19323C6*), ABISELECT(528,312), "S19323C4");
    check_base_class_offset(lv, (S19323C3*)(S19323C7*), ABISELECT(560,328), "S19323C4");
    check_base_class_offset(lv, (S19323C6*)(S19323C7*), ABISELECT(784,460), "S19323C4");
    check_base_class_offset(lv, (S19323C7*), ABISELECT(560,328), "S19323C4");
    check_field_offset(lv, s19323c4f0, ABISELECT(8,4), "S19323C4.s19323c4f0");
    check_field_offset(lv, s19323c4f1, ABISELECT(16,8), "S19323C4.s19323c4f1");
    check_field_offset(lv, s19323c4f2, ABISELECT(240,140), "S19323C4.s19323c4f2");
    set_bf_and_test(lv, s19323c4f3, ABISELECT(244,144), 0, 2, 1, "S19323C4");
    set_bf_and_test(lv, s19323c4f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S19323C4");
    check_field_offset(lv, s19323c4f4, ABISELECT(248,148), "S19323C4.s19323c4f4");
    check_field_offset(lv, s19323c4f5, ABISELECT(256,152), "S19323C4.s19323c4f5");
    test_class_info(&lv, &cd_S19323C4);
    dp->~S19323C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C4(Test_S19323C4, "S19323C4", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN8S19323C4C1Ev();
extern void _ZN8S19323C4D2Ev();
Name_Map name_map_S19323C4[] = {
  NSPAIR(_ZN8S19323C4C1Ev),
  NSPAIR(_ZN8S19323C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C5;
extern VTBL_ENTRY _ZTI8S19323C5[];
extern  VTBL_ENTRY _ZTV8S19323C5[];
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C6;
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C6;
extern VTBL_ENTRY _ZTI8S19323C6[];
extern  VTBL_ENTRY _ZTV8S19323C6[];
extern Class_Descriptor cd_S19323C7;
extern VTBL_ENTRY _ZTI8S19323C7[];
extern  VTBL_ENTRY _ZTV8S19323C7[];
static Base_Class bases_S19323C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C5,    ABISELECT(264,156), //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_S19323C3,    ABISELECT(304,180), //bcp->offset
    12, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S19323C6,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19323C3,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19323C6,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19323C7,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C4[];
extern void _ZN8S19323C4D1Ev();
extern void _ZN8S19323C4D0Ev();
extern void _ZN8S19323C52v7Ev();
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C73v10Ev();
extern void _ZN8S19323C62v8Ev();
extern void _ZN8S19323C62v9Ev();
static  VTBL_ENTRY vtc_S19323C4[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19323C4D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C52v7Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C73v10Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI8S19323C4[0]),
  (VTBL_ENTRY)&_ZN8S19323C62v8Ev,
  (VTBL_ENTRY)&_ZN8S19323C62v9Ev,
};
extern VTBL_ENTRY _ZTV8S19323C4[];
static  VTT_ENTRY vtt_S19323C4[] = {
  {&(_ZTV8S19323C4[6]),  6,34},
  {&(_ZTV8S19323C4[11]),  11,34},
  {&(_ZTV8S19323C4[15]),  15,34},
  {&(_ZTV8S19323C4[20]),  20,34},
  {&(_ZTV8S19323C4[28]),  28,34},
  {&(_ZTV8S19323C4[32]),  32,34},
};
extern VTBL_ENTRY _ZTI8S19323C4[];
extern  VTBL_ENTRY _ZTV8S19323C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19323C4[];
Class_Descriptor cd_S19323C4 = {  "S19323C4", // class name
  bases_S19323C4, 6,
  &(vtc_S19323C4[0]), // expected_vtbl_contents
  &(vtt_S19323C4[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI8S19323C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19323C4),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19323C4),6, //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  S19323C2  : S19323C3 {
  __tsi64 s19323c2f0;
  ::S19323C4 s19323c2f1;
  virtual void  v4(); // _ZN8S19323C22v4Ev
  virtual void  v5(); // _ZN8S19323C22v5Ev
  ~S19323C2(); // tgen
  S19323C2(); // tgen
};
//SIG(-1 S19323C2) C1{ BC2{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} v1 v2 FL FC3{ VBC4{ v4 Fp Fi[2] Fp Fi} VBC2 VBC5{ v5 v6 Fs:12 Fi Fc} VBC6{ BC2 BC5 v7 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC2 Fi Fs:2 Fp Fi}}


void  S19323C2 ::v4(){vfunc_called(this, "_ZN8S19323C22v4Ev");}
void  S19323C2 ::v5(){vfunc_called(this, "_ZN8S19323C22v5Ev");}
S19323C2 ::~S19323C2(){ note_dtor("S19323C2", this);} // tgen
S19323C2 ::S19323C2(){ note_ctor("S19323C2", this);} // tgen

static void Test_S19323C2()
{
  extern Class_Descriptor cd_S19323C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(73,172)];
    init_test(&cd_S19323C2, buf);
    S19323C2 *dp, &lv = *(dp=new (buf) S19323C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1152,684), "sizeof(S19323C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C2)");
    check_base_class_offset(lv, (S19323C3*), 0, "S19323C2");
    check_field_offset(lv, s19323c2f0, ABISELECT(224,132), "S19323C2.s19323c2f0");
    check_field_offset(lv, s19323c2f1, ABISELECT(240,140), "S19323C2.s19323c2f1");
    test_class_info(&lv, &cd_S19323C2);
    dp->~S19323C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C2(Test_S19323C2, "S19323C2", ABISELECT(1152,684));

#else // __cplusplus

extern void _ZN8S19323C2C1Ev();
extern void _ZN8S19323C2D1Ev();
Name_Map name_map_S19323C2[] = {
  NSPAIR(_ZN8S19323C2C1Ev),
  NSPAIR(_ZN8S19323C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
static Base_Class bases_S19323C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C2[];
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C22v4Ev();
extern void _ZN8S19323C22v5Ev();
static  VTBL_ENTRY vtc_S19323C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C2[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v5Ev,
};
extern VTBL_ENTRY _ZTI8S19323C2[];
extern  VTBL_ENTRY _ZTV8S19323C2[];
Class_Descriptor cd_S19323C2 = {  "S19323C2", // class name
  bases_S19323C2, 1,
  &(vtc_S19323C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1152,684), // object size
  NSPAIRA(_ZTI8S19323C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19323C2),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19323C1  : virtual S19323C2 {
  ::S7788C9 s19323c1f0;
  ::S19323C5 s19323c1f1;
  virtual void  v1(); // _ZN8S19323C12v1Ev
  virtual void  v2(); // _ZN8S19323C12v2Ev
  ~S19323C1(); // tgen
  S19323C1(); // tgen
};
//SIG(1 S19323C1) C1{ VBC2{ BC3{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} v4 v5 FL FC4{ VBC5{ v12 Fp Fi[2] Fp Fi} VBC3 VBC6{ v13 v14 Fs:12 Fi Fc} VBC7{ BC3 BC6 v15 FD FL FC6 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}} v1 v2 FC8{ VBC9{ VBC10{ v7 Fp Fi[2] Fp Fi} VBC11{ v8 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC12{ v9 v10 Fs:12 Fi Fc} VBC13{ BC11 BC12 v11 FD FL FC12 FL[2] Fp[3] Fi} vd Fi FC11 Fi Fs:2 Fp Fi} BC12 vd v6 Fi[6] FL Fi Fp FD} FC5}


void  S19323C1 ::v1(){vfunc_called(this, "_ZN8S19323C12v1Ev");}
void  S19323C1 ::v2(){vfunc_called(this, "_ZN8S19323C12v2Ev");}
S19323C1 ::~S19323C1(){ note_dtor("S19323C1", this);} // tgen
S19323C1 ::S19323C1(){ note_ctor("S19323C1", this);} // tgen

static void Test_S19323C1()
{
  extern Class_Descriptor cd_S19323C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(140,332)];
    init_test(&cd_S19323C1, buf);
    S19323C1 *dp, &lv = *(dp=new (buf) S19323C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2224,1324), "sizeof(S19323C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19323C1)");
    check_base_class_offset(lv, (S19323C3*)(S19323C2*), ABISELECT(1072,640), "S19323C1");
    check_base_class_offset(lv, (S19323C2*), ABISELECT(1072,640), "S19323C1");
    check_field_offset(lv, s19323c1f0, ABISELECT(16,4), "S19323C1.s19323c1f0");
    check_field_offset(lv, s19323c1f1, ABISELECT(1024,616), "S19323C1.s19323c1f1");
    test_class_info(&lv, &cd_S19323C1);
    dp->~S19323C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19323C1(Test_S19323C1, "S19323C1", ABISELECT(2224,1324));

#else // __cplusplus

extern void _ZN8S19323C1C1Ev();
extern void _ZN8S19323C1D1Ev();
Name_Map name_map_S19323C1[] = {
  NSPAIR(_ZN8S19323C1C1Ev),
  NSPAIR(_ZN8S19323C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19323C3;
extern VTBL_ENTRY _ZTI8S19323C3[];
extern  VTBL_ENTRY _ZTV8S19323C3[];
extern Class_Descriptor cd_S19323C2;
extern VTBL_ENTRY _ZTI8S19323C2[];
extern  VTBL_ENTRY _ZTV8S19323C2[];
static Base_Class bases_S19323C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19323C3,    ABISELECT(1072,640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19323C2,    ABISELECT(1072,640), //bcp->offset
    5, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19323C1[];
extern void _ZN8S19323C12v1Ev();
extern void _ZN8S19323C12v2Ev();
extern void _ZN8S19323C32v3Ev();
extern void _ZN8S19323C22v4Ev();
extern void _ZN8S19323C22v5Ev();
static  VTBL_ENTRY vtc_S19323C1[] = {
  ABISELECT(1072,640),
  0,
  (VTBL_ENTRY)&(_ZTI8S19323C1[0]),
  (VTBL_ENTRY)&_ZN8S19323C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19323C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-1072,-640),
  (VTBL_ENTRY)&(_ZTI8S19323C1[0]),
  (VTBL_ENTRY)&_ZN8S19323C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19323C22v5Ev,
};
extern VTBL_ENTRY _ZTV8S19323C1[];
static  VTT_ENTRY vtt_S19323C1[] = {
  {&(_ZTV8S19323C1[3]),  3,13},
  {&(_ZTV8S19323C1[10]),  10,13},
};
extern VTBL_ENTRY _ZTI8S19323C1[];
extern  VTBL_ENTRY _ZTV8S19323C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19323C1[];
Class_Descriptor cd_S19323C1 = {  "S19323C1", // class name
  bases_S19323C1, 2,
  &(vtc_S19323C1[0]), // expected_vtbl_contents
  &(vtt_S19323C1[0]), // expected_vtt_contents
  ABISELECT(2224,1324), // object size
  NSPAIRA(_ZTI8S19323C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19323C1),13, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19323C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C2  {
  long double s6525c2f0[6];
  void *s6525c2f1[6];
  long s6525c2f2[6];
  short s6525c2f3;
  char s6525c2f4;
  void *s6525c2f5;
  virtual void  v2(); // _ZN7S6525C22v2Ev
  ~S6525C2(); // tgen
  S6525C2(); // tgen
};
//SIG(-1 S6525C2) C1{ v1 FD[6] Fp[6] Fl[6] Fs Fc Fp}


void  S6525C2 ::v2(){vfunc_called(this, "_ZN7S6525C22v2Ev");}
S6525C2 ::~S6525C2(){ note_dtor("S6525C2", this);} // tgen
S6525C2 ::S6525C2(){ note_ctor("S6525C2", this);} // tgen

static void Test_S6525C2()
{
  extern Class_Descriptor cd_S6525C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S6525C2, buf);
    S6525C2 *dp, &lv = *(dp=new (buf) S6525C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S6525C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C2)");
    check_field_offset(lv, s6525c2f0, ABISELECT(16,4), "S6525C2.s6525c2f0");
    check_field_offset(lv, s6525c2f1, ABISELECT(112,76), "S6525C2.s6525c2f1");
    check_field_offset(lv, s6525c2f2, ABISELECT(160,100), "S6525C2.s6525c2f2");
    check_field_offset(lv, s6525c2f3, ABISELECT(208,124), "S6525C2.s6525c2f3");
    check_field_offset(lv, s6525c2f4, ABISELECT(210,126), "S6525C2.s6525c2f4");
    check_field_offset(lv, s6525c2f5, ABISELECT(216,128), "S6525C2.s6525c2f5");
    test_class_info(&lv, &cd_S6525C2);
    dp->~S6525C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C2(Test_S6525C2, "S6525C2", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S6525C2C1Ev();
extern void _ZN7S6525C2D1Ev();
Name_Map name_map_S6525C2[] = {
  NSPAIR(_ZN7S6525C2C1Ev),
  NSPAIR(_ZN7S6525C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6525C2[];
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY vtc_S6525C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C2[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
Class_Descriptor cd_S6525C2 = {  "S6525C2", // class name
  0,0,//no base classes
  &(vtc_S6525C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S6525C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6525C2),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  S6525C4  {
  short s6525c4f0:12;
  int s6525c4f1;
  char s6525c4f2;
  virtual void  v3(); // _ZN7S6525C42v3Ev
  virtual void  v4(); // _ZN7S6525C42v4Ev
  ~S6525C4(); // tgen
  S6525C4(); // tgen
};
//SIG(-1 S6525C4) C1{ v1 v2 Fs:12 Fi Fc}


void  S6525C4 ::v3(){vfunc_called(this, "_ZN7S6525C42v3Ev");}
void  S6525C4 ::v4(){vfunc_called(this, "_ZN7S6525C42v4Ev");}
S6525C4 ::~S6525C4(){ note_dtor("S6525C4", this);} // tgen
S6525C4 ::S6525C4(){ note_ctor("S6525C4", this);} // tgen

static void Test_S6525C4()
{
  extern Class_Descriptor cd_S6525C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6525C4, buf);
    S6525C4 *dp, &lv = *(dp=new (buf) S6525C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6525C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6525C4)");
    set_bf_and_test(lv, s6525c4f0, ABISELECT(8,4), 0, 12, 1, "S6525C4");
    set_bf_and_test(lv, s6525c4f0, ABISELECT(8,4), 0, 12, hide_sll(1LL<<11), "S6525C4");
    check_field_offset(lv, s6525c4f1, ABISELECT(12,8), "S6525C4.s6525c4f1");
    check_field_offset(lv, s6525c4f2, ABISELECT(16,12), "S6525C4.s6525c4f2");
    test_class_info(&lv, &cd_S6525C4);
    dp->~S6525C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C4(Test_S6525C4, "S6525C4", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6525C4C1Ev();
extern void _ZN7S6525C4D1Ev();
Name_Map name_map_S6525C4[] = {
  NSPAIR(_ZN7S6525C4C1Ev),
  NSPAIR(_ZN7S6525C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6525C4[];
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C4[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
Class_Descriptor cd_S6525C4 = {  "S6525C4", // class name
  0,0,//no base classes
  &(vtc_S6525C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6525C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6525C4),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  S6525C3  : S6525C2 , S6525C4 {
  long double s6525c3f0;
  __tsi64 s6525c3f1;
  ::S6525C4 s6525c3f2;
  __tsi64 s6525c3f3[2];
  void *s6525c3f4[3];
  int s6525c3f5;
  virtual void  v5(); // _ZN7S6525C32v5Ev
  ~S6525C3(); // tgen
  S6525C3(); // tgen
};
//SIG(-1 S6525C3) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ v3 v4 Fs:12 Fi Fc} v1 FD FL FC3 FL[2] Fp[3] Fi}


void  S6525C3 ::v5(){vfunc_called(this, "_ZN7S6525C32v5Ev");}
S6525C3 ::~S6525C3(){ note_dtor("S6525C3", this);} // tgen
S6525C3 ::S6525C3(){ note_ctor("S6525C3", this);} // tgen

static void Test_S6525C3()
{
  extern Class_Descriptor cd_S6525C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,55)];
    init_test(&cd_S6525C3, buf);
    S6525C3 *dp, &lv = *(dp=new (buf) S6525C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,216), "sizeof(S6525C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C3)");
    check_base_class_offset(lv, (S6525C2*), 0, "S6525C3");
    check_base_class_offset(lv, (S6525C4*), ABISELECT(224,132), "S6525C3");
    check_field_offset(lv, s6525c3f0, ABISELECT(256,148), "S6525C3.s6525c3f0");
    check_field_offset(lv, s6525c3f1, ABISELECT(272,160), "S6525C3.s6525c3f1");
    check_field_offset(lv, s6525c3f2, ABISELECT(280,168), "S6525C3.s6525c3f2");
    check_field_offset(lv, s6525c3f3, ABISELECT(304,184), "S6525C3.s6525c3f3");
    check_field_offset(lv, s6525c3f4, ABISELECT(320,200), "S6525C3.s6525c3f4");
    check_field_offset(lv, s6525c3f5, ABISELECT(344,212), "S6525C3.s6525c3f5");
    test_class_info(&lv, &cd_S6525C3);
    dp->~S6525C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C3(Test_S6525C3, "S6525C3", ABISELECT(352,216));

#else // __cplusplus

extern void _ZN7S6525C3C1Ev();
extern void _ZN7S6525C3D1Ev();
Name_Map name_map_S6525C3[] = {
  NSPAIR(_ZN7S6525C3C1Ev),
  NSPAIR(_ZN7S6525C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
static Base_Class bases_S6525C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6525C4,    ABISELECT(224,132), //bcp->offset
    4, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C3[];
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C3[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S6525C3[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
Class_Descriptor cd_S6525C3 = {  "S6525C3", // class name
  bases_S6525C3, 2,
  &(vtc_S6525C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,216), // object size
  NSPAIRA(_ZTI7S6525C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6525C3),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  S6525C6  {
  void *s6525c6f0;
  int s6525c6f1[2];
  void *s6525c6f2;
  int s6525c6f3;
  virtual void  v6(); // _ZN7S6525C62v6Ev
  ~S6525C6(); // tgen
  S6525C6(); // tgen
};
//SIG(-1 S6525C6) C1{ v1 Fp Fi[2] Fp Fi}


void  S6525C6 ::v6(){vfunc_called(this, "_ZN7S6525C62v6Ev");}
S6525C6 ::~S6525C6(){ note_dtor("S6525C6", this);} // tgen
S6525C6 ::S6525C6(){ note_ctor("S6525C6", this);} // tgen

static void Test_S6525C6()
{
  extern Class_Descriptor cd_S6525C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6525C6, buf);
    S6525C6 *dp, &lv = *(dp=new (buf) S6525C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6525C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6525C6)");
    check_field_offset(lv, s6525c6f0, ABISELECT(8,4), "S6525C6.s6525c6f0");
    check_field_offset(lv, s6525c6f1, ABISELECT(16,8), "S6525C6.s6525c6f1");
    check_field_offset(lv, s6525c6f2, ABISELECT(24,16), "S6525C6.s6525c6f2");
    check_field_offset(lv, s6525c6f3, ABISELECT(32,20), "S6525C6.s6525c6f3");
    test_class_info(&lv, &cd_S6525C6);
    dp->~S6525C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C6(Test_S6525C6, "S6525C6", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6525C6C1Ev();
extern void _ZN7S6525C6D1Ev();
Name_Map name_map_S6525C6[] = {
  NSPAIR(_ZN7S6525C6C1Ev),
  NSPAIR(_ZN7S6525C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6525C6[];
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY vtc_S6525C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C6[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
Class_Descriptor cd_S6525C6 = {  "S6525C6", // class name
  0,0,//no base classes
  &(vtc_S6525C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6525C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6525C6),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  S6525C5  : virtual S6525C6 , virtual S6525C2 , virtual S6525C4 , virtual S6525C3 {
  int s6525c5f0;
  ::S6525C2 s6525c5f1;
  int s6525c5f2;
  short s6525c5f3:2;
  void *s6525c5f4;
  int s6525c5f5;
  virtual  ~S6525C5(); // _ZN7S6525C5D2Ev
  S6525C5(); // tgen
};
//SIG(-1 S6525C5) C1{ VBC2{ v1 Fp Fi[2] Fp Fi} VBC3{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC4{ v3 v4 Fs:12 Fi Fc} VBC5{ BC3 BC4 v5 FD FL FC4 FL[2] Fp[3] Fi} vd Fi FC3 Fi Fs:2 Fp Fi}


 S6525C5 ::~S6525C5(){ note_dtor("S6525C5", this);}
S6525C5 ::S6525C5(){ note_ctor("S6525C5", this);} // tgen

static void Test_S6525C5()
{
  extern Class_Descriptor cd_S6525C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(58,137)];
    init_test(&cd_S6525C5, buf);
    S6525C5 *dp, &lv = *(dp=new (buf) S6525C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(912,544), "sizeof(S6525C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C5)");
    check_base_class_offset(lv, (S6525C6*), ABISELECT(264,156), "S6525C5");
    /*is_ambiguous_... S6525C5::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*), ABISELECT(304,180), "S6525C5");
    /*is_ambiguous_... S6525C5::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*), ABISELECT(528,312), "S6525C5");
    check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(560,328), "S6525C5");
    check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(784,460), "S6525C5");
    check_base_class_offset(lv, (S6525C3*), ABISELECT(560,328), "S6525C5");
    check_field_offset(lv, s6525c5f0, ABISELECT(8,4), "S6525C5.s6525c5f0");
    check_field_offset(lv, s6525c5f1, ABISELECT(16,8), "S6525C5.s6525c5f1");
    check_field_offset(lv, s6525c5f2, ABISELECT(240,140), "S6525C5.s6525c5f2");
    set_bf_and_test(lv, s6525c5f3, ABISELECT(244,144), 0, 2, 1, "S6525C5");
    set_bf_and_test(lv, s6525c5f3, ABISELECT(244,144), 0, 2, hide_sll(1LL<<1), "S6525C5");
    check_field_offset(lv, s6525c5f4, ABISELECT(248,148), "S6525C5.s6525c5f4");
    check_field_offset(lv, s6525c5f5, ABISELECT(256,152), "S6525C5.s6525c5f5");
    test_class_info(&lv, &cd_S6525C5);
    dp->~S6525C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C5(Test_S6525C5, "S6525C5", ABISELECT(912,544));

#else // __cplusplus

extern void _ZN7S6525C5C1Ev();
extern void _ZN7S6525C5D2Ev();
Name_Map name_map_S6525C5[] = {
  NSPAIR(_ZN7S6525C5C1Ev),
  NSPAIR(_ZN7S6525C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
static Base_Class bases_S6525C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C6,    ABISELECT(264,156), //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_S6525C2,    ABISELECT(304,180), //bcp->offset
    12, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C4,    ABISELECT(528,312), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C2,    ABISELECT(560,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(784,460), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(560,328), //bcp->offset
    22, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C5[];
extern void _ZN7S6525C5D1Ev();
extern void _ZN7S6525C5D0Ev();
extern void _ZN7S6525C62v6Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C5[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C5D0Ev,
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S6525C5[];
static  VTT_ENTRY vtt_S6525C5[] = {
  {&(_ZTV7S6525C5[6]),  6,34},
  {&(_ZTV7S6525C5[11]),  11,34},
  {&(_ZTV7S6525C5[15]),  15,34},
  {&(_ZTV7S6525C5[20]),  20,34},
  {&(_ZTV7S6525C5[28]),  28,34},
  {&(_ZTV7S6525C5[32]),  32,34},
};
extern VTBL_ENTRY _ZTI7S6525C5[];
extern  VTBL_ENTRY _ZTV7S6525C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C5[];
Class_Descriptor cd_S6525C5 = {  "S6525C5", // class name
  bases_S6525C5, 6,
  &(vtc_S6525C5[0]), // expected_vtbl_contents
  &(vtt_S6525C5[0]), // expected_vtt_contents
  ABISELECT(912,544), // object size
  NSPAIRA(_ZTI7S6525C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6525C5),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6525C5),6, //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  S6525C7  : virtual S6525C5 , S6525C4 {
  int s6525c7f0[6];
  __tsi64 s6525c7f1;
  int s6525c7f2;
  void *s6525c7f3;
  long double s6525c7f4;
  virtual  ~S6525C7(); // _ZN7S6525C7D2Ev
  virtual void  v7(); // _ZN7S6525C72v7Ev
  S6525C7(); // tgen
};
//SIG(-1 S6525C7) C1{ VBC2{ VBC3{ v2 Fp Fi[2] Fp Fi} VBC4{ v3 FD[6] Fp[6] Fl[6] Fs Fc Fp} VBC5{ v4 v5 Fs:12 Fi Fc} VBC6{ BC4 BC5 v6 FD FL FC5 FL[2] Fp[3] Fi} vd Fi FC4 Fi Fs:2 Fp Fi} BC5 vd v1 Fi[6] FL Fi Fp FD}


 S6525C7 ::~S6525C7(){ note_dtor("S6525C7", this);}
void  S6525C7 ::v7(){vfunc_called(this, "_ZN7S6525C72v7Ev");}
S6525C7 ::S6525C7(){ note_ctor("S6525C7", this);} // tgen

static void Test_S6525C7()
{
  extern Class_Descriptor cd_S6525C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(64,154)];
    init_test(&cd_S6525C7, buf);
    S6525C7 *dp, &lv = *(dp=new (buf) S6525C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1008,612), "sizeof(S6525C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C7)");
    check_base_class_offset(lv, (S6525C6*)(S6525C5*), ABISELECT(360,224), "S6525C7");
    /*is_ambiguous_... S6525C5::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C5*), ABISELECT(400,248), "S6525C7");
    /*is_ambiguous_... S6525C5::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C5*), ABISELECT(624,380), "S6525C7");
    check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(656,396), "S6525C7");
    check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(880,528), "S6525C7");
    check_base_class_offset(lv, (S6525C3*)(S6525C5*), ABISELECT(656,396), "S6525C7");
    check_base_class_offset(lv, (S6525C5*), ABISELECT(96,68), "S6525C7");
    /*is_ambiguous_... S6525C7::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*), 0, "S6525C7");
    check_field_offset(lv, s6525c7f0, ABISELECT(20,16), "S6525C7.s6525c7f0");
    check_field_offset(lv, s6525c7f1, ABISELECT(48,40), "S6525C7.s6525c7f1");
    check_field_offset(lv, s6525c7f2, ABISELECT(56,48), "S6525C7.s6525c7f2");
    check_field_offset(lv, s6525c7f3, ABISELECT(64,52), "S6525C7.s6525c7f3");
    check_field_offset(lv, s6525c7f4, ABISELECT(80,56), "S6525C7.s6525c7f4");
    test_class_info(&lv, &cd_S6525C7);
    dp->~S6525C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C7(Test_S6525C7, "S6525C7", ABISELECT(1008,612));

#else // __cplusplus

extern void _ZN7S6525C7C1Ev();
extern void _ZN7S6525C7D2Ev();
Name_Map name_map_S6525C7[] = {
  NSPAIR(_ZN7S6525C7C1Ev),
  NSPAIR(_ZN7S6525C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
extern Class_Descriptor cd_S6525C5;
extern VTBL_ENTRY _ZTI7S6525C5[];
extern  VTBL_ENTRY _ZTV7S6525C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C5[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
static Base_Class bases_S6525C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C6,    ABISELECT(360,224), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(400,248), //bcp->offset
    25, //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
    6, //immediately_derived
  0, 1},
  {&cd_S6525C4,    ABISELECT(624,380), //bcp->offset
    29, //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(656,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
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(880,528), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(656,396), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6525C5,    ABISELECT(96,68), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C7[];
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C7D1Ev();
extern void _ZN7S6525C7D0Ev();
extern void _ZN7S6525C72v7Ev();
extern void ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev)();
extern void ABISELECT(_ZThn96_N7S6525C7D1Ev,_ZThn68_N7S6525C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev)();
extern void ABISELECT(_ZThn96_N7S6525C7D0Ev,_ZThn68_N7S6525C7D0Ev)() __attribute__((weak));
extern void _ZN7S6525C62v6Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY vtc_S6525C7[] = {
  ABISELECT(656,396),
  ABISELECT(624,380),
  ABISELECT(400,248),
  ABISELECT(360,224),
  ABISELECT(96,68),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6525C72v7Ev,
  ABISELECT(-96,-68),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev),
  0,
  ABISELECT(-360,-224),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  0,
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  0,
  0,
  ABISELECT(-624,-380),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-656,-396),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-880,-528),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S6525C7[];
extern void _ZN7S6525C5D1Ev();
extern void _ZN7S6525C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C5__7S6525C7[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C5D0Ev,
};
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C6__7S6525C5__7S6525C7[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C2__7S6525C5__7S6525C7[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C4__7S6525C5__7S6525C7[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C3__7S6525C5__7S6525C7[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C7[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
static  VTT_ENTRY vtt_S6525C7[] = {
  {&(_ZTV7S6525C7[7]),  7,47},
  {&(_ZTV7S6525C7[19]),  19,47},
  {&(_ZTV7S6525C7[24]),  24,47},
  {&(_ZTV7S6525C7[28]),  28,47},
  {&(_ZTV7S6525C7[33]),  33,47},
  {&(_ZTV7S6525C7[41]),  41,47},
  {&(_ZTV7S6525C7[45]),  45,47},
  {&(_tg__ZTV7S6525C5__7S6525C7[6]),  6,8},
  {&(_tg__ZTV7S6525C6__7S6525C5__7S6525C7[3]),  3,4},
  {&(_tg__ZTV7S6525C2__7S6525C5__7S6525C7[3]),  3,4},
  {&(_tg__ZTV7S6525C4__7S6525C5__7S6525C7[4]),  4,6},
  {&(_tg__ZTV7S6525C3__7S6525C5__7S6525C7[6]),  6,8},
  {&(_tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C7[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S6525C7[];
extern  VTBL_ENTRY _ZTV7S6525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C7[];
static VTBL_ENTRY alt_thunk_names214[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6525C7D0Ev,_ZThn68_N7S6525C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S6525C7D1Ev,_ZThn68_N7S6525C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6525C7 = {  "S6525C7", // class name
  bases_S6525C7, 8,
  &(vtc_S6525C7[0]), // expected_vtbl_contents
  &(vtt_S6525C7[0]), // expected_vtt_contents
  ABISELECT(1008,612), // object size
  NSPAIRA(_ZTI7S6525C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6525C7),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6525C7),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names214,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6525C1  : S6525C2 , S6525C3 , virtual S6525C5 , virtual S6525C7 , S6525C6 {
  long double s6525c1f0;
  virtual  ~S6525C1(); // _ZN7S6525C1D2Ev
  virtual void  v1(); // _ZN7S6525C12v1Ev
  S6525C1(); // tgen
};
//SIG(1 S6525C1) C1{ BC2{ v2 FD[6] Fp[6] Fl[6] Fs Fc Fp} BC3{ BC2 BC4{ v3 v4 Fs:12 Fi Fc} v5 FD FL FC4 FL[2] Fp[3] Fi} VBC5{ VBC6{ v6 Fp Fi[2] Fp Fi} VBC2 VBC4 VBC3 vd Fi FC2 Fi Fs:2 Fp Fi} VBC7{ VBC5 BC4 vd v7 Fi[6] FL Fi Fp FD} BC6 vd v1 FD}


 S6525C1 ::~S6525C1(){ note_dtor("S6525C1", this);}
void  S6525C1 ::v1(){vfunc_called(this, "_ZN7S6525C12v1Ev");}
S6525C1 ::S6525C1(){ note_ctor("S6525C1", this);} // tgen

static void Test_S6525C1()
{
  extern Class_Descriptor cd_S6525C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(104,250)];
    init_test(&cd_S6525C1, buf);
    S6525C1 *dp, &lv = *(dp=new (buf) S6525C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1648,996), "sizeof(S6525C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6525C1)");
    /*is_ambiguous_... S6525C1::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*), 0, "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(224,132), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(448,264), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C3*), ABISELECT(224,132), "S6525C1");
    check_base_class_offset(lv, (S6525C6*)(S6525C5*), ABISELECT(904,540), "S6525C1");
    /*is_ambiguous_... S6525C5::S6525C2 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C5*), ABISELECT(944,564), "S6525C1");
    /*is_ambiguous_... S6525C5::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C5*), ABISELECT(1168,696), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C2*)(S6525C3*), ABISELECT(1200,712), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C3 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C3*), ABISELECT(1424,844), "S6525C1");
    check_base_class_offset(lv, (S6525C3*)(S6525C5*), ABISELECT(1200,712), "S6525C1");
    check_base_class_offset(lv, (S6525C5*), ABISELECT(640,384), "S6525C1");
    check_base_class_offset(lv, (S6525C5*)(S6525C7*), ABISELECT(640,384), "S6525C1");
    /*is_ambiguous_... S6525C7::S6525C4 */ AMB_check_base_class_offset(lv, (S6525C4*)(S6525C7*), ABISELECT(1552,928), "S6525C1");
    check_base_class_offset(lv, (S6525C7*), ABISELECT(1552,928), "S6525C1");
    /*is_ambiguous_... S6525C1::S6525C6 */ AMB_check_base_class_offset(lv, (S6525C6*), ABISELECT(576,348), "S6525C1");
    check_field_offset(lv, s6525c1f0, ABISELECT(624,372), "S6525C1.s6525c1f0");
    test_class_info(&lv, &cd_S6525C1);
    dp->~S6525C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6525C1(Test_S6525C1, "S6525C1", ABISELECT(1648,996));

#else // __cplusplus

extern void _ZN7S6525C1C1Ev();
extern void _ZN7S6525C1D2Ev();
Name_Map name_map_S6525C1[] = {
  NSPAIR(_ZN7S6525C1C1Ev),
  NSPAIR(_ZN7S6525C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C2;
extern VTBL_ENTRY _ZTI7S6525C2[];
extern  VTBL_ENTRY _ZTV7S6525C2[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C3;
extern VTBL_ENTRY _ZTI7S6525C3[];
extern  VTBL_ENTRY _ZTV7S6525C3[];
extern Class_Descriptor cd_S6525C5;
extern VTBL_ENTRY _ZTI7S6525C5[];
extern  VTBL_ENTRY _ZTV7S6525C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C5[];
extern Class_Descriptor cd_S6525C4;
extern VTBL_ENTRY _ZTI7S6525C4[];
extern  VTBL_ENTRY _ZTV7S6525C4[];
extern Class_Descriptor cd_S6525C7;
extern VTBL_ENTRY _ZTI7S6525C7[];
extern  VTBL_ENTRY _ZTV7S6525C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C7[];
extern Class_Descriptor cd_S6525C6;
extern VTBL_ENTRY _ZTI7S6525C6[];
extern  VTBL_ENTRY _ZTV7S6525C6[];
static Base_Class bases_S6525C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6525C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6525C2,    ABISELECT(224,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
    11, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(448,264), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(224,132), //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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6525C6,    ABISELECT(904,540), //bcp->offset
    32, //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
    10, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(944,564), //bcp->offset
    36, //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
    10, //immediately_derived
  0, 1},
  {&cd_S6525C4,    ABISELECT(1168,696), //bcp->offset
    40, //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
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6525C2,    ABISELECT(1200,712), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6525C4,    ABISELECT(1424,844), //bcp->offset
    54, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6525C3,    ABISELECT(1200,712), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6525C5,    ABISELECT(640,384), //bcp->offset
    23, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C4,    ABISELECT(1552,928), //bcp->offset
    -1, //bcp->virtual_function_table_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
    12, //immediately_derived
  0, 0},
  {&cd_S6525C7,    ABISELECT(1552,928), //bcp->offset
    58, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6525C6,    ABISELECT(576,348), //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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6525C1[];
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C1D1Ev();
extern void _ZN7S6525C1D0Ev();
extern void _ZN7S6525C12v1Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C62v6Ev();
extern void ABISELECT(_ZTv0_n56_N7S6525C1D1Ev,_ZTv0_n28_N7S6525C1D1Ev)();
extern void ABISELECT(_ZThn640_N7S6525C1D1Ev,_ZThn384_N7S6525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6525C1D0Ev,_ZTv0_n28_N7S6525C1D0Ev)();
extern void ABISELECT(_ZThn640_N7S6525C1D0Ev,_ZThn384_N7S6525C1D0Ev)() __attribute__((weak));
extern void _ZN7S6525C62v6Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void ABISELECT(_ZTv0_n80_N7S6525C1D1Ev,_ZTv0_n40_N7S6525C1D1Ev)();
extern void ABISELECT(_ZThn1552_N7S6525C1D1Ev,_ZThn928_N7S6525C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6525C1D0Ev,_ZTv0_n40_N7S6525C1D0Ev)();
extern void ABISELECT(_ZThn1552_N7S6525C1D0Ev,_ZThn928_N7S6525C1D0Ev)() __attribute__((weak));
extern void _ZN7S6525C72v7Ev();
static  VTBL_ENTRY vtc_S6525C1[] = {
  ABISELECT(1552,928),
  ABISELECT(1200,712),
  ABISELECT(1168,696),
  ABISELECT(944,564),
  ABISELECT(904,540),
  ABISELECT(640,384),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6525C12v1Ev,
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(-576,-348),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  ABISELECT(-640,-384),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(-640,-384),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C1D1Ev,_ZTv0_n28_N7S6525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C1D0Ev,_ZTv0_n28_N7S6525C1D0Ev),
  0,
  ABISELECT(-904,-540),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
  0,
  ABISELECT(-944,-564),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  0,
  0,
  ABISELECT(-1168,-696),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-1200,-712),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
  ABISELECT(-1424,-844),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  0,
  ABISELECT(-1552,-928),
  0,
  0,
  ABISELECT(-352,-216),
  ABISELECT(-384,-232),
  ABISELECT(-608,-364),
  ABISELECT(-648,-388),
  ABISELECT(-912,-544),
  ABISELECT(-1552,-928),
  (VTBL_ENTRY)&(_ZTI7S6525C1[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6525C1D1Ev,_ZTv0_n40_N7S6525C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6525C1D0Ev,_ZTv0_n40_N7S6525C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6525C72v7Ev,
};
extern VTBL_ENTRY _ZTV7S6525C1[];
extern void _ZN7S6525C5D1Ev();
extern void _ZN7S6525C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C5__7S6525C1[] = {
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C5D0Ev,
};
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C6__7S6525C5__7S6525C1[] = {
  0,
  ABISELECT(-264,-156),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C2__7S6525C5__7S6525C1[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C4__7S6525C5__7S6525C1[] = {
  0,
  0,
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C3__7S6525C5__7S6525C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C1[] = {
  ABISELECT(-784,-460),
  (VTBL_ENTRY)&(_ZTI7S6525C5[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
extern void _ZN7S6525C7D1Ev();
extern void _ZN7S6525C7D0Ev();
extern void _ZN7S6525C72v7Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C7__7S6525C1[] = {
  ABISELECT(-352,-216),
  ABISELECT(-384,-232),
  ABISELECT(-608,-364),
  ABISELECT(-648,-388),
  ABISELECT(-912,-544),
  0,
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6525C7D0Ev,
  (VTBL_ENTRY)&_ZN7S6525C72v7Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6525C5__7S6525C7__7S6525C1[] = {
  ABISELECT(912,544),
  ABISELECT(560,328),
  ABISELECT(528,312),
  ABISELECT(304,180),
  ABISELECT(264,156),
  ABISELECT(912,544),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D1Ev,_ZTv0_n28_N7S6525C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6525C7D0Ev,_ZTv0_n28_N7S6525C7D0Ev),
};
extern void _ZN7S6525C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C6__7S6525C7__7S6525C1[] = {
  0,
  ABISELECT(648,388),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C62v6Ev,
};
extern void _ZN7S6525C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C2__7S6525C7__7S6525C1[] = {
  0,
  ABISELECT(608,364),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C4__7S6525C7__7S6525C1[] = {
  0,
  0,
  ABISELECT(384,232),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
extern void _ZN7S6525C22v2Ev();
extern void _ZN7S6525C32v5Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C3__7S6525C7__7S6525C1[] = {
  ABISELECT(224,132),
  ABISELECT(224,132),
  0,
  0,
  ABISELECT(352,216),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6525C32v5Ev,
};
extern void _ZN7S6525C42v3Ev();
extern void _ZN7S6525C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S6525C47S6525C3__A1__7S6525C7__7S6525C1[] = {
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI7S6525C7[0]),
  (VTBL_ENTRY)&_ZN7S6525C42v3Ev,
  (VTBL_ENTRY)&_ZN7S6525C42v4Ev,
};
static  VTT_ENTRY vtt_S6525C1[] = {
  {&(_ZTV7S6525C1[8]),  8,74},
  {&(_ZTV7S6525C1[30]),  30,74},
  {&(_ZTV7S6525C1[35]),  35,74},
  {&(_ZTV7S6525C1[39]),  39,74},
  {&(_ZTV7S6525C1[44]),  44,74},
  {&(_ZTV7S6525C1[52]),  52,74},
  {&(_ZTV7S6525C1[56]),  56,74},
  {&(_ZTV7S6525C1[69]),  69,74},
  {&(_tg__ZTV7S6525C5__7S6525C1[6]),  6,8},
  {&(_tg__ZTV7S6525C6__7S6525C5__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C2__7S6525C5__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C4__7S6525C5__7S6525C1[4]),  4,6},
  {&(_tg__ZTV7S6525C3__7S6525C5__7S6525C1[6]),  6,8},
  {&(_tg__ZTV7S6525C47S6525C3__A1__7S6525C5__7S6525C1[2]),  2,4},
  {&(_tg__ZTV7S6525C7__7S6525C1[7]),  7,12},
  {&(_tg__ZTV7S6525C5__7S6525C7__7S6525C1[7]),  7,9},
  {&(_tg__ZTV7S6525C6__7S6525C7__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C2__7S6525C7__7S6525C1[3]),  3,4},
  {&(_tg__ZTV7S6525C4__7S6525C7__7S6525C1[4]),  4,6},
  {&(_tg__ZTV7S6525C3__7S6525C7__7S6525C1[6]),  6,8},
  {&(_tg__ZTV7S6525C47S6525C3__A1__7S6525C7__7S6525C1[2]),  2,4},
};
extern VTBL_ENTRY _ZTI7S6525C1[];
extern  VTBL_ENTRY _ZTV7S6525C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6525C1[];
static VTBL_ENTRY alt_thunk_names215[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6525C1D0Ev,_ZTv0_n40_N7S6525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N7S6525C1D0Ev,_ZThn928_N7S6525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6525C1D1Ev,_ZTv0_n40_N7S6525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N7S6525C1D1Ev,_ZThn928_N7S6525C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C1D0Ev,_ZTv0_n28_N7S6525C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S6525C1D0Ev,_ZThn384_N7S6525C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6525C1D1Ev,_ZTv0_n28_N7S6525C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N7S6525C1D1Ev,_ZThn384_N7S6525C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6525C1 = {  "S6525C1", // class name
  bases_S6525C1, 14,
  &(vtc_S6525C1[0]), // expected_vtbl_contents
  &(vtt_S6525C1[0]), // expected_vtt_contents
  ABISELECT(1648,996), // object size
  NSPAIRA(_ZTI7S6525C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S6525C1),74, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6525C1),21, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names215,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8581C2  {
  char s8581c2f0;
  int s8581c2f1;
  void *s8581c2f2[3];
  char s8581c2f3[3];
  ::S4228C19_nt s8581c2f4;
  char s8581c2f5;
  void *s8581c2f6;
  int s8581c2f7[2];
  virtual  ~S8581C2(); // _ZN7S8581C2D1Ev
  virtual void  v13(); // _ZN7S8581C23v13Ev
  virtual void  v14(); // _ZN7S8581C23v14Ev
  virtual void  v15(); // _ZN7S8581C23v15Ev
  virtual void  v16(); // _ZN7S8581C23v16Ev
  virtual void  v17(); // _ZN7S8581C23v17Ev
  virtual void  v18(); // _ZN7S8581C23v18Ev
  virtual void  v19(); // _ZN7S8581C23v19Ev
  virtual void  v20(); // _ZN7S8581C23v20Ev
  virtual void  v21(); // _ZN7S8581C23v21Ev
  virtual void  v22(); // _ZN7S8581C23v22Ev
  virtual void  v23(); // _ZN7S8581C23v23Ev
  virtual void  v24(); // _ZN7S8581C23v24Ev
  virtual void  v25(); // _ZN7S8581C23v25Ev
  virtual void  v26(); // _ZN7S8581C23v26Ev
  S8581C2(); // tgen
};
//SIG(-1 S8581C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S8581C2 ::~S8581C2(){ note_dtor("S8581C2", this);}
void  S8581C2 ::v13(){vfunc_called(this, "_ZN7S8581C23v13Ev");}
void  S8581C2 ::v14(){vfunc_called(this, "_ZN7S8581C23v14Ev");}
void  S8581C2 ::v15(){vfunc_called(this, "_ZN7S8581C23v15Ev");}
void  S8581C2 ::v16(){vfunc_called(this, "_ZN7S8581C23v16Ev");}
void  S8581C2 ::v17(){vfunc_called(this, "_ZN7S8581C23v17Ev");}
void  S8581C2 ::v18(){vfunc_called(this, "_ZN7S8581C23v18Ev");}
void  S8581C2 ::v19(){vfunc_called(this, "_ZN7S8581C23v19Ev");}
void  S8581C2 ::v20(){vfunc_called(this, "_ZN7S8581C23v20Ev");}
void  S8581C2 ::v21(){vfunc_called(this, "_ZN7S8581C23v21Ev");}
void  S8581C2 ::v22(){vfunc_called(this, "_ZN7S8581C23v22Ev");}
void  S8581C2 ::v23(){vfunc_called(this, "_ZN7S8581C23v23Ev");}
void  S8581C2 ::v24(){vfunc_called(this, "_ZN7S8581C23v24Ev");}
void  S8581C2 ::v25(){vfunc_called(this, "_ZN7S8581C23v25Ev");}
void  S8581C2 ::v26(){vfunc_called(this, "_ZN7S8581C23v26Ev");}
S8581C2 ::S8581C2(){ note_ctor("S8581C2", this);} // tgen

static void Test_S8581C2()
{
  extern Class_Descriptor cd_S8581C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S8581C2, buf);
    S8581C2 *dp, &lv = *(dp=new (buf) S8581C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S8581C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8581C2)");
    check_field_offset(lv, s8581c2f0, ABISELECT(8,4), "S8581C2.s8581c2f0");
    check_field_offset(lv, s8581c2f1, ABISELECT(12,8), "S8581C2.s8581c2f1");
    check_field_offset(lv, s8581c2f2, ABISELECT(16,12), "S8581C2.s8581c2f2");
    check_field_offset(lv, s8581c2f3, ABISELECT(40,24), "S8581C2.s8581c2f3");
    check_field_offset(lv, s8581c2f4, ABISELECT(48,28), "S8581C2.s8581c2f4");
    check_field_offset(lv, s8581c2f5, ABISELECT(64,40), "S8581C2.s8581c2f5");
    check_field_offset(lv, s8581c2f6, ABISELECT(72,44), "S8581C2.s8581c2f6");
    check_field_offset(lv, s8581c2f7, ABISELECT(80,48), "S8581C2.s8581c2f7");
    test_class_info(&lv, &cd_S8581C2);
    dp->~S8581C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8581C2(Test_S8581C2, "S8581C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S8581C2C1Ev();
extern void _ZN7S8581C2D1Ev();
Name_Map name_map_S8581C2[] = {
  NSPAIR(_ZN7S8581C2C1Ev),
  NSPAIR(_ZN7S8581C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8581C2[];
extern void _ZN7S8581C2D1Ev();
extern void _ZN7S8581C2D0Ev();
extern void _ZN7S8581C23v13Ev();
extern void _ZN7S8581C23v14Ev();
extern void _ZN7S8581C23v15Ev();
extern void _ZN7S8581C23v16Ev();
extern void _ZN7S8581C23v17Ev();
extern void _ZN7S8581C23v18Ev();
extern void _ZN7S8581C23v19Ev();
extern void _ZN7S8581C23v20Ev();
extern void _ZN7S8581C23v21Ev();
extern void _ZN7S8581C23v22Ev();
extern void _ZN7S8581C23v23Ev();
extern void _ZN7S8581C23v24Ev();
extern void _ZN7S8581C23v25Ev();
extern void _ZN7S8581C23v26Ev();
static  VTBL_ENTRY vtc_S8581C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8581C2[0]),
  (VTBL_ENTRY)&_ZN7S8581C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8581C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v26Ev,
};
extern VTBL_ENTRY _ZTI7S8581C2[];
extern  VTBL_ENTRY _ZTV7S8581C2[];
Class_Descriptor cd_S8581C2 = {  "S8581C2", // class name
  0,0,//no base classes
  &(vtc_S8581C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S8581C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8581C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8581C5  {
  virtual  ~S8581C5(); // _ZN7S8581C5D1Ev
  virtual void  v27(); // _ZN7S8581C53v27Ev
  S8581C5(); // tgen
};
//SIG(-1 S8581C5) C1{ vd v1}


 S8581C5 ::~S8581C5(){ note_dtor("S8581C5", this);}
void  S8581C5 ::v27(){vfunc_called(this, "_ZN7S8581C53v27Ev");}
S8581C5 ::S8581C5(){ note_ctor("S8581C5", this);} // tgen

static void Test_S8581C5()
{
  extern Class_Descriptor cd_S8581C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S8581C5, buf);
    S8581C5 *dp, &lv = *(dp=new (buf) S8581C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S8581C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8581C5)");
    test_class_info(&lv, &cd_S8581C5);
    dp->~S8581C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8581C5(Test_S8581C5, "S8581C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S8581C5C1Ev();
extern void _ZN7S8581C5D1Ev();
Name_Map name_map_S8581C5[] = {
  NSPAIR(_ZN7S8581C5C1Ev),
  NSPAIR(_ZN7S8581C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8581C5[];
extern void _ZN7S8581C5D1Ev();
extern void _ZN7S8581C5D0Ev();
extern void _ZN7S8581C53v27Ev();
static  VTBL_ENTRY vtc_S8581C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8581C5[0]),
  (VTBL_ENTRY)&_ZN7S8581C5D1Ev,
  (VTBL_ENTRY)&_ZN7S8581C5D0Ev,
  (VTBL_ENTRY)&_ZN7S8581C53v27Ev,
};
extern VTBL_ENTRY _ZTI7S8581C5[];
extern  VTBL_ENTRY _ZTV7S8581C5[];
Class_Descriptor cd_S8581C5 = {  "S8581C5", // class name
  0,0,//no base classes
  &(vtc_S8581C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S8581C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8581C5),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  S8581C1  : S8581C2 , S8581C5 {
  ::S4221C6_nt s8581c1f0;
  ::S4228C44 s8581c1f1;
  virtual  ~S8581C1(); // _ZN7S8581C1D1Ev
  virtual void  v1(); // _ZN7S8581C12v1Ev
  virtual void  v2(); // _ZN7S8581C12v2Ev
  virtual void  v3(); // _ZN7S8581C12v3Ev
  virtual void  v4(); // _ZN7S8581C12v4Ev
  virtual void  v5(); // _ZN7S8581C12v5Ev
  virtual void  v6(); // _ZN7S8581C12v6Ev
  virtual void  v7(); // _ZN7S8581C12v7Ev
  virtual void  v8(); // _ZN7S8581C12v8Ev
  virtual void  v9(); // _ZN7S8581C12v9Ev
  virtual void  v10(); // _ZN7S8581C13v10Ev
  virtual void  v11(); // _ZN7S8581C13v11Ev
  virtual void  v12(); // _ZN7S8581C13v12Ev
  S8581C1(); // tgen
};
//SIG(1 S8581C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} BC5{ vd v27} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 FC6{ m Fp Fi FC7{ m}} FC8{ m Fp Fi[2] FC7}}


 S8581C1 ::~S8581C1(){ note_dtor("S8581C1", this);}
void  S8581C1 ::v1(){vfunc_called(this, "_ZN7S8581C12v1Ev");}
void  S8581C1 ::v2(){vfunc_called(this, "_ZN7S8581C12v2Ev");}
void  S8581C1 ::v3(){vfunc_called(this, "_ZN7S8581C12v3Ev");}
void  S8581C1 ::v4(){vfunc_called(this, "_ZN7S8581C12v4Ev");}
void  S8581C1 ::v5(){vfunc_called(this, "_ZN7S8581C12v5Ev");}
void  S8581C1 ::v6(){vfunc_called(this, "_ZN7S8581C12v6Ev");}
void  S8581C1 ::v7(){vfunc_called(this, "_ZN7S8581C12v7Ev");}
void  S8581C1 ::v8(){vfunc_called(this, "_ZN7S8581C12v8Ev");}
void  S8581C1 ::v9(){vfunc_called(this, "_ZN7S8581C12v9Ev");}
void  S8581C1 ::v10(){vfunc_called(this, "_ZN7S8581C13v10Ev");}
void  S8581C1 ::v11(){vfunc_called(this, "_ZN7S8581C13v11Ev");}
void  S8581C1 ::v12(){vfunc_called(this, "_ZN7S8581C13v12Ev");}
S8581C1 ::S8581C1(){ note_ctor("S8581C1", this);} // tgen

static void Test_S8581C1()
{
  extern Class_Descriptor cd_S8581C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S8581C1, buf);
    S8581C1 *dp, &lv = *(dp=new (buf) S8581C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S8581C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8581C1)");
    check_base_class_offset(lv, (S8581C2*), 0, "S8581C1");
    check_base_class_offset(lv, (S8581C5*), ABISELECT(88,56), "S8581C1");
    check_field_offset(lv, s8581c1f0, ABISELECT(96,60), "S8581C1.s8581c1f0");
    check_field_offset(lv, s8581c1f1, ABISELECT(112,72), "S8581C1.s8581c1f1");
    test_class_info(&lv, &cd_S8581C1);
    dp->~S8581C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8581C1(Test_S8581C1, "S8581C1", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S8581C1C1Ev();
extern void _ZN7S8581C1D1Ev();
Name_Map name_map_S8581C1[] = {
  NSPAIR(_ZN7S8581C1C1Ev),
  NSPAIR(_ZN7S8581C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8581C2;
extern VTBL_ENTRY _ZTI7S8581C2[];
extern  VTBL_ENTRY _ZTV7S8581C2[];
extern Class_Descriptor cd_S8581C5;
extern VTBL_ENTRY _ZTI7S8581C5[];
extern  VTBL_ENTRY _ZTV7S8581C5[];
static Base_Class bases_S8581C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8581C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8581C5,    ABISELECT(88,56), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8581C1[];
extern void _ZN7S8581C1D1Ev();
extern void _ZN7S8581C1D0Ev();
extern void _ZN7S8581C23v13Ev();
extern void _ZN7S8581C23v14Ev();
extern void _ZN7S8581C23v15Ev();
extern void _ZN7S8581C23v16Ev();
extern void _ZN7S8581C23v17Ev();
extern void _ZN7S8581C23v18Ev();
extern void _ZN7S8581C23v19Ev();
extern void _ZN7S8581C23v20Ev();
extern void _ZN7S8581C23v21Ev();
extern void _ZN7S8581C23v22Ev();
extern void _ZN7S8581C23v23Ev();
extern void _ZN7S8581C23v24Ev();
extern void _ZN7S8581C23v25Ev();
extern void _ZN7S8581C23v26Ev();
extern void _ZN7S8581C12v1Ev();
extern void _ZN7S8581C12v2Ev();
extern void _ZN7S8581C12v3Ev();
extern void _ZN7S8581C12v4Ev();
extern void _ZN7S8581C12v5Ev();
extern void _ZN7S8581C12v6Ev();
extern void _ZN7S8581C12v7Ev();
extern void _ZN7S8581C12v8Ev();
extern void _ZN7S8581C12v9Ev();
extern void _ZN7S8581C13v10Ev();
extern void _ZN7S8581C13v11Ev();
extern void _ZN7S8581C13v12Ev();
extern void ABISELECT(_ZThn88_N7S8581C1D1Ev,_ZThn56_N7S8581C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S8581C1D0Ev,_ZThn56_N7S8581C1D0Ev)();
extern void _ZN7S8581C53v27Ev();
static  VTBL_ENTRY vtc_S8581C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8581C1[0]),
  (VTBL_ENTRY)&_ZN7S8581C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8581C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8581C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8581C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8581C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8581C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8581C13v12Ev,
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S8581C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S8581C1D1Ev,_ZThn56_N7S8581C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn88_N7S8581C1D0Ev,_ZThn56_N7S8581C1D0Ev),
  (VTBL_ENTRY)&_ZN7S8581C53v27Ev,
};
extern VTBL_ENTRY _ZTI7S8581C1[];
extern  VTBL_ENTRY _ZTV7S8581C1[];
Class_Descriptor cd_S8581C1 = {  "S8581C1", // class name
  bases_S8581C1, 2,
  &(vtc_S8581C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S8581C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8581C1),35, //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  S21154C6  : virtual S20760C9 {
  virtual  ~S21154C6(); // _ZN8S21154C6D2Ev
  S21154C6(); // tgen
};
//SIG(-1 S21154C6) C1{ VBC2{ vd m FL} vd}


 S21154C6 ::~S21154C6(){ note_dtor("S21154C6", this);}
S21154C6 ::S21154C6(){ note_ctor("S21154C6", this);} // tgen

static void Test_S21154C6()
{
  extern Class_Descriptor cd_S21154C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21154C6, buf);
    S21154C6 *dp, &lv = *(dp=new (buf) S21154C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21154C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21154C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21154C6");
    test_class_info(&lv, &cd_S21154C6);
    dp->~S21154C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C6(Test_S21154C6, "S21154C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21154C6C1Ev();
extern void _ZN8S21154C6D2Ev();
Name_Map name_map_S21154C6[] = {
  NSPAIR(_ZN8S21154C6C1Ev),
  NSPAIR(_ZN8S21154C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21154C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C6[];
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S21154C6D1Ev,_ZThn4_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S21154C6D0Ev,_ZThn4_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C6[];
static  VTT_ENTRY vtt_S21154C6[] = {
  {&(_ZTV8S21154C6[3]),  3,10},
  {&(_ZTV8S21154C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
static VTBL_ENTRY alt_thunk_names216[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21154C6D0Ev,_ZThn4_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21154C6D1Ev,_ZThn4_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C6 = {  "S21154C6", // class name
  bases_S21154C6, 1,
  &(vtc_S21154C6[0]), // expected_vtbl_contents
  &(vtt_S21154C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21154C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21154C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names216,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C4  : S20760C9 , virtual S20760C13 , S21154C6 {
  ::S20760C13 s21154c4f0;
  ~S21154C4(); // tgen
  S21154C4(); // tgen
};
//SIG(-1 S21154C4) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21154C4 ::~S21154C4(){ note_dtor("S21154C4", this);} // tgen
S21154C4 ::S21154C4(){ note_ctor("S21154C4", this);} // tgen

static void Test_S21154C4()
{
  extern Class_Descriptor cd_S21154C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21154C4, buf);
    S21154C4 *dp, &lv = *(dp=new (buf) S21154C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21154C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21154C4)");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21154C4");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21154C4");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(88,72), "S21154C4");
    check_base_class_offset(lv, (S21154C6*), ABISELECT(16,12), "S21154C4");
    check_field_offset(lv, s21154c4f0, ABISELECT(24,16), "S21154C4.s21154c4f0");
    test_class_info(&lv, &cd_S21154C4);
    dp->~S21154C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C4(Test_S21154C4, "S21154C4", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21154C4C1Ev();
extern void _ZN8S21154C4D1Ev();
Name_Map name_map_S21154C4[] = {
  NSPAIR(_ZN8S21154C4C1Ev),
  NSPAIR(_ZN8S21154C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
static Base_Class bases_S21154C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C4[];
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn88_N8S21154C4D1Ev,_ZThn72_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn88_N8S21154C4D0Ev,_ZThn72_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C4[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C4[];
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S21154C6D1Ev,_ZThn60_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S21154C6D0Ev,_ZThn60_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__8S21154C4[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C4[] = {
  {&(_ZTV8S21154C4[4]),  4,21},
  {&(_tg__ZTV8S21154C6__8S21154C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__8S21154C4[3]),  3,5},
  {&(_ZTV8S21154C4[14]),  14,21},
  {&(_ZTV8S21154C4[9]),  9,21},
  {&(_ZTV8S21154C4[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
static VTBL_ENTRY alt_thunk_names217[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C6D0Ev,_ZThn60_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C6D1Ev,_ZThn60_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21154C4D0Ev,_ZThn72_N8S21154C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21154C4D1Ev,_ZThn72_N8S21154C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C4 = {  "S21154C4", // class name
  bases_S21154C4, 4,
  &(vtc_S21154C4[0]), // expected_vtbl_contents
  &(vtt_S21154C4[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21154C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21154C4),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names217,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C2  : virtual S20760C13 , virtual S21154C4 {
  long double s21154c2f0;
  ~S21154C2(); // tgen
  S21154C2(); // tgen
};
//SIG(-1 S21154C2) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21154C2 ::~S21154C2(){ note_dtor("S21154C2", this);} // tgen
S21154C2 ::S21154C2(){ note_ctor("S21154C2", this);} // tgen

static void Test_S21154C2()
{
  extern Class_Descriptor cd_S21154C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21154C2, buf);
    S21154C2 *dp, &lv = *(dp=new (buf) S21154C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21154C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C2)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21154C2");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(32,16), "S21154C2");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(64,44), "S21154C2");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(120,88), "S21154C2");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(80,56), "S21154C2");
    check_base_class_offset(lv, (S21154C4*), ABISELECT(64,44), "S21154C2");
    check_field_offset(lv, s21154c2f0, ABISELECT(16,4), "S21154C2.s21154c2f0");
    test_class_info(&lv, &cd_S21154C2);
    dp->~S21154C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C2(Test_S21154C2, "S21154C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S21154C2C1Ev();
extern void _ZN8S21154C2D1Ev();
Name_Map name_map_S21154C2[] = {
  NSPAIR(_ZN8S21154C2C1Ev),
  NSPAIR(_ZN8S21154C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
static Base_Class bases_S21154C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C2[];
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C2[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C2[];
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C2[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C2[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C2[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
static  VTT_ENTRY vtt_S21154C2[] = {
  {&(_ZTV8S21154C2[5]),  5,29},
  {&(_ZTV8S21154C2[10]),  10,29},
  {&(_ZTV8S21154C2[17]),  17,29},
  {&(_ZTV8S21154C2[22]),  22,29},
  {&(_ZTV8S21154C2[27]),  27,29},
  {&(_tg__ZTV8S21154C4__8S21154C2[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
static VTBL_ENTRY alt_thunk_names218[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C2 = {  "S21154C2", // class name
  bases_S21154C2, 5,
  &(vtc_S21154C2[0]), // expected_vtbl_contents
  &(vtt_S21154C2[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S21154C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21154C2),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C2),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names218,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C8  : S4161C4_nt , S21154C2 , S20760C22_nt , virtual S21154C6 {
  virtual  ~S21154C8(); // _ZN8S21154C8D2Ev
  S21154C8(); // tgen
};
//SIG(-1 S21154C8) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21154C8 ::~S21154C8(){ note_dtor("S21154C8", this);}
S21154C8 ::S21154C8(){ note_ctor("S21154C8", this);} // tgen

static void Test_S21154C8()
{
  extern Class_Descriptor cd_S21154C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21154C8, buf);
    S21154C8 *dp, &lv = *(dp=new (buf) S21154C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21154C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C8)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21154C8");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*), ABISELECT(48,24), "S21154C8");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(48,24), "S21154C8");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(80,52), "S21154C8");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(136,96), "S21154C8");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(136,96), "S21154C8");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(96,64), "S21154C8");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*), ABISELECT(80,52), "S21154C8");
    check_base_class_offset(lv, (S21154C2*), 0, "S21154C8");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21154C8");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*), ABISELECT(152,108), "S21154C8");
    test_class_info(&lv, &cd_S21154C8);
    dp->~S21154C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C8(Test_S21154C8, "S21154C8", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S21154C8C1Ev();
extern void _ZN8S21154C8D2Ev();
Name_Map name_map_S21154C8[] = {
  NSPAIR(_ZN8S21154C8C1Ev),
  NSPAIR(_ZN8S21154C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
static Base_Class bases_S21154C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21154C2,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21154C6,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C8[];
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
extern void ABISELECT(_ZThn40_N8S21154C8D1Ev,_ZThn20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C8D0Ev,_ZThn20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C8[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21154C8D1Ev,_ZThn20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21154C8D0Ev,_ZThn20_N8S21154C8D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C8[];
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C2__8S21154C8[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C2__8S21154C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C2__8S21154C8[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C8[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C2__8S21154C8[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C8[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C8[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C8[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C8[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C8[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__8S21154C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C8[] = {
  {&(_ZTV8S21154C8[6]),  6,40},
  {&(_tg__ZTV8S21154C2__8S21154C8[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C2__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C2__8S21154C8[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C2__8S21154C8[3]),  3,5},
  {&(_ZTV8S21154C8[15]),  15,40},
  {&(_ZTV8S21154C8[22]),  22,40},
  {&(_ZTV8S21154C8[27]),  27,40},
  {&(_ZTV8S21154C8[32]),  32,40},
  {&(_ZTV8S21154C8[38]),  38,40},
  {&(_tg__ZTV8S21154C4__8S21154C8[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__8S21154C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
static VTBL_ENTRY alt_thunk_names219[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C8 = {  "S21154C8", // class name
  bases_S21154C8, 9,
  &(vtc_S21154C8[0]), // expected_vtbl_contents
  &(vtt_S21154C8[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S21154C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21154C8),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C8),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names219,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C7  : S20760C9 , S21154C8 {
  virtual  ~S21154C7(); // _ZN8S21154C7D2Ev
  S21154C7(); // tgen
};
//SIG(-1 S21154C7) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21154C7 ::~S21154C7(){ note_dtor("S21154C7", this);}
S21154C7 ::S21154C7(){ note_ctor("S21154C7", this);} // tgen

static void Test_S21154C7()
{
  extern Class_Descriptor cd_S21154C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21154C7, buf);
    S21154C7 *dp, &lv = *(dp=new (buf) S21154C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21154C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C7)");
    /*is_ambiguous_... S21154C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21154C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*), ABISELECT(48,28), "S21154C7");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*), ABISELECT(64,36), "S21154C7");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(64,36), "S21154C7");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(96,64), "S21154C7");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(152,108), "S21154C7");
    /*is_ambiguous_... S21154C7::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(152,108), "S21154C7");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(112,76), "S21154C7");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*), ABISELECT(96,64), "S21154C7");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*), ABISELECT(16,12), "S21154C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*), ABISELECT(56,32), "S21154C7");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*), ABISELECT(168,120), "S21154C7");
    check_base_class_offset(lv, (S21154C8*), ABISELECT(16,12), "S21154C7");
    test_class_info(&lv, &cd_S21154C7);
    dp->~S21154C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C7(Test_S21154C7, "S21154C7", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S21154C7C1Ev();
extern void _ZN8S21154C7D2Ev();
Name_Map name_map_S21154C7[] = {
  NSPAIR(_ZN8S21154C7C1Ev),
  NSPAIR(_ZN8S21154C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
static Base_Class bases_S21154C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21154C2,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21154C8,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S21154C7[];
extern void _ZN8S21154C7D1Ev();
extern void _ZN8S21154C7D0Ev();
extern void ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C7D1Ev,_ZThn32_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C7D0Ev,_ZThn32_N8S21154C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21154C7D1Ev,_ZThn64_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21154C7D0Ev,_ZThn64_N8S21154C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn152_N8S21154C7D1Ev,_ZThn108_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn152_N8S21154C7D0Ev,_ZThn108_N8S21154C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn168_N8S21154C7D1Ev,_ZThn120_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn168_N8S21154C7D0Ev,_ZThn120_N8S21154C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C7[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&_ZN8S21154C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C7D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C7D1Ev,_ZThn32_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C7D0Ev,_ZThn32_N8S21154C7D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C7[];
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C8__8S21154C7[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C8__8S21154C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C8__8S21154C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C8__8S21154C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C8__8S21154C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C8__8S21154C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C8__8S21154C7[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C7[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C7[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C7[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C7[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C7[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C7[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__8S21154C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C7[] = {
  {&(_ZTV8S21154C7[6]),  6,48},
  {&(_tg__ZTV8S21154C8__8S21154C7[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C8__8S21154C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C8__8S21154C7[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C8__8S21154C7[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C8__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C8__8S21154C7[4]),  4,6},
  {&(_ZTV8S21154C7[14]),  14,48},
  {&(_ZTV8S21154C7[23]),  23,48},
  {&(_ZTV8S21154C7[30]),  30,48},
  {&(_ZTV8S21154C7[35]),  35,48},
  {&(_ZTV8S21154C7[40]),  40,48},
  {&(_ZTV8S21154C7[46]),  46,48},
  {&(_tg__ZTV8S21154C4__8S21154C7[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__8S21154C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C7[];
extern  VTBL_ENTRY _ZTV8S21154C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C7[];
static VTBL_ENTRY alt_thunk_names220[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D0Ev,_ZThn108_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C8D1Ev,_ZThn108_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn52_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn52_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn96_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn96_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn52_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn52_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn96_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D0Ev,_ZThn24_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn96_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C2D1Ev,_ZThn24_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C7D0Ev,_ZThn120_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C7D1Ev,_ZThn120_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C7D0Ev,_ZThn64_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C7D1Ev,_ZThn64_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C7D0Ev,_ZThn108_N8S21154C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21154C7D1Ev,_ZThn108_N8S21154C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C7 = {  "S21154C7", // class name
  bases_S21154C7, 11,
  &(vtc_S21154C7[0]), // expected_vtbl_contents
  &(vtt_S21154C7[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S21154C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21154C7),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C7),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names220,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C13  : virtual S4161C4_nt , virtual S20760C9 , virtual S21154C4 , S21154C8 , virtual S20760C5_nt {
  ~S21154C13(); // tgen
  S21154C13(); // tgen
};
//SIG(-1 S21154C13) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S21154C13 ::~S21154C13(){ note_dtor("S21154C13", this);} // tgen
S21154C13 ::S21154C13(){ note_ctor("S21154C13", this);} // tgen

static void Test_S21154C13()
{
  extern Class_Descriptor cd_S21154C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S21154C13, buf);
    S21154C13 *dp, &lv = *(dp=new (buf) S21154C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S21154C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C13)");
    /*is_ambiguous_... S21154C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S21154C13");
    /*is_ambiguous_... S21154C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S21154C13");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(56,28), "S21154C13");
    /*is_ambiguous_... S21154C13::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(56,28), "S21154C13");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(72,40), "S21154C13");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(128,84), "S21154C13");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*), ABISELECT(128,84), "S21154C13");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(88,52), "S21154C13");
    check_base_class_offset(lv, (S21154C4*), ABISELECT(72,40), "S21154C13");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*), ABISELECT(72,40), "S21154C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*), ABISELECT(32,16), "S21154C13");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*), 0, "S21154C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*), ABISELECT(40,20), "S21154C13");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*), ABISELECT(160,112), "S21154C13");
    check_base_class_offset(lv, (S21154C8*), 0, "S21154C13");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S21154C13");
    test_class_info(&lv, &cd_S21154C13);
    dp->~S21154C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C13(Test_S21154C13, "S21154C13", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN9S21154C13C1Ev();
extern void _ZN9S21154C13D1Ev();
Name_Map name_map_S21154C13[] = {
  NSPAIR(_ZN9S21154C13C1Ev),
  NSPAIR(_ZN9S21154C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21154C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S21154C2,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21154C8,    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_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21154C13[];
extern void _ZN9S21154C13D1Ev();
extern void _ZN9S21154C13D0Ev();
extern void ABISELECT(_ZThn40_N9S21154C13D1Ev,_ZThn20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21154C13D0Ev,_ZThn20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S21154C13D1Ev,_ZThn28_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S21154C13D0Ev,_ZThn28_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21154C13D1Ev,_ZThn40_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21154C13D0Ev,_ZThn40_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn84_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn84_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21154C13D1Ev,_ZThn112_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21154C13D0Ev,_ZThn112_N9S21154C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C13[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&_ZN9S21154C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21154C13D1Ev,_ZThn20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21154C13D0Ev,_ZThn20_N9S21154C13D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21154C13[];
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C8__9S21154C13[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn84_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn84_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21154C2D1Ev,_ZThn40_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S21154C2D0Ev,_ZThn40_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C2D1Ev,_ZThn28_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C2D0Ev,_ZThn28_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C8__9S21154C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn84_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn84_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C8__9S21154C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S21154C8D1Ev,_ZThn40_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S21154C8D0Ev,_ZThn40_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C8__9S21154C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C8__9S21154C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C8D1Ev,_ZThn28_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C8D0Ev,_ZThn28_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C8__9S21154C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S21154C8D1Ev,_ZThn112_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S21154C8D0Ev,_ZThn112_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C8__9S21154C13[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C13[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C13[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__9S21154C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__9S21154C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__9S21154C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C13[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__9S21154C13[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
static  VTT_ENTRY vtt_S21154C13[] = {
  {&(_ZTV9S21154C13[8]),  8,47},
  {&(_tg__ZTV8S21154C8__9S21154C13[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C8__9S21154C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C8__9S21154C13[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C8__9S21154C13[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C8__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C8__9S21154C13[4]),  4,6},
  {&(_ZTV9S21154C13[17]),  17,47},
  {&(_ZTV9S21154C13[24]),  24,47},
  {&(_ZTV9S21154C13[34]),  34,47},
  {&(_ZTV9S21154C13[29]),  29,47},
  {&(_ZTV9S21154C13[40]),  40,47},
  {&(_ZTV9S21154C13[45]),  45,47},
  {&(_tg__ZTV8S21154C4__9S21154C13[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__9S21154C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21154C13[];
extern  VTBL_ENTRY _ZTV9S21154C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C13[];
static VTBL_ENTRY alt_thunk_names221[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21154C8D0Ev,_ZThn112_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21154C8D1Ev,_ZThn112_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C8D0Ev,_ZThn40_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C8D1Ev,_ZThn40_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C8D0Ev,_ZThn28_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn84_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C8D1Ev,_ZThn28_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn84_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C2D0Ev,_ZThn40_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21154C2D1Ev,_ZThn40_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C2D0Ev,_ZThn28_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn84_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C2D1Ev,_ZThn28_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn84_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21154C13D0Ev,_ZThn112_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21154C13D1Ev,_ZThn112_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21154C13D0Ev,_ZThn40_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21154C13D1Ev,_ZThn40_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn84_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21154C13D0Ev,_ZThn28_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn84_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21154C13D1Ev,_ZThn28_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C13 = {  "S21154C13", // class name
  bases_S21154C13, 12,
  &(vtc_S21154C13[0]), // expected_vtbl_contents
  &(vtt_S21154C13[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI9S21154C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21154C13),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21154C13),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names221,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C15  : virtual S20760C13 , S21154C4 , virtual S4161C4_nt {
  ::S21154C13 s21154c15f0;
  ~S21154C15(); // tgen
  S21154C15(); // tgen
};
//SIG(-1 S21154C15) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S21154C15 ::~S21154C15(){ note_dtor("S21154C15", this);} // tgen
S21154C15 ::S21154C15(){ note_ctor("S21154C15", this);} // tgen

static void Test_S21154C15()
{
  extern Class_Descriptor cd_S21154C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S21154C15, buf);
    S21154C15 *dp, &lv = *(dp=new (buf) S21154C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S21154C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C15)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S21154C15");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(256,172), "S21154C15");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), 0, "S21154C15");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(288,200), "S21154C15");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(16,12), "S21154C15");
    check_base_class_offset(lv, (S21154C4*), 0, "S21154C15");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S21154C15");
    check_field_offset(lv, s21154c15f0, ABISELECT(64,44), "S21154C15.s21154c15f0");
    test_class_info(&lv, &cd_S21154C15);
    dp->~S21154C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C15(Test_S21154C15, "S21154C15", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN9S21154C15C1Ev();
extern void _ZN9S21154C15D1Ev();
Name_Map name_map_S21154C15[] = {
  NSPAIR(_ZN9S21154C15C1Ev),
  NSPAIR(_ZN9S21154C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S21154C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21154C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21154C15[];
extern void _ZN9S21154C15D1Ev();
extern void _ZN9S21154C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S21154C15D1Ev,_ZThn172_N9S21154C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S21154C15D0Ev,_ZThn172_N9S21154C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S21154C15D1Ev,_ZThn200_N9S21154C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S21154C15D0Ev,_ZThn200_N9S21154C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21154C15[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&_ZN9S21154C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C15D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21154C15[];
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C15[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C15[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21154C6D1Ev,_ZThn188_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21154C6D0Ev,_ZThn188_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C15[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S21154C4D1Ev,_ZThn172_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S21154C4D0Ev,_ZThn172_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__9S21154C15[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__9S21154C15[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn288_N8S21154C4D1Ev,_ZThn200_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn288_N8S21154C4D0Ev,_ZThn200_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__9S21154C15[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
static  VTT_ENTRY vtt_S21154C15[] = {
  {&(_ZTV9S21154C15[5]),  5,22},
  {&(_tg__ZTV8S21154C4__9S21154C15[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__9S21154C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__9S21154C15[3]),  3,5},
  {&(_ZTV9S21154C15[15]),  15,22},
  {&(_ZTV9S21154C15[10]),  10,22},
  {&(_ZTV9S21154C15[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S21154C15[];
extern  VTBL_ENTRY _ZTV9S21154C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C15[];
static VTBL_ENTRY alt_thunk_names222[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C4D0Ev,_ZThn200_N8S21154C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21154C4D0Ev,_ZThn172_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C4D1Ev,_ZThn200_N8S21154C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21154C4D1Ev,_ZThn172_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C6D0Ev,_ZThn188_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C6D1Ev,_ZThn188_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C15D0Ev,_ZThn200_N9S21154C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21154C15D0Ev,_ZThn172_N9S21154C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C15D1Ev,_ZThn200_N9S21154C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21154C15D1Ev,_ZThn172_N9S21154C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C15 = {  "S21154C15", // class name
  bases_S21154C15, 6,
  &(vtc_S21154C15[0]), // expected_vtbl_contents
  &(vtt_S21154C15[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI9S21154C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21154C15),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21154C15),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names222,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C11  : S4228C37 , S20760C9 , virtual S4161C4_nt , S21154C13 , virtual S21154C15 {
  int s21154c11f0;
  virtual  ~S21154C11(); // _ZN9S21154C11D2Ev
  S21154C11(); // tgen
};
//SIG(-1 S21154C11) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S21154C11 ::~S21154C11(){ note_dtor("S21154C11", this);}
S21154C11 ::S21154C11(){ note_ctor("S21154C11", this);} // tgen

static void Test_S21154C11()
{
  extern Class_Descriptor cd_S21154C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S21154C11, buf);
    S21154C11 *dp, &lv = *(dp=new (buf) S21154C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S21154C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C11)");
    check_base_class_offset(lv, (S4228C37*), 0, "S21154C11");
    /*is_ambiguous_... S21154C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21154C11");
    /*is_ambiguous_... S21154C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S21154C11");
    /*is_ambiguous_... S21154C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21154C13*), ABISELECT(72,40), "S21154C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C15*), ABISELECT(72,40), "S21154C11");
    /*is_ambiguous_... S21154C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C13*), ABISELECT(80,44), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(80,44), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(80,44), "S21154C11");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(80,44), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(96,56), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(152,100), "S21154C11");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*)(S21154C13*), ABISELECT(152,100), "S21154C11");
    check_base_class_offset(lv, (S20760C13*)(S21154C15*), ABISELECT(152,100), "S21154C11");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*)(S21154C15*), ABISELECT(152,100), "S21154C11");
    /*is_ambiguous_... S21154C11::S21154C4 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(112,68), "S21154C11");
    check_base_class_offset(lv, (S21154C4*)(S21154C13*), ABISELECT(96,56), "S21154C11");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*)(S21154C13*), ABISELECT(96,56), "S21154C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*)(S21154C13*), ABISELECT(48,28), "S21154C11");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*)(S21154C13*), ABISELECT(16,12), "S21154C11");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*)(S21154C13*), ABISELECT(56,32), "S21154C11");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*)(S21154C13*), ABISELECT(184,128), "S21154C11");
    check_base_class_offset(lv, (S21154C8*)(S21154C13*), ABISELECT(16,12), "S21154C11");
    check_base_class_offset(lv, (S20760C5_nt*)(S21154C13*), ABISELECT(192,132), "S21154C11");
    check_base_class_offset(lv, (S21154C13*), ABISELECT(16,12), "S21154C11");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*)(S21154C15*), ABISELECT(208,144), "S21154C11");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(224,156), "S21154C11");
    check_base_class_offset(lv, (S21154C4*)(S21154C15*), ABISELECT(208,144), "S21154C11");
    check_base_class_offset(lv, (S21154C15*), ABISELECT(208,144), "S21154C11");
    check_field_offset(lv, s21154c11f0, ABISELECT(64,36), "S21154C11.s21154c11f0");
    test_class_info(&lv, &cd_S21154C11);
    dp->~S21154C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C11(Test_S21154C11, "S21154C11", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN9S21154C11C1Ev();
extern void _ZN9S21154C11D2Ev();
Name_Map name_map_S21154C11[] = {
  NSPAIR(_ZN9S21154C11C1Ev),
  NSPAIR(_ZN9S21154C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21154C13;
extern VTBL_ENTRY _ZTI9S21154C13[];
extern  VTBL_ENTRY _ZTV9S21154C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C15;
extern VTBL_ENTRY _ZTI9S21154C15[];
extern  VTBL_ENTRY _ZTV9S21154C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C15[];
static Base_Class bases_S21154C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S21154C2,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21154C8,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21154C13,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(208,144), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21154C15,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21154C11[];
extern void _ZN9S21154C11D1Ev();
extern void _ZN9S21154C11D0Ev();
extern void ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S21154C11D1Ev,_ZThn32_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21154C11D0Ev,_ZThn32_N9S21154C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S21154C11D1Ev,_ZThn44_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S21154C11D0Ev,_ZThn44_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S21154C11D1Ev,_ZThn100_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S21154C11D0Ev,_ZThn100_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21154C11D1Ev,_ZThn132_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21154C11D0Ev,_ZThn132_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S21154C11D1Ev,_ZThn144_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S21154C11D0Ev,_ZThn144_N9S21154C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev)();
static  VTBL_ENTRY vtc_S21154C11[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&_ZN9S21154C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C11D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21154C11D1Ev,_ZThn32_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21154C11D0Ev,_ZThn32_N9S21154C11D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21154C11[];
extern void _ZN9S21154C13D1Ev();
extern void _ZN9S21154C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C13__9S21154C11[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&_ZN9S21154C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C13D0Ev,
};
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn32_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn32_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn88_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn88_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C8D1Ev,_ZThn32_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C8D0Ev,_ZThn32_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn168_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn168_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C89S21154C13__9S21154C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21154C13D1Ev,_ZThn32_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21154C13D0Ev,_ZThn32_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21154C13__9S21154C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C13__9S21154C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21154C13D1Ev,_ZThn88_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21154C13D0Ev,_ZThn88_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C13__9S21154C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C13__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C13__9S21154C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn176_N9S21154C13D1Ev,_ZThn120_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn176_N9S21154C13D0Ev,_ZThn120_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21154C13__9S21154C11[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C11[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C11[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__9S21154C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__9S21154C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__9S21154C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C11[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__9S21154C11[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void _ZN9S21154C15D1Ev();
extern void _ZN9S21154C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C15__9S21154C11[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&_ZN9S21154C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C15D0Ev,
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__9S21154C11[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__9S21154C11[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C15__9S21154C11[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C15__9S21154C11[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21154C15__9S21154C11[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
static  VTT_ENTRY vtt_S21154C11[] = {
  {&(_ZTV9S21154C11[9]),  9,71},
  {&(_tg__ZTV9S21154C13__9S21154C11[8]),  8,10},
  {&(_tg__ZTV8S21154C89S21154C13__9S21154C11[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C89S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C89S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C89S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C89S21154C13__9S21154C11[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C4__9S21154C13__9S21154C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C13__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C13__9S21154C11[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S21154C13__9S21154C11[3]),  3,5},
  {&(_ZTV9S21154C11[19]),  19,71},
  {&(_ZTV9S21154C11[28]),  28,71},
  {&(_ZTV9S21154C11[35]),  35,71},
  {&(_ZTV9S21154C11[45]),  45,71},
  {&(_ZTV9S21154C11[40]),  40,71},
  {&(_ZTV9S21154C11[51]),  51,71},
  {&(_ZTV9S21154C11[56]),  56,71},
  {&(_ZTV9S21154C11[64]),  64,71},
  {&(_ZTV9S21154C11[69]),  69,71},
  {&(_tg__ZTV8S21154C4__9S21154C11[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S21154C15__9S21154C11[5]),  5,7},
  {&(_tg__ZTV8S21154C49S21154C15__A1__9S21154C11[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C49S21154C15__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C49S21154C15__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__9S21154C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21154C15__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C15__9S21154C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21154C15__9S21154C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21154C11[];
extern  VTBL_ENTRY _ZTV9S21154C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C11[];
static VTBL_ENTRY alt_thunk_names223[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21154C13D0Ev,_ZThn120_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21154C13D0Ev,_ZThn88_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21154C13D0Ev,_ZThn32_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21154C13D1Ev,_ZThn120_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21154C13D1Ev,_ZThn88_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21154C13D1Ev,_ZThn32_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C8D0Ev,_ZThn32_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D0Ev,_ZThn88_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C8D1Ev,_ZThn32_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C8D1Ev,_ZThn88_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn32_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn32_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21154C11D0Ev,_ZThn144_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21154C11D1Ev,_ZThn144_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21154C11D0Ev,_ZThn132_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21154C11D0Ev,_ZThn100_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C11D0Ev,_ZThn44_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21154C11D1Ev,_ZThn132_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21154C11D1Ev,_ZThn100_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21154C11D1Ev,_ZThn44_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C11 = {  "S21154C11", // class name
  bases_S21154C11, 19,
  &(vtc_S21154C11[0]), // expected_vtbl_contents
  &(vtt_S21154C11[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI9S21154C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21154C11),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21154C11),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names223,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21154C1  : virtual S21154C2 , virtual S21154C7 , S21154C11 {
  virtual  ~S21154C1(); // _ZN8S21154C1D2Ev
  S21154C1(); // tgen
};
//SIG(1 S21154C1) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ BC12{ m} BC5 VBC9 BC13{ VBC9 VBC5 VBC4 BC8 VBC14{ vd m FL}} VBC15{ VBC3 BC4 VBC9 FC13} vd Fi} vd}


 S21154C1 ::~S21154C1(){ note_dtor("S21154C1", this);}
S21154C1 ::S21154C1(){ note_ctor("S21154C1", this);} // tgen

static void Test_S21154C1()
{
  extern Class_Descriptor cd_S21154C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(37,93)];
    init_test(&cd_S21154C1, buf);
    S21154C1 *dp, &lv = *(dp=new (buf) S21154C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,368), "sizeof(S21154C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21154C1)");
    /*is_ambiguous_... S21154C1::S21154C2 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21154C2*), ABISELECT(112,56), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21154C4*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*)(S21154C7*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C2*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C15*), ABISELECT(112,56), "S21154C1");
    check_base_class_offset(lv, (S20760C13*)(S21154C4*)(S21154C15*), ABISELECT(112,56), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*), ABISELECT(144,84), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*), ABISELECT(200,128), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C6*), ABISELECT(200,128), "S21154C1");
    /*is_ambiguous_... S21154C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C13*)(S21154C11*), ABISELECT(200,128), "S21154C1");
    check_base_class_offset(lv, (S20760C9*)(S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(200,128), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C4 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C4*), ABISELECT(160,96), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C2 */ AMB_check_base_class_offset(lv, (S21154C4*)(S21154C2*), ABISELECT(144,84), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*)(S21154C7*), ABISELECT(144,84), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C13*)(S21154C11*), ABISELECT(144,84), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C2*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(144,84), "S21154C1");
    /*is_ambiguous_... S21154C1::S21154C2 */ AMB_check_base_class_offset(lv, (S21154C2*), ABISELECT(80,40), "S21154C1");
    /*is_ambiguous_... S21154C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C7*), ABISELECT(224,140), "S21154C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*)(S21154C7*), ABISELECT(272,168), "S21154C1");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*)(S21154C7*), ABISELECT(240,152), "S21154C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*)(S21154C7*), ABISELECT(280,172), "S21154C1");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*)(S21154C7*), ABISELECT(288,176), "S21154C1");
    /*is_ambiguous_... S21154C8::S21154C6 */ AMB_check_base_class_offset(lv, (S21154C6*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(288,176), "S21154C1");
    check_base_class_offset(lv, (S21154C8*)(S21154C7*), ABISELECT(240,152), "S21154C1");
    check_base_class_offset(lv, (S21154C7*), ABISELECT(224,140), "S21154C1");
    check_base_class_offset(lv, (S4228C37*)(S21154C11*), 0, "S21154C1");
    /*is_ambiguous_... S21154C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C11*), 0, "S21154C1");
    /*is_ambiguous_... S21154C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21154C11*), ABISELECT(296,180), "S21154C1");
    /*is_ambiguous_... S21154C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21154C13*)(S21154C11*), ABISELECT(296,180), "S21154C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C15*), ABISELECT(296,180), "S21154C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(48,28), "S21154C1");
    check_base_class_offset(lv, (S21154C2*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(16,12), "S21154C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(56,32), "S21154C1");
    check_base_class_offset(lv, (S21154C8*)(S21154C13*)(S21154C11*), ABISELECT(16,12), "S21154C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21154C13*)(S21154C11*), ABISELECT(304,184), "S21154C1");
    check_base_class_offset(lv, (S21154C13*)(S21154C11*), ABISELECT(16,12), "S21154C1");
    /*is_ambiguous_... S21154C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21154C4*)(S21154C15*), ABISELECT(320,196), "S21154C1");
    check_base_class_offset(lv, (S21154C6*)(S21154C4*)(S21154C15*), ABISELECT(336,208), "S21154C1");
    check_base_class_offset(lv, (S21154C4*)(S21154C15*), ABISELECT(320,196), "S21154C1");
    check_base_class_offset(lv, (S21154C15*)(S21154C11*), ABISELECT(320,196), "S21154C1");
    check_base_class_offset(lv, (S21154C11*), 0, "S21154C1");
    test_class_info(&lv, &cd_S21154C1);
    dp->~S21154C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21154C1(Test_S21154C1, "S21154C1", ABISELECT(576,368));

#else // __cplusplus

extern void _ZN8S21154C1C1Ev();
extern void _ZN8S21154C1D2Ev();
Name_Map name_map_S21154C1[] = {
  NSPAIR(_ZN8S21154C1C1Ev),
  NSPAIR(_ZN8S21154C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S21154C7;
extern VTBL_ENTRY _ZTI8S21154C7[];
extern  VTBL_ENTRY _ZTV8S21154C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21154C2;
extern VTBL_ENTRY _ZTI8S21154C2[];
extern  VTBL_ENTRY _ZTV8S21154C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21154C8;
extern VTBL_ENTRY _ZTI8S21154C8[];
extern  VTBL_ENTRY _ZTV8S21154C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C8[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21154C13;
extern VTBL_ENTRY _ZTI9S21154C13[];
extern  VTBL_ENTRY _ZTV9S21154C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21154C6;
extern VTBL_ENTRY _ZTI8S21154C6[];
extern  VTBL_ENTRY _ZTV8S21154C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C6[];
extern Class_Descriptor cd_S21154C4;
extern VTBL_ENTRY _ZTI8S21154C4[];
extern  VTBL_ENTRY _ZTV8S21154C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C4[];
extern Class_Descriptor cd_S21154C15;
extern VTBL_ENTRY _ZTI9S21154C15[];
extern  VTBL_ENTRY _ZTV9S21154C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C15[];
extern Class_Descriptor cd_S21154C11;
extern VTBL_ENTRY _ZTI9S21154C11[];
extern  VTBL_ENTRY _ZTV9S21154C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21154C11[];
static Base_Class bases_S21154C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(112,56), //bcp->offset
    35, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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_S20760C9,    ABISELECT(200,128), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21154C6,    ABISELECT(160,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(144,84), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21154C2,    ABISELECT(80,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(272,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
    11, //immediately_derived
  0, 0},
  {&cd_S21154C2,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(280,172), //bcp->offset
    74, //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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(288,176), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21154C8,    ABISELECT(240,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21154C7,    ABISELECT(224,140), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(296,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
    21, //immediately_derived
  0, 1},
  {&cd_S4161C4_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
    19, //immediately_derived
  0, 0},
  {&cd_S21154C2,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21154C8,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(304,184), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21154C13,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(320,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21154C6,    ABISELECT(336,208), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21154C4,    ABISELECT(320,196), //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
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21154C15,    ABISELECT(320,196), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21154C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21154C1[];
extern void _ZN8S21154C1D1Ev();
extern void _ZN8S21154C1D0Ev();
extern void ABISELECT(_ZThn16_N8S21154C1D1Ev,_ZThn12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C1D0Ev,_ZThn12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C1D1Ev,_ZThn32_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C1D0Ev,_ZThn32_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S21154C1D1Ev,_ZThn40_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S21154C1D0Ev,_ZThn40_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21154C1D1Ev,_ZThn56_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21154C1D0Ev,_ZThn56_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C1D1Ev,_ZTv0_n20_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21154C1D1Ev,_ZThn84_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C1D0Ev,_ZTv0_n20_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21154C1D0Ev,_ZThn84_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21154C1D1Ev,_ZTvn12_n20_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C1D0Ev,_ZTvn12_n20_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S21154C1D1Ev,_ZThn128_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S21154C1D0Ev,_ZThn128_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21154C1D1Ev,_ZTv0_n28_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21154C1D1Ev,_ZThn140_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21154C1D0Ev,_ZTv0_n28_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21154C1D0Ev,_ZThn140_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21154C1D1Ev,_ZTvn12_n28_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21154C1D0Ev,_ZTvn12_n28_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21154C1D1Ev,_ZTvn32_n28_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21154C1D0Ev,_ZTvn32_n28_N8S21154C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21154C1D1Ev,_ZTv0_n16_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S21154C1D1Ev,_ZThn176_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C1D0Ev,_ZTv0_n16_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S21154C1D0Ev,_ZThn176_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S21154C1D1Ev,_ZThn184_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S21154C1D0Ev,_ZThn184_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21154C1D1Ev,_ZThn196_N8S21154C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21154C1D0Ev,_ZThn196_N8S21154C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S21154C1D1Ev,_ZTvn12_n24_N8S21154C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21154C1D0Ev,_ZTvn12_n24_N8S21154C1D0Ev)();
static  VTBL_ENTRY vtc_S21154C1[] = {
  ABISELECT(224,140),
  ABISELECT(80,40),
  ABISELECT(320,196),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&_ZN8S21154C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C1D0Ev,
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C1D1Ev,_ZThn12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C1D0Ev,_ZThn12_N8S21154C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C1D1Ev,_ZThn32_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21154C1D0Ev,_ZThn32_N8S21154C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C1D1Ev,_ZTv0_n20_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C1D0Ev,_ZTv0_n20_N8S21154C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C1D1Ev,_ZTvn12_n20_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C1D0Ev,_ZTvn12_n20_N8S21154C1D0Ev),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21154C1D1Ev,_ZTv0_n28_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21154C1D0Ev,_ZTv0_n28_N8S21154C1D0Ev),
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21154C1D1Ev,_ZTvn12_n28_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21154C1D0Ev,_ZTvn12_n28_N8S21154C1D0Ev),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21154C1D1Ev,_ZTvn32_n28_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21154C1D0Ev,_ZTvn32_n28_N8S21154C1D0Ev),
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C1D1Ev,_ZTv0_n16_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C1D0Ev,_ZTv0_n16_N8S21154C1D0Ev),
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev),
  ABISELECT(-320,-196),
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI8S21154C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21154C1D1Ev,_ZTvn12_n24_N8S21154C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21154C1D0Ev,_ZTvn12_n24_N8S21154C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21154C1[];
extern void _ZN9S21154C11D1Ev();
extern void _ZN9S21154C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C11__8S21154C1[] = {
  ABISELECT(320,196),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&_ZN9S21154C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C11D0Ev,
};
extern void _ZN9S21154C13D1Ev();
extern void _ZN9S21154C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&_ZN9S21154C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C13D0Ev,
};
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn72_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn72_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S21154C2D1Ev,_ZThn116_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S21154C2D0Ev,_ZThn116_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn72_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn72_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21154C8D1Ev,_ZThn164_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21154C8D0Ev,_ZThn164_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn72_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn72_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D1Ev,_ZTvn12_n20_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C13D0Ev,_ZTvn12_n20_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn272_N9S21154C13D1Ev,_ZThn164_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn272_N9S21154C13D0Ev,_ZThn164_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S21154C13D1Ev,_ZThn172_N9S21154C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S21154C13D0Ev,_ZThn172_N9S21154C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21154C139S21154C11__8S21154C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S21154C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21154C13__9S21154C11__8S21154C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D1Ev,_ZThn12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C11D0Ev,_ZThn12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21154C11__8S21154C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S21154C11D1Ev,_ZThn84_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S21154C11D0Ev,_ZThn84_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__9S21154C11__8S21154C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C11__8S21154C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C11__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D1Ev,_ZTvn12_n20_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21154C11D0Ev,_ZTvn12_n20_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S21154C11D1Ev,_ZThn176_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S21154C11D0Ev,_ZThn176_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__9S21154C11__8S21154C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn304_N9S21154C11D1Ev,_ZThn184_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn304_N9S21154C11D0Ev,_ZThn184_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__9S21154C11__8S21154C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S21154C11D1Ev,_ZThn196_N9S21154C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S21154C11D0Ev,_ZThn196_N9S21154C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21154C15__9S21154C11__8S21154C1[] = {
  ABISELECT(-320,-196),
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11__8S21154C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI9S21154C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D1Ev,_ZTvn12_n24_N9S21154C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21154C11D0Ev,_ZTvn12_n24_N9S21154C11D0Ev),
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C2__8S21154C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C2__8S21154C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C2__8S21154C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C2__8S21154C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C4__8S21154C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C4__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C4__8S21154C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void _ZN8S21154C7D1Ev();
extern void _ZN8S21154C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C7__8S21154C1[] = {
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&_ZN8S21154C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C7D0Ev,
};
extern void _ZN8S21154C8D1Ev();
extern void _ZN8S21154C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&_ZN8S21154C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C8D0Ev,
};
extern void _ZN8S21154C2D1Ev();
extern void _ZN8S21154C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&_ZN8S21154C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D1Ev,_ZTvn12_n20_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C2D0Ev,_ZTvn12_n20_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C28S21154C88S21154C7__A1__8S21154C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21154C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D1Ev,_ZTvn12_n20_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C8D0Ev,_ZTvn12_n20_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C88S21154C7__8S21154C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-88,-48),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21154C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C8__8S21154C7__8S21154C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D1Ev,_ZThn12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C7D0Ev,_ZThn12_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C7__8S21154C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C4__8S21154C7__8S21154C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D1Ev,_ZTv0_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21154C7D0Ev,_ZTv0_n20_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__8S21154C7__8S21154C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D1Ev,_ZTvn12_n20_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21154C7D0Ev,_ZTvn12_n20_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S21154C7__8S21154C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D1Ev,_ZTv0_n12_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C7D0Ev,_ZTv0_n12_N8S21154C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C7__8S21154C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21154C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev),
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C6__A1__8S21154C1[] = {
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C6__A1__8S21154C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void _ZN9S21154C15D1Ev();
extern void _ZN9S21154C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21154C15__8S21154C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&_ZN9S21154C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21154C15D0Ev,
};
extern void _ZN8S21154C4D1Ev();
extern void _ZN8S21154C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(-208,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&_ZN8S21154C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C4D0Ev,
};
extern void _ZN8S21154C6D1Ev();
extern void _ZN8S21154C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C49S21154C15__A2__8S21154C1[] = {
  ABISELECT(-136,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&_ZN8S21154C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21154C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__8S21154C1[] = {
  ABISELECT(136,80),
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI8S21154C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(208,140),
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C6__8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D1Ev,_ZThn12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21154C4D0Ev,_ZThn12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__8S21154C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI8S21154C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21154C15__8S21154C1[] = {
  ABISELECT(208,140),
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21154C68S21154C4__9S21154C15__8S21154C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D1Ev,_ZThn12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21154C15D0Ev,_ZThn12_N9S21154C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21154C15__8S21154C1[] = {
  ABISELECT(120,68),
  ABISELECT(120,68),
  (VTBL_ENTRY)&(_ZTI9S21154C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D1Ev,_ZTv0_n12_N9S21154C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21154C15D0Ev,_ZTv0_n12_N9S21154C15D0Ev),
};
static  VTT_ENTRY vtt_S21154C1[] = {
  {&(_ZTV8S21154C1[11]),  11,102},
  {&(_tg__ZTV9S21154C11__8S21154C1[9]),  9,11},
  {&(_tg__ZTV9S21154C139S21154C11__8S21154C1[8]),  8,10},
  {&(_tg__ZTV8S21154C89S21154C139S21154C11__A1__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C89S21154C139S21154C11__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C89S21154C139S21154C11__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C89S21154C139S21154C11__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C89S21154C139S21154C11__A1__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__9S21154C139S21154C11__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C139S21154C11__8S21154C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S21154C139S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S21154C13__9S21154C11__8S21154C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__9S21154C11__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__9S21154C11__8S21154C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__9S21154C11__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S21154C15__9S21154C11__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C68S21154C49S21154C15__A2__9S21154C11__8S21154C1[3]),  3,5},
  {&(_ZTV8S21154C1[33]),  33,102},
  {&(_ZTV8S21154C1[38]),  38,102},
  {&(_ZTV8S21154C1[45]),  45,102},
  {&(_ZTV8S21154C1[50]),  50,102},
  {&(_ZTV8S21154C1[55]),  55,102},
  {&(_ZTV8S21154C1[64]),  64,102},
  {&(_ZTV8S21154C1[72]),  72,102},
  {&(_ZTV8S21154C1[76]),  76,102},
  {&(_ZTV8S21154C1[82]),  82,102},
  {&(_ZTV8S21154C1[21]),  21,102},
  {&(_ZTV8S21154C1[87]),  87,102},
  {&(_ZTV8S21154C1[95]),  95,102},
  {&(_ZTV8S21154C1[100]),  100,102},
  {&(_tg__ZTV8S21154C2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C2__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C4__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C7__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C88S21154C7__8S21154C1[6]),  6,8},
  {&(_tg__ZTV8S21154C28S21154C88S21154C7__A1__8S21154C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21154C28S21154C88S21154C7__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C28S21154C88S21154C7__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C28S21154C88S21154C7__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C88S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C88S21154C7__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C88S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C88S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C88S21154C7__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C8__8S21154C7__8S21154C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C4__8S21154C7__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C68S21154C4__8S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S21154C7__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__A1__8S21154C7__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C6__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C6__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S21154C15__8S21154C1[5]),  5,7},
  {&(_tg__ZTV8S21154C49S21154C15__A1__8S21154C1[4]),  4,6},
  {&(_tg__ZTV8S21154C68S21154C49S21154C15__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21154C68S21154C49S21154C15__A2__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21154C49S21154C15__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C6__8S21154C49S21154C15__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21154C49S21154C15__A1__8S21154C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21154C15__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S21154C68S21154C4__9S21154C15__8S21154C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21154C15__8S21154C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21154C1[];
extern  VTBL_ENTRY _ZTV8S21154C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21154C1[];
static VTBL_ENTRY alt_thunk_names224[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D0Ev,_ZTv0_n16_N8S21154C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D0Ev,_ZThn36_N8S21154C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C7D1Ev,_ZTv0_n16_N8S21154C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C7D1Ev,_ZThn36_N8S21154C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D0Ev,_ZTv0_n12_N8S21154C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D0Ev,_ZThn44_N8S21154C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C4D1Ev,_ZTv0_n12_N8S21154C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21154C4D1Ev,_ZThn44_N8S21154C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D0Ev,_ZTv0_n12_N8S21154C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D0Ev,_ZThn32_N8S21154C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C6D1Ev,_ZTv0_n12_N8S21154C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21154C6D1Ev,_ZThn32_N8S21154C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D0Ev,_ZTv0_n24_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21154C11D0Ev,_ZThn196_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21154C11D1Ev,_ZTv0_n24_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21154C11D1Ev,_ZThn196_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D0Ev,_ZTv0_n16_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C11D0Ev,_ZThn176_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C11D1Ev,_ZTv0_n16_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C11D1Ev,_ZThn176_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D0Ev,_ZTv0_n20_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21154C11D0Ev,_ZThn84_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C11D1Ev,_ZTv0_n20_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21154C11D1Ev,_ZThn84_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D0Ev,_ZTv0_n12_N9S21154C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21154C11D0Ev,_ZThn184_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21154C11D0Ev,_ZThn56_N9S21154C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21154C11D0Ev,_ZThn128_N9S21154C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C11D1Ev,_ZTv0_n12_N9S21154C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21154C11D1Ev,_ZThn184_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21154C11D1Ev,_ZThn56_N9S21154C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21154C11D1Ev,_ZThn128_N9S21154C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D0Ev,_ZTv0_n16_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21154C13D0Ev,_ZThn164_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21154C13D1Ev,_ZTv0_n16_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21154C13D1Ev,_ZThn164_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D0Ev,_ZTv0_n20_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D0Ev,_ZThn72_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21154C13D1Ev,_ZTv0_n20_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21154C13D1Ev,_ZThn72_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D0Ev,_ZTv0_n12_N9S21154C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C13D0Ev,_ZThn172_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C13D0Ev,_ZThn44_N9S21154C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C13D0Ev,_ZThn116_N9S21154C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21154C13D1Ev,_ZTv0_n12_N9S21154C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21154C13D1Ev,_ZThn172_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21154C13D1Ev,_ZThn44_N9S21154C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21154C13D1Ev,_ZThn116_N9S21154C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D0Ev,_ZTv0_n16_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D0Ev,_ZThn24_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C8D0Ev,_ZThn164_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C8D1Ev,_ZTv0_n16_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21154C8D1Ev,_ZThn24_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21154C8D1Ev,_ZThn164_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D0Ev,_ZTv0_n20_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D0Ev,_ZThn72_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C8D1Ev,_ZTv0_n20_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C8D1Ev,_ZThn72_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D0Ev,_ZTv0_n12_N8S21154C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C8D0Ev,_ZThn116_N8S21154C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C8D0Ev,_ZThn44_N8S21154C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C8D1Ev,_ZTv0_n12_N8S21154C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C8D1Ev,_ZThn116_N8S21154C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C8D1Ev,_ZThn44_N8S21154C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D0Ev,_ZTv0_n20_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D0Ev,_ZThn72_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C2D1Ev,_ZTv0_n20_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21154C2D1Ev,_ZThn72_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D0Ev,_ZTv0_n12_N8S21154C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D0Ev,_ZThn88_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D0Ev,_ZThn16_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C2D0Ev,_ZThn116_N8S21154C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C2D0Ev,_ZThn44_N8S21154C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C2D1Ev,_ZTv0_n12_N8S21154C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21154C2D1Ev,_ZThn88_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21154C2D1Ev,_ZThn16_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21154C2D1Ev,_ZThn116_N8S21154C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21154C2D1Ev,_ZThn44_N8S21154C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C1D0Ev,_ZTv0_n16_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C1D0Ev,_ZThn176_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21154C1D1Ev,_ZTv0_n16_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21154C1D1Ev,_ZThn176_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21154C1D0Ev,_ZTv0_n28_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21154C1D0Ev,_ZThn140_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21154C1D1Ev,_ZTv0_n28_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21154C1D1Ev,_ZThn140_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C1D0Ev,_ZTv0_n20_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21154C1D0Ev,_ZThn84_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21154C1D1Ev,_ZTv0_n20_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21154C1D1Ev,_ZThn84_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C1D0Ev,_ZTv0_n12_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21154C1D0Ev,_ZThn184_N8S21154C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21154C1D0Ev,_ZThn128_N8S21154C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21154C1D0Ev,_ZThn56_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21154C1D1Ev,_ZTv0_n12_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21154C1D1Ev,_ZThn184_N8S21154C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21154C1D1Ev,_ZThn128_N8S21154C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21154C1D1Ev,_ZThn56_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21154C1D0Ev,_ZTv0_n24_N8S21154C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21154C1D0Ev,_ZThn196_N8S21154C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C1D0Ev,_ZThn40_N8S21154C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21154C1D1Ev,_ZTv0_n24_N8S21154C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21154C1D1Ev,_ZThn196_N8S21154C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21154C1D1Ev,_ZThn40_N8S21154C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21154C1 = {  "S21154C1", // class name
  bases_S21154C1, 27,
  &(vtc_S21154C1[0]), // expected_vtbl_contents
  &(vtt_S21154C1[0]), // expected_vtt_contents
  ABISELECT(576,368), // object size
  NSPAIRA(_ZTI8S21154C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21154C1),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21154C1),83, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names224,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C6  : virtual S20760C9 {
  virtual  ~S21153C6(); // _ZN8S21153C6D2Ev
  S21153C6(); // tgen
};
//SIG(-1 S21153C6) C1{ VBC2{ vd m FL} vd}


 S21153C6 ::~S21153C6(){ note_dtor("S21153C6", this);}
S21153C6 ::S21153C6(){ note_ctor("S21153C6", this);} // tgen

static void Test_S21153C6()
{
  extern Class_Descriptor cd_S21153C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21153C6, buf);
    S21153C6 *dp, &lv = *(dp=new (buf) S21153C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21153C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21153C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21153C6");
    test_class_info(&lv, &cd_S21153C6);
    dp->~S21153C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C6(Test_S21153C6, "S21153C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21153C6C1Ev();
extern void _ZN8S21153C6D2Ev();
Name_Map name_map_S21153C6[] = {
  NSPAIR(_ZN8S21153C6C1Ev),
  NSPAIR(_ZN8S21153C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21153C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C6[];
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S21153C6D1Ev,_ZThn4_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S21153C6D0Ev,_ZThn4_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C6[];
static  VTT_ENTRY vtt_S21153C6[] = {
  {&(_ZTV8S21153C6[3]),  3,10},
  {&(_ZTV8S21153C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
static VTBL_ENTRY alt_thunk_names225[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21153C6D0Ev,_ZThn4_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21153C6D1Ev,_ZThn4_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C6 = {  "S21153C6", // class name
  bases_S21153C6, 1,
  &(vtc_S21153C6[0]), // expected_vtbl_contents
  &(vtt_S21153C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21153C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21153C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names225,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C4  : S20760C9 , virtual S20760C13 , S21153C6 {
  ::S20760C13 s21153c4f0;
  ~S21153C4(); // tgen
  S21153C4(); // tgen
};
//SIG(-1 S21153C4) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21153C4 ::~S21153C4(){ note_dtor("S21153C4", this);} // tgen
S21153C4 ::S21153C4(){ note_ctor("S21153C4", this);} // tgen

static void Test_S21153C4()
{
  extern Class_Descriptor cd_S21153C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21153C4, buf);
    S21153C4 *dp, &lv = *(dp=new (buf) S21153C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21153C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21153C4)");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21153C4");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21153C4");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(88,72), "S21153C4");
    check_base_class_offset(lv, (S21153C6*), ABISELECT(16,12), "S21153C4");
    check_field_offset(lv, s21153c4f0, ABISELECT(24,16), "S21153C4.s21153c4f0");
    test_class_info(&lv, &cd_S21153C4);
    dp->~S21153C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C4(Test_S21153C4, "S21153C4", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21153C4C1Ev();
extern void _ZN8S21153C4D1Ev();
Name_Map name_map_S21153C4[] = {
  NSPAIR(_ZN8S21153C4C1Ev),
  NSPAIR(_ZN8S21153C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
static Base_Class bases_S21153C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C4[];
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn88_N8S21153C4D1Ev,_ZThn72_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn88_N8S21153C4D0Ev,_ZThn72_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C4[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C4[];
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S21153C6D1Ev,_ZThn60_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S21153C6D0Ev,_ZThn60_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__8S21153C4[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C4[] = {
  {&(_ZTV8S21153C4[4]),  4,21},
  {&(_tg__ZTV8S21153C6__8S21153C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__8S21153C4[3]),  3,5},
  {&(_ZTV8S21153C4[14]),  14,21},
  {&(_ZTV8S21153C4[9]),  9,21},
  {&(_ZTV8S21153C4[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
static VTBL_ENTRY alt_thunk_names226[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C6D0Ev,_ZThn60_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C6D1Ev,_ZThn60_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21153C4D0Ev,_ZThn72_N8S21153C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21153C4D1Ev,_ZThn72_N8S21153C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C4 = {  "S21153C4", // class name
  bases_S21153C4, 4,
  &(vtc_S21153C4[0]), // expected_vtbl_contents
  &(vtt_S21153C4[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21153C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21153C4),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C4),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names226,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C2  : virtual S20760C13 , virtual S21153C4 {
  long double s21153c2f0;
  ~S21153C2(); // tgen
  S21153C2(); // tgen
};
//SIG(-1 S21153C2) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21153C2 ::~S21153C2(){ note_dtor("S21153C2", this);} // tgen
S21153C2 ::S21153C2(){ note_ctor("S21153C2", this);} // tgen

static void Test_S21153C2()
{
  extern Class_Descriptor cd_S21153C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21153C2, buf);
    S21153C2 *dp, &lv = *(dp=new (buf) S21153C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21153C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C2)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21153C2");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(32,16), "S21153C2");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(64,44), "S21153C2");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(120,88), "S21153C2");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(80,56), "S21153C2");
    check_base_class_offset(lv, (S21153C4*), ABISELECT(64,44), "S21153C2");
    check_field_offset(lv, s21153c2f0, ABISELECT(16,4), "S21153C2.s21153c2f0");
    test_class_info(&lv, &cd_S21153C2);
    dp->~S21153C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C2(Test_S21153C2, "S21153C2", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S21153C2C1Ev();
extern void _ZN8S21153C2D1Ev();
Name_Map name_map_S21153C2[] = {
  NSPAIR(_ZN8S21153C2C1Ev),
  NSPAIR(_ZN8S21153C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
static Base_Class bases_S21153C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C2[];
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C2[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C2[];
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C2[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C2[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C2[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C2[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C2[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
static  VTT_ENTRY vtt_S21153C2[] = {
  {&(_ZTV8S21153C2[5]),  5,29},
  {&(_ZTV8S21153C2[10]),  10,29},
  {&(_ZTV8S21153C2[17]),  17,29},
  {&(_ZTV8S21153C2[22]),  22,29},
  {&(_ZTV8S21153C2[27]),  27,29},
  {&(_tg__ZTV8S21153C4__8S21153C2[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
static VTBL_ENTRY alt_thunk_names227[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C2 = {  "S21153C2", // class name
  bases_S21153C2, 5,
  &(vtc_S21153C2[0]), // expected_vtbl_contents
  &(vtt_S21153C2[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S21153C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21153C2),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C2),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names227,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C8  : S4161C4_nt , S21153C2 , S20760C22_nt , virtual S21153C6 {
  virtual  ~S21153C8(); // _ZN8S21153C8D2Ev
  S21153C8(); // tgen
};
//SIG(-1 S21153C8) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S21153C8 ::~S21153C8(){ note_dtor("S21153C8", this);}
S21153C8 ::S21153C8(){ note_ctor("S21153C8", this);} // tgen

static void Test_S21153C8()
{
  extern Class_Descriptor cd_S21153C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S21153C8, buf);
    S21153C8 *dp, &lv = *(dp=new (buf) S21153C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S21153C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C8)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S21153C8");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*), ABISELECT(48,24), "S21153C8");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(48,24), "S21153C8");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(80,52), "S21153C8");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(136,96), "S21153C8");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(136,96), "S21153C8");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(96,64), "S21153C8");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*), ABISELECT(80,52), "S21153C8");
    check_base_class_offset(lv, (S21153C2*), 0, "S21153C8");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S21153C8");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*), ABISELECT(152,108), "S21153C8");
    test_class_info(&lv, &cd_S21153C8);
    dp->~S21153C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C8(Test_S21153C8, "S21153C8", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S21153C8C1Ev();
extern void _ZN8S21153C8D2Ev();
Name_Map name_map_S21153C8[] = {
  NSPAIR(_ZN8S21153C8C1Ev),
  NSPAIR(_ZN8S21153C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
static Base_Class bases_S21153C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21153C2,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21153C6,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C8[];
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
extern void ABISELECT(_ZThn40_N8S21153C8D1Ev,_ZThn20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C8D0Ev,_ZThn20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C8[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21153C8D1Ev,_ZThn20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S21153C8D0Ev,_ZThn20_N8S21153C8D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C8[];
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C2__8S21153C8[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C2__8S21153C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C2__8S21153C8[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C8[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C2__8S21153C8[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C8[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C8[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C8[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C8[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C8[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__8S21153C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C8[] = {
  {&(_ZTV8S21153C8[6]),  6,40},
  {&(_tg__ZTV8S21153C2__8S21153C8[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C2__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C2__8S21153C8[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C2__8S21153C8[3]),  3,5},
  {&(_ZTV8S21153C8[15]),  15,40},
  {&(_ZTV8S21153C8[22]),  22,40},
  {&(_ZTV8S21153C8[27]),  27,40},
  {&(_ZTV8S21153C8[32]),  32,40},
  {&(_ZTV8S21153C8[38]),  38,40},
  {&(_tg__ZTV8S21153C4__8S21153C8[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__8S21153C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
static VTBL_ENTRY alt_thunk_names228[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C8 = {  "S21153C8", // class name
  bases_S21153C8, 9,
  &(vtc_S21153C8[0]), // expected_vtbl_contents
  &(vtt_S21153C8[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S21153C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21153C8),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C8),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names228,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C7  : S20760C9 , S21153C8 {
  virtual  ~S21153C7(); // _ZN8S21153C7D2Ev
  S21153C7(); // tgen
};
//SIG(-1 S21153C7) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S21153C7 ::~S21153C7(){ note_dtor("S21153C7", this);}
S21153C7 ::S21153C7(){ note_ctor("S21153C7", this);} // tgen

static void Test_S21153C7()
{
  extern Class_Descriptor cd_S21153C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21153C7, buf);
    S21153C7 *dp, &lv = *(dp=new (buf) S21153C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21153C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C7)");
    /*is_ambiguous_... S21153C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21153C7");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*), ABISELECT(48,28), "S21153C7");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*), ABISELECT(64,36), "S21153C7");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(64,36), "S21153C7");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(96,64), "S21153C7");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(152,108), "S21153C7");
    /*is_ambiguous_... S21153C7::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(152,108), "S21153C7");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(112,76), "S21153C7");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*), ABISELECT(96,64), "S21153C7");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*), ABISELECT(16,12), "S21153C7");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*), ABISELECT(56,32), "S21153C7");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*), ABISELECT(168,120), "S21153C7");
    check_base_class_offset(lv, (S21153C8*), ABISELECT(16,12), "S21153C7");
    test_class_info(&lv, &cd_S21153C7);
    dp->~S21153C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C7(Test_S21153C7, "S21153C7", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S21153C7C1Ev();
extern void _ZN8S21153C7D2Ev();
Name_Map name_map_S21153C7[] = {
  NSPAIR(_ZN8S21153C7C1Ev),
  NSPAIR(_ZN8S21153C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
static Base_Class bases_S21153C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21153C2,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21153C8,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S21153C7[];
extern void _ZN8S21153C7D1Ev();
extern void _ZN8S21153C7D0Ev();
extern void ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C7D1Ev,_ZThn32_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C7D0Ev,_ZThn32_N8S21153C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn96_N8S21153C7D1Ev,_ZThn64_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn96_N8S21153C7D0Ev,_ZThn64_N8S21153C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn152_N8S21153C7D1Ev,_ZThn108_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn152_N8S21153C7D0Ev,_ZThn108_N8S21153C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn168_N8S21153C7D1Ev,_ZThn120_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn168_N8S21153C7D0Ev,_ZThn120_N8S21153C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C7[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&_ZN8S21153C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C7D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C7D1Ev,_ZThn32_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C7D0Ev,_ZThn32_N8S21153C7D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C7[];
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C8__8S21153C7[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C8__8S21153C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C8__8S21153C7[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C8__8S21153C7[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C8__8S21153C7[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C8__8S21153C7[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C8__8S21153C7[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C7[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C7[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C7[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C7[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C7[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C7[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C7[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__8S21153C7[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C7[] = {
  {&(_ZTV8S21153C7[6]),  6,48},
  {&(_tg__ZTV8S21153C8__8S21153C7[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C8__8S21153C7[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C8__8S21153C7[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C8__8S21153C7[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C8__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C8__8S21153C7[4]),  4,6},
  {&(_ZTV8S21153C7[14]),  14,48},
  {&(_ZTV8S21153C7[23]),  23,48},
  {&(_ZTV8S21153C7[30]),  30,48},
  {&(_ZTV8S21153C7[35]),  35,48},
  {&(_ZTV8S21153C7[40]),  40,48},
  {&(_ZTV8S21153C7[46]),  46,48},
  {&(_tg__ZTV8S21153C4__8S21153C7[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__8S21153C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C7[];
extern  VTBL_ENTRY _ZTV8S21153C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C7[];
static VTBL_ENTRY alt_thunk_names229[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D0Ev,_ZThn108_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C8D1Ev,_ZThn108_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn52_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn52_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn96_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn96_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn52_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn52_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn96_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D0Ev,_ZThn24_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn96_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C2D1Ev,_ZThn24_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C7D0Ev,_ZThn120_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C7D1Ev,_ZThn120_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C7D0Ev,_ZThn64_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C7D1Ev,_ZThn64_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C7D0Ev,_ZThn108_N8S21153C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21153C7D1Ev,_ZThn108_N8S21153C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C7 = {  "S21153C7", // class name
  bases_S21153C7, 11,
  &(vtc_S21153C7[0]), // expected_vtbl_contents
  &(vtt_S21153C7[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S21153C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21153C7),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C7),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names229,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C13  : virtual S4161C4_nt , virtual S20760C9 , virtual S21153C4 , S21153C8 , virtual S20759C5_nt {
  ~S21153C13(); // tgen
  S21153C13(); // tgen
};
//SIG(-1 S21153C13) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S21153C13 ::~S21153C13(){ note_dtor("S21153C13", this);} // tgen
S21153C13 ::S21153C13(){ note_ctor("S21153C13", this);} // tgen

static void Test_S21153C13()
{
  extern Class_Descriptor cd_S21153C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S21153C13, buf);
    S21153C13 *dp, &lv = *(dp=new (buf) S21153C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S21153C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C13)");
    /*is_ambiguous_... S21153C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S21153C13");
    /*is_ambiguous_... S21153C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S21153C13");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(56,28), "S21153C13");
    /*is_ambiguous_... S21153C13::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(56,28), "S21153C13");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(72,40), "S21153C13");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(128,84), "S21153C13");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*), ABISELECT(128,84), "S21153C13");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(88,52), "S21153C13");
    check_base_class_offset(lv, (S21153C4*), ABISELECT(72,40), "S21153C13");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*), ABISELECT(72,40), "S21153C13");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*), ABISELECT(32,16), "S21153C13");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*), 0, "S21153C13");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*), ABISELECT(40,20), "S21153C13");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*), ABISELECT(160,112), "S21153C13");
    check_base_class_offset(lv, (S21153C8*), 0, "S21153C13");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S21153C13");
    test_class_info(&lv, &cd_S21153C13);
    dp->~S21153C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C13(Test_S21153C13, "S21153C13", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN9S21153C13C1Ev();
extern void _ZN9S21153C13D1Ev();
Name_Map name_map_S21153C13[] = {
  NSPAIR(_ZN9S21153C13C1Ev),
  NSPAIR(_ZN9S21153C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21153C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S21153C2,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21153C8,    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_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21153C13[];
extern void _ZN9S21153C13D1Ev();
extern void _ZN9S21153C13D0Ev();
extern void ABISELECT(_ZThn40_N9S21153C13D1Ev,_ZThn20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S21153C13D0Ev,_ZThn20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S21153C13D1Ev,_ZThn28_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S21153C13D0Ev,_ZThn28_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn72_N9S21153C13D1Ev,_ZThn40_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn72_N9S21153C13D0Ev,_ZThn40_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn84_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn84_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn160_N9S21153C13D1Ev,_ZThn112_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn160_N9S21153C13D0Ev,_ZThn112_N9S21153C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C13[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&_ZN9S21153C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C13D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21153C13D1Ev,_ZThn20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S21153C13D0Ev,_ZThn20_N9S21153C13D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21153C13[];
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C8__9S21153C13[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn84_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn84_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn72_N8S21153C2D1Ev,_ZThn40_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn72_N8S21153C2D0Ev,_ZThn40_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C2D1Ev,_ZThn28_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C2D0Ev,_ZThn28_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C8__9S21153C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn84_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn84_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C8__9S21153C13[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S21153C8D1Ev,_ZThn40_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S21153C8D0Ev,_ZThn40_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C8__9S21153C13[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C8__9S21153C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C8D1Ev,_ZThn28_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C8D0Ev,_ZThn28_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C8__9S21153C13[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S21153C8D1Ev,_ZThn112_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S21153C8D0Ev,_ZThn112_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C8__9S21153C13[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C13[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C13[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C13[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__9S21153C13[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__9S21153C13[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__9S21153C13[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C13[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__9S21153C13[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
static  VTT_ENTRY vtt_S21153C13[] = {
  {&(_ZTV9S21153C13[8]),  8,47},
  {&(_tg__ZTV8S21153C8__9S21153C13[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C8__9S21153C13[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C8__9S21153C13[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C8__9S21153C13[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C8__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C8__9S21153C13[4]),  4,6},
  {&(_ZTV9S21153C13[17]),  17,47},
  {&(_ZTV9S21153C13[24]),  24,47},
  {&(_ZTV9S21153C13[34]),  34,47},
  {&(_ZTV9S21153C13[29]),  29,47},
  {&(_ZTV9S21153C13[40]),  40,47},
  {&(_ZTV9S21153C13[45]),  45,47},
  {&(_tg__ZTV8S21153C4__9S21153C13[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__9S21153C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21153C13[];
extern  VTBL_ENTRY _ZTV9S21153C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C13[];
static VTBL_ENTRY alt_thunk_names230[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21153C8D0Ev,_ZThn112_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21153C8D1Ev,_ZThn112_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C8D0Ev,_ZThn40_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C8D1Ev,_ZThn40_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C8D0Ev,_ZThn28_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn84_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C8D1Ev,_ZThn28_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn84_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C2D0Ev,_ZThn40_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21153C2D1Ev,_ZThn40_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C2D0Ev,_ZThn28_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn84_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C2D1Ev,_ZThn28_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn84_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21153C13D0Ev,_ZThn112_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21153C13D1Ev,_ZThn112_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21153C13D0Ev,_ZThn40_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S21153C13D1Ev,_ZThn40_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn84_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21153C13D0Ev,_ZThn28_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn84_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21153C13D1Ev,_ZThn28_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C13 = {  "S21153C13", // class name
  bases_S21153C13, 12,
  &(vtc_S21153C13[0]), // expected_vtbl_contents
  &(vtt_S21153C13[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI9S21153C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21153C13),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21153C13),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names230,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C15  : virtual S20760C13 , S21153C4 , virtual S4161C4_nt {
  ::S21153C13 s21153c15f0;
  ~S21153C15(); // tgen
  S21153C15(); // tgen
};
//SIG(-1 S21153C15) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S21153C15 ::~S21153C15(){ note_dtor("S21153C15", this);} // tgen
S21153C15 ::S21153C15(){ note_ctor("S21153C15", this);} // tgen

static void Test_S21153C15()
{
  extern Class_Descriptor cd_S21153C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S21153C15, buf);
    S21153C15 *dp, &lv = *(dp=new (buf) S21153C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S21153C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C15)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S21153C15");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(256,168), "S21153C15");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), 0, "S21153C15");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(288,196), "S21153C15");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(16,12), "S21153C15");
    check_base_class_offset(lv, (S21153C4*), 0, "S21153C15");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S21153C15");
    check_field_offset(lv, s21153c15f0, ABISELECT(64,44), "S21153C15.s21153c15f0");
    test_class_info(&lv, &cd_S21153C15);
    dp->~S21153C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C15(Test_S21153C15, "S21153C15", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN9S21153C15C1Ev();
extern void _ZN9S21153C15D1Ev();
Name_Map name_map_S21153C15[] = {
  NSPAIR(_ZN9S21153C15C1Ev),
  NSPAIR(_ZN9S21153C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S21153C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21153C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21153C15[];
extern void _ZN9S21153C15D1Ev();
extern void _ZN9S21153C15D0Ev();
extern void ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn256_N9S21153C15D1Ev,_ZThn168_N9S21153C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
extern void ABISELECT(_ZThn256_N9S21153C15D0Ev,_ZThn168_N9S21153C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn288_N9S21153C15D1Ev,_ZThn196_N9S21153C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
extern void ABISELECT(_ZThn288_N9S21153C15D0Ev,_ZThn196_N9S21153C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21153C15[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&_ZN9S21153C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C15D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21153C15[];
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C15[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C15[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn272_N8S21153C6D1Ev,_ZThn184_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn272_N8S21153C6D0Ev,_ZThn184_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C15[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn256_N8S21153C4D1Ev,_ZThn168_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn256_N8S21153C4D0Ev,_ZThn168_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__9S21153C15[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__9S21153C15[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn288_N8S21153C4D1Ev,_ZThn196_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn288_N8S21153C4D0Ev,_ZThn196_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__9S21153C15[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
static  VTT_ENTRY vtt_S21153C15[] = {
  {&(_ZTV9S21153C15[5]),  5,22},
  {&(_tg__ZTV8S21153C4__9S21153C15[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__9S21153C15[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__9S21153C15[3]),  3,5},
  {&(_ZTV9S21153C15[15]),  15,22},
  {&(_ZTV9S21153C15[10]),  10,22},
  {&(_ZTV9S21153C15[20]),  20,22},
};
extern VTBL_ENTRY _ZTI9S21153C15[];
extern  VTBL_ENTRY _ZTV9S21153C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C15[];
static VTBL_ENTRY alt_thunk_names231[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C4D0Ev,_ZThn196_N8S21153C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21153C4D0Ev,_ZThn168_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C4D1Ev,_ZThn196_N8S21153C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S21153C4D1Ev,_ZThn168_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C6D0Ev,_ZThn184_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C6D1Ev,_ZThn184_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C15D0Ev,_ZThn196_N9S21153C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21153C15D0Ev,_ZThn168_N9S21153C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C15D1Ev,_ZThn196_N9S21153C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S21153C15D1Ev,_ZThn168_N9S21153C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C15 = {  "S21153C15", // class name
  bases_S21153C15, 6,
  &(vtc_S21153C15[0]), // expected_vtbl_contents
  &(vtt_S21153C15[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI9S21153C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21153C15),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21153C15),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names231,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C11  : S4228C37 , S20760C9 , virtual S4161C4_nt , S21153C13 , virtual S21153C15 {
  int s21153c11f0;
  virtual  ~S21153C11(); // _ZN9S21153C11D2Ev
  S21153C11(); // tgen
};
//SIG(-1 S21153C11) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S21153C11 ::~S21153C11(){ note_dtor("S21153C11", this);}
S21153C11 ::S21153C11(){ note_ctor("S21153C11", this);} // tgen

static void Test_S21153C11()
{
  extern Class_Descriptor cd_S21153C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S21153C11, buf);
    S21153C11 *dp, &lv = *(dp=new (buf) S21153C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S21153C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C11)");
    check_base_class_offset(lv, (S4228C37*), 0, "S21153C11");
    /*is_ambiguous_... S21153C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21153C11");
    /*is_ambiguous_... S21153C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S21153C11");
    /*is_ambiguous_... S21153C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21153C13*), ABISELECT(72,40), "S21153C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C15*), ABISELECT(72,40), "S21153C11");
    /*is_ambiguous_... S21153C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C13*), ABISELECT(80,44), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(80,44), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(80,44), "S21153C11");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(80,44), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(96,56), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(152,100), "S21153C11");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*)(S21153C13*), ABISELECT(152,100), "S21153C11");
    check_base_class_offset(lv, (S20760C13*)(S21153C15*), ABISELECT(152,100), "S21153C11");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*)(S21153C15*), ABISELECT(152,100), "S21153C11");
    /*is_ambiguous_... S21153C11::S21153C4 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(112,68), "S21153C11");
    check_base_class_offset(lv, (S21153C4*)(S21153C13*), ABISELECT(96,56), "S21153C11");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*)(S21153C13*), ABISELECT(96,56), "S21153C11");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*)(S21153C13*), ABISELECT(48,28), "S21153C11");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*)(S21153C13*), ABISELECT(16,12), "S21153C11");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*)(S21153C13*), ABISELECT(56,32), "S21153C11");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*)(S21153C13*), ABISELECT(184,128), "S21153C11");
    check_base_class_offset(lv, (S21153C8*)(S21153C13*), ABISELECT(16,12), "S21153C11");
    check_base_class_offset(lv, (S20759C5_nt*)(S21153C13*), ABISELECT(192,132), "S21153C11");
    check_base_class_offset(lv, (S21153C13*), ABISELECT(16,12), "S21153C11");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*)(S21153C15*), ABISELECT(208,140), "S21153C11");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(224,152), "S21153C11");
    check_base_class_offset(lv, (S21153C4*)(S21153C15*), ABISELECT(208,140), "S21153C11");
    check_base_class_offset(lv, (S21153C15*), ABISELECT(208,140), "S21153C11");
    check_field_offset(lv, s21153c11f0, ABISELECT(64,36), "S21153C11.s21153c11f0");
    test_class_info(&lv, &cd_S21153C11);
    dp->~S21153C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C11(Test_S21153C11, "S21153C11", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN9S21153C11C1Ev();
extern void _ZN9S21153C11D2Ev();
Name_Map name_map_S21153C11[] = {
  NSPAIR(_ZN9S21153C11C1Ev),
  NSPAIR(_ZN9S21153C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21153C13;
extern VTBL_ENTRY _ZTI9S21153C13[];
extern  VTBL_ENTRY _ZTV9S21153C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C15;
extern VTBL_ENTRY _ZTI9S21153C15[];
extern  VTBL_ENTRY _ZTV9S21153C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C15[];
static Base_Class bases_S21153C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S21153C2,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21153C8,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21153C13,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(208,140), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21153C15,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21153C11[];
extern void _ZN9S21153C11D1Ev();
extern void _ZN9S21153C11D0Ev();
extern void ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn56_N9S21153C11D1Ev,_ZThn32_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn56_N9S21153C11D0Ev,_ZThn32_N9S21153C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn80_N9S21153C11D1Ev,_ZThn44_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn80_N9S21153C11D0Ev,_ZThn44_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn96_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn96_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn152_N9S21153C11D1Ev,_ZThn100_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn152_N9S21153C11D0Ev,_ZThn100_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn184_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn184_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn192_N9S21153C11D1Ev,_ZThn132_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn192_N9S21153C11D0Ev,_ZThn132_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn208_N9S21153C11D1Ev,_ZThn140_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn208_N9S21153C11D0Ev,_ZThn140_N9S21153C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev)();
static  VTBL_ENTRY vtc_S21153C11[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&_ZN9S21153C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C11D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21153C11D1Ev,_ZThn32_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N9S21153C11D0Ev,_ZThn32_N9S21153C11D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S21153C11[];
extern void _ZN9S21153C13D1Ev();
extern void _ZN9S21153C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C13__9S21153C11[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&_ZN9S21153C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C13D0Ev,
};
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn32_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn32_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn88_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn88_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C8D1Ev,_ZThn32_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C8D0Ev,_ZThn32_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn168_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn168_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C89S21153C13__9S21153C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S21153C13D1Ev,_ZThn32_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S21153C13D0Ev,_ZThn32_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21153C13__9S21153C11[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C13__9S21153C11[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21153C13D1Ev,_ZThn88_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21153C13D0Ev,_ZThn88_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C13__9S21153C11[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C13__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C13__9S21153C11[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn176_N9S21153C13D1Ev,_ZThn120_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn176_N9S21153C13D0Ev,_ZThn120_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21153C13__9S21153C11[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C11[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C11[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__9S21153C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__9S21153C11[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__9S21153C11[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C11[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__9S21153C11[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void _ZN9S21153C15D1Ev();
extern void _ZN9S21153C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C15__9S21153C11[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&_ZN9S21153C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C15D0Ev,
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__9S21153C11[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__9S21153C11[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C15__9S21153C11[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C15__9S21153C11[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21153C15__9S21153C11[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
static  VTT_ENTRY vtt_S21153C11[] = {
  {&(_ZTV9S21153C11[9]),  9,71},
  {&(_tg__ZTV9S21153C13__9S21153C11[8]),  8,10},
  {&(_tg__ZTV8S21153C89S21153C13__9S21153C11[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C89S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C89S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C89S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C89S21153C13__9S21153C11[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C4__9S21153C13__9S21153C11[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C13__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C13__9S21153C11[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S21153C13__9S21153C11[3]),  3,5},
  {&(_ZTV9S21153C11[19]),  19,71},
  {&(_ZTV9S21153C11[28]),  28,71},
  {&(_ZTV9S21153C11[35]),  35,71},
  {&(_ZTV9S21153C11[45]),  45,71},
  {&(_ZTV9S21153C11[40]),  40,71},
  {&(_ZTV9S21153C11[51]),  51,71},
  {&(_ZTV9S21153C11[56]),  56,71},
  {&(_ZTV9S21153C11[64]),  64,71},
  {&(_ZTV9S21153C11[69]),  69,71},
  {&(_tg__ZTV8S21153C4__9S21153C11[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S21153C15__9S21153C11[5]),  5,7},
  {&(_tg__ZTV8S21153C49S21153C15__A1__9S21153C11[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C49S21153C15__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C49S21153C15__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__9S21153C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21153C15__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C15__9S21153C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21153C15__9S21153C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21153C11[];
extern  VTBL_ENTRY _ZTV9S21153C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C11[];
static VTBL_ENTRY alt_thunk_names232[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21153C13D0Ev,_ZThn120_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21153C13D0Ev,_ZThn88_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21153C13D0Ev,_ZThn32_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S21153C13D1Ev,_ZThn120_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21153C13D1Ev,_ZThn88_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21153C13D1Ev,_ZThn32_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C8D0Ev,_ZThn32_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D0Ev,_ZThn88_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C8D1Ev,_ZThn32_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C8D1Ev,_ZThn88_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn32_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn32_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21153C11D0Ev,_ZThn140_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21153C11D1Ev,_ZThn140_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21153C11D0Ev,_ZThn132_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21153C11D0Ev,_ZThn100_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C11D0Ev,_ZThn44_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21153C11D1Ev,_ZThn132_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21153C11D1Ev,_ZThn100_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21153C11D1Ev,_ZThn44_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C11 = {  "S21153C11", // class name
  bases_S21153C11, 19,
  &(vtc_S21153C11[0]), // expected_vtbl_contents
  &(vtt_S21153C11[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI9S21153C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21153C11),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21153C11),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names232,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21153C1  : virtual S21153C2 , virtual S21153C7 , S21153C11 {
  virtual  ~S21153C1(); // _ZN8S21153C1D2Ev
  S21153C1(); // tgen
};
//SIG(1 S21153C1) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ BC12{ m} BC5 VBC9 BC13{ VBC9 VBC5 VBC4 BC8 VBC14{ vd m Fl}} VBC15{ VBC3 BC4 VBC9 FC13} vd Fi} vd}


 S21153C1 ::~S21153C1(){ note_dtor("S21153C1", this);}
S21153C1 ::S21153C1(){ note_ctor("S21153C1", this);} // tgen

static void Test_S21153C1()
{
  extern Class_Descriptor cd_S21153C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(37,91)];
    init_test(&cd_S21153C1, buf);
    S21153C1 *dp, &lv = *(dp=new (buf) S21153C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,360), "sizeof(S21153C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21153C1)");
    /*is_ambiguous_... S21153C1::S21153C2 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21153C2*), ABISELECT(112,56), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21153C4*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*)(S21153C7*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C2*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C15*), ABISELECT(112,56), "S21153C1");
    check_base_class_offset(lv, (S20760C13*)(S21153C4*)(S21153C15*), ABISELECT(112,56), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*), ABISELECT(144,84), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*), ABISELECT(200,128), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C6*), ABISELECT(200,128), "S21153C1");
    /*is_ambiguous_... S21153C13::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C13*)(S21153C11*), ABISELECT(200,128), "S21153C1");
    check_base_class_offset(lv, (S20760C9*)(S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(200,128), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C4 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C4*), ABISELECT(160,96), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C2 */ AMB_check_base_class_offset(lv, (S21153C4*)(S21153C2*), ABISELECT(144,84), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*)(S21153C7*), ABISELECT(144,84), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C13*)(S21153C11*), ABISELECT(144,84), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C2*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(144,84), "S21153C1");
    /*is_ambiguous_... S21153C1::S21153C2 */ AMB_check_base_class_offset(lv, (S21153C2*), ABISELECT(80,40), "S21153C1");
    /*is_ambiguous_... S21153C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C7*), ABISELECT(224,140), "S21153C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*)(S21153C7*), ABISELECT(272,168), "S21153C1");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*)(S21153C7*), ABISELECT(240,152), "S21153C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*)(S21153C7*), ABISELECT(280,172), "S21153C1");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*)(S21153C7*), ABISELECT(288,176), "S21153C1");
    /*is_ambiguous_... S21153C8::S21153C6 */ AMB_check_base_class_offset(lv, (S21153C6*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(288,176), "S21153C1");
    check_base_class_offset(lv, (S21153C8*)(S21153C7*), ABISELECT(240,152), "S21153C1");
    check_base_class_offset(lv, (S21153C7*), ABISELECT(224,140), "S21153C1");
    check_base_class_offset(lv, (S4228C37*)(S21153C11*), 0, "S21153C1");
    /*is_ambiguous_... S21153C11::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C11*), 0, "S21153C1");
    /*is_ambiguous_... S21153C11::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21153C11*), ABISELECT(296,180), "S21153C1");
    /*is_ambiguous_... S21153C13::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S21153C13*)(S21153C11*), ABISELECT(296,180), "S21153C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C15*), ABISELECT(296,180), "S21153C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(48,28), "S21153C1");
    check_base_class_offset(lv, (S21153C2*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(16,12), "S21153C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(56,32), "S21153C1");
    check_base_class_offset(lv, (S21153C8*)(S21153C13*)(S21153C11*), ABISELECT(16,12), "S21153C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S21153C13*)(S21153C11*), ABISELECT(304,184), "S21153C1");
    check_base_class_offset(lv, (S21153C13*)(S21153C11*), ABISELECT(16,12), "S21153C1");
    /*is_ambiguous_... S21153C4::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21153C4*)(S21153C15*), ABISELECT(320,192), "S21153C1");
    check_base_class_offset(lv, (S21153C6*)(S21153C4*)(S21153C15*), ABISELECT(336,204), "S21153C1");
    check_base_class_offset(lv, (S21153C4*)(S21153C15*), ABISELECT(320,192), "S21153C1");
    check_base_class_offset(lv, (S21153C15*)(S21153C11*), ABISELECT(320,192), "S21153C1");
    check_base_class_offset(lv, (S21153C11*), 0, "S21153C1");
    test_class_info(&lv, &cd_S21153C1);
    dp->~S21153C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21153C1(Test_S21153C1, "S21153C1", ABISELECT(576,360));

#else // __cplusplus

extern void _ZN8S21153C1C1Ev();
extern void _ZN8S21153C1D2Ev();
Name_Map name_map_S21153C1[] = {
  NSPAIR(_ZN8S21153C1C1Ev),
  NSPAIR(_ZN8S21153C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S21153C7;
extern VTBL_ENTRY _ZTI8S21153C7[];
extern  VTBL_ENTRY _ZTV8S21153C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S21153C2;
extern VTBL_ENTRY _ZTI8S21153C2[];
extern  VTBL_ENTRY _ZTV8S21153C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C2[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S21153C8;
extern VTBL_ENTRY _ZTI8S21153C8[];
extern  VTBL_ENTRY _ZTV8S21153C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C8[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21153C13;
extern VTBL_ENTRY _ZTI9S21153C13[];
extern  VTBL_ENTRY _ZTV9S21153C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21153C6;
extern VTBL_ENTRY _ZTI8S21153C6[];
extern  VTBL_ENTRY _ZTV8S21153C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C6[];
extern Class_Descriptor cd_S21153C4;
extern VTBL_ENTRY _ZTI8S21153C4[];
extern  VTBL_ENTRY _ZTV8S21153C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C4[];
extern Class_Descriptor cd_S21153C15;
extern VTBL_ENTRY _ZTI9S21153C15[];
extern  VTBL_ENTRY _ZTV9S21153C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C15[];
extern Class_Descriptor cd_S21153C11;
extern VTBL_ENTRY _ZTI9S21153C11[];
extern  VTBL_ENTRY _ZTV9S21153C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21153C11[];
static Base_Class bases_S21153C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(112,56), //bcp->offset
    35, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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_S20760C9,    ABISELECT(200,128), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21153C6,    ABISELECT(160,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(144,84), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21153C2,    ABISELECT(80,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(272,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
    11, //immediately_derived
  0, 0},
  {&cd_S21153C2,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(280,172), //bcp->offset
    74, //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
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(288,176), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S21153C8,    ABISELECT(240,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21153C7,    ABISELECT(224,140), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(296,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
    21, //immediately_derived
  0, 1},
  {&cd_S4161C4_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
    19, //immediately_derived
  0, 0},
  {&cd_S21153C2,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    20, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21153C8,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(304,184), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S21153C13,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21153C6,    ABISELECT(336,204), //bcp->offset
    97, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S21153C4,    ABISELECT(320,192), //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
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21153C15,    ABISELECT(320,192), //bcp->offset
    89, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S21153C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21153C1[];
extern void _ZN8S21153C1D1Ev();
extern void _ZN8S21153C1D0Ev();
extern void ABISELECT(_ZThn16_N8S21153C1D1Ev,_ZThn12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C1D0Ev,_ZThn12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C1D1Ev,_ZThn32_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C1D0Ev,_ZThn32_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S21153C1D1Ev,_ZThn40_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S21153C1D0Ev,_ZThn40_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21153C1D1Ev,_ZThn56_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21153C1D0Ev,_ZThn56_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C1D1Ev,_ZTv0_n20_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S21153C1D1Ev,_ZThn84_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C1D0Ev,_ZTv0_n20_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn144_N8S21153C1D0Ev,_ZThn84_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21153C1D1Ev,_ZTvn12_n20_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C1D0Ev,_ZTvn12_n20_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S21153C1D1Ev,_ZThn128_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S21153C1D0Ev,_ZThn128_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21153C1D1Ev,_ZTv0_n28_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21153C1D1Ev,_ZThn140_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21153C1D0Ev,_ZTv0_n28_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21153C1D0Ev,_ZThn140_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S21153C1D1Ev,_ZTvn12_n28_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S21153C1D0Ev,_ZTvn12_n28_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21153C1D1Ev,_ZTvn32_n28_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S21153C1D0Ev,_ZTvn32_n28_N8S21153C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21153C1D1Ev,_ZTv0_n16_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S21153C1D1Ev,_ZThn176_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C1D0Ev,_ZTv0_n16_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn288_N8S21153C1D0Ev,_ZThn176_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn304_N8S21153C1D1Ev,_ZThn184_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn304_N8S21153C1D0Ev,_ZThn184_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21153C1D1Ev,_ZThn192_N8S21153C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21153C1D0Ev,_ZThn192_N8S21153C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N8S21153C1D1Ev,_ZTvn12_n24_N8S21153C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N8S21153C1D0Ev,_ZTvn12_n24_N8S21153C1D0Ev)();
static  VTBL_ENTRY vtc_S21153C1[] = {
  ABISELECT(224,140),
  ABISELECT(80,40),
  ABISELECT(320,192),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&_ZN8S21153C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C1D0Ev,
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C1D1Ev,_ZThn12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C1D0Ev,_ZThn12_N8S21153C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C1D1Ev,_ZThn32_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21153C1D0Ev,_ZThn32_N8S21153C1D0Ev),
  ABISELECT(-80,-40),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C1D1Ev,_ZTv0_n20_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C1D0Ev,_ZTv0_n20_N8S21153C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C1D1Ev,_ZTvn12_n20_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C1D0Ev,_ZTvn12_n20_N8S21153C1D0Ev),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21153C1D1Ev,_ZTv0_n28_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21153C1D0Ev,_ZTv0_n28_N8S21153C1D0Ev),
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21153C1D1Ev,_ZTvn12_n28_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S21153C1D0Ev,_ZTvn12_n28_N8S21153C1D0Ev),
  ABISELECT(-280,-172),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21153C1D1Ev,_ZTvn32_n28_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S21153C1D0Ev,_ZTvn32_n28_N8S21153C1D0Ev),
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C1D1Ev,_ZTv0_n16_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C1D0Ev,_ZTv0_n16_N8S21153C1D0Ev),
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev),
  ABISELECT(-320,-192),
  ABISELECT(-24,-12),
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev),
  ABISELECT(-136,-76),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI8S21153C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21153C1D1Ev,_ZTvn12_n24_N8S21153C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N8S21153C1D0Ev,_ZTvn12_n24_N8S21153C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21153C1[];
extern void _ZN9S21153C11D1Ev();
extern void _ZN9S21153C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C11__8S21153C1[] = {
  ABISELECT(320,192),
  ABISELECT(304,184),
  ABISELECT(288,176),
  ABISELECT(112,56),
  ABISELECT(144,84),
  ABISELECT(200,128),
  ABISELECT(296,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&_ZN9S21153C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C11D0Ev,
};
extern void _ZN9S21153C13D1Ev();
extern void _ZN9S21153C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&_ZN9S21153C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C13D0Ev,
};
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn72_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn72_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S21153C2D1Ev,_ZThn116_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn184_N8S21153C2D0Ev,_ZThn116_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn72_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn72_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn184_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn184_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21153C8D1Ev,_ZThn164_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21153C8D0Ev,_ZThn164_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn72_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn72_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-96,-44),
  ABISELECT(-96,-44),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D1Ev,_ZTvn12_n20_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C13D0Ev,_ZTvn12_n20_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn272_N9S21153C13D1Ev,_ZThn164_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn272_N9S21153C13D0Ev,_ZThn164_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-88,-48),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev)();
extern void ABISELECT(_ZThn288_N9S21153C13D1Ev,_ZThn172_N9S21153C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev)();
extern void ABISELECT(_ZThn288_N9S21153C13D0Ev,_ZThn172_N9S21153C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21153C139S21153C11__8S21153C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI9S21153C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21153C13__9S21153C11__8S21153C1[] = {
  ABISELECT(288,172),
  ABISELECT(280,168),
  ABISELECT(272,164),
  ABISELECT(184,116),
  ABISELECT(128,72),
  ABISELECT(96,44),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D1Ev,_ZThn12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C11D0Ev,_ZThn12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn200_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn200_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21153C11__8S21153C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn144_N9S21153C11D1Ev,_ZThn84_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn144_N9S21153C11D0Ev,_ZThn84_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__9S21153C11__8S21153C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C11__8S21153C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C11__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D1Ev,_ZTvn12_n20_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21153C11D0Ev,_ZTvn12_n20_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn288_N9S21153C11D1Ev,_ZThn176_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn288_N9S21153C11D0Ev,_ZThn176_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__9S21153C11__8S21153C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-88,-48),
  ABISELECT(-288,-176),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn304_N9S21153C11D1Ev,_ZThn184_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn304_N9S21153C11D0Ev,_ZThn184_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__9S21153C11__8S21153C1[] = {
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S21153C11D1Ev,_ZThn192_N9S21153C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S21153C11D0Ev,_ZThn192_N9S21153C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21153C15__9S21153C11__8S21153C1[] = {
  ABISELECT(-320,-192),
  ABISELECT(-24,-12),
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11__8S21153C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI9S21153C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D1Ev,_ZTvn12_n24_N9S21153C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N9S21153C11D0Ev,_ZTvn12_n24_N9S21153C11D0Ev),
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C2__8S21153C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C2__8S21153C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C2__8S21153C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
extern void ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C2__8S21153C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
extern void ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C4__8S21153C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C4__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
extern void ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C4__8S21153C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void _ZN8S21153C7D1Ev();
extern void _ZN8S21153C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C7__8S21153C1[] = {
  ABISELECT(64,36),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&_ZN8S21153C7D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C7D0Ev,
};
extern void _ZN8S21153C8D1Ev();
extern void _ZN8S21153C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&_ZN8S21153C8D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C8D0Ev,
};
extern void _ZN8S21153C2D1Ev();
extern void _ZN8S21153C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&_ZN8S21153C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D1Ev,_ZTvn12_n20_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C2D0Ev,_ZTvn12_n20_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C28S21153C88S21153C7__A1__8S21153C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21153C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D1Ev,_ZTvn12_n20_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C8D0Ev,_ZTvn12_n20_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev)();
extern void ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C88S21153C7__8S21153C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-88,-48),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S21153C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C8__8S21153C7__8S21153C1[] = {
  ABISELECT(48,24),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D1Ev,_ZThn12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C7D0Ev,_ZThn12_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C7__8S21153C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C4__8S21153C7__8S21153C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D1Ev,_ZTv0_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21153C7D0Ev,_ZTv0_n20_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__8S21153C7__8S21153C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D1Ev,_ZTvn12_n20_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21153C7D0Ev,_ZTvn12_n20_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S21153C7__8S21153C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D1Ev,_ZTv0_n12_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C7D0Ev,_ZTv0_n12_N8S21153C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev)();
extern void ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C7__8S21153C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-88,-48),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21153C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev),
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C6__A1__8S21153C1[] = {
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C6__A1__8S21153C1[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void _ZN9S21153C15D1Ev();
extern void _ZN9S21153C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21153C15__8S21153C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&_ZN9S21153C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21153C15D0Ev,
};
extern void _ZN8S21153C4D1Ev();
extern void _ZN8S21153C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-208,-136),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&_ZN8S21153C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C4D0Ev,
};
extern void _ZN8S21153C6D1Ev();
extern void _ZN8S21153C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C49S21153C15__A2__8S21153C1[] = {
  ABISELECT(-136,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&_ZN8S21153C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21153C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__8S21153C1[] = {
  ABISELECT(136,76),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI8S21153C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C6__8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D1Ev,_ZThn12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21153C4D0Ev,_ZThn12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__8S21153C1[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI8S21153C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21153C15__8S21153C1[] = {
  ABISELECT(208,136),
  ABISELECT(208,136),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21153C68S21153C4__9S21153C15__8S21153C1[] = {
  ABISELECT(-136,-76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D1Ev,_ZThn12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N9S21153C15D0Ev,_ZThn12_N9S21153C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21153C15__8S21153C1[] = {
  ABISELECT(120,64),
  ABISELECT(120,64),
  (VTBL_ENTRY)&(_ZTI9S21153C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D1Ev,_ZTv0_n12_N9S21153C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21153C15D0Ev,_ZTv0_n12_N9S21153C15D0Ev),
};
static  VTT_ENTRY vtt_S21153C1[] = {
  {&(_ZTV8S21153C1[11]),  11,102},
  {&(_tg__ZTV9S21153C11__8S21153C1[9]),  9,11},
  {&(_tg__ZTV9S21153C139S21153C11__8S21153C1[8]),  8,10},
  {&(_tg__ZTV8S21153C89S21153C139S21153C11__A1__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C89S21153C139S21153C11__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C89S21153C139S21153C11__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C89S21153C139S21153C11__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C89S21153C139S21153C11__A1__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__9S21153C139S21153C11__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C139S21153C11__8S21153C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S21153C139S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S21153C13__9S21153C11__8S21153C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__9S21153C11__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__9S21153C11__8S21153C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__9S21153C11__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S21153C15__9S21153C11__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C68S21153C49S21153C15__A2__9S21153C11__8S21153C1[3]),  3,5},
  {&(_ZTV8S21153C1[33]),  33,102},
  {&(_ZTV8S21153C1[38]),  38,102},
  {&(_ZTV8S21153C1[45]),  45,102},
  {&(_ZTV8S21153C1[50]),  50,102},
  {&(_ZTV8S21153C1[55]),  55,102},
  {&(_ZTV8S21153C1[64]),  64,102},
  {&(_ZTV8S21153C1[72]),  72,102},
  {&(_ZTV8S21153C1[76]),  76,102},
  {&(_ZTV8S21153C1[82]),  82,102},
  {&(_ZTV8S21153C1[21]),  21,102},
  {&(_ZTV8S21153C1[87]),  87,102},
  {&(_ZTV8S21153C1[95]),  95,102},
  {&(_ZTV8S21153C1[100]),  100,102},
  {&(_tg__ZTV8S21153C2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C2__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C4__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C7__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C88S21153C7__8S21153C1[6]),  6,8},
  {&(_tg__ZTV8S21153C28S21153C88S21153C7__A1__8S21153C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S21153C28S21153C88S21153C7__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C28S21153C88S21153C7__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C28S21153C88S21153C7__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C88S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C88S21153C7__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C88S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C88S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C88S21153C7__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C8__8S21153C7__8S21153C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C4__8S21153C7__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C68S21153C4__8S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S21153C7__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__A1__8S21153C7__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C6__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C6__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S21153C15__8S21153C1[5]),  5,7},
  {&(_tg__ZTV8S21153C49S21153C15__A1__8S21153C1[4]),  4,6},
  {&(_tg__ZTV8S21153C68S21153C49S21153C15__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21153C68S21153C49S21153C15__A2__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21153C49S21153C15__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C6__8S21153C49S21153C15__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21153C49S21153C15__A1__8S21153C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S21153C15__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S21153C68S21153C4__9S21153C15__8S21153C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21153C15__8S21153C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21153C1[];
extern  VTBL_ENTRY _ZTV8S21153C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21153C1[];
static VTBL_ENTRY alt_thunk_names233[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D0Ev,_ZTv0_n16_N8S21153C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D0Ev,_ZThn36_N8S21153C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C7D1Ev,_ZTv0_n16_N8S21153C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C7D1Ev,_ZThn36_N8S21153C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D0Ev,_ZTv0_n12_N8S21153C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D0Ev,_ZThn44_N8S21153C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C4D1Ev,_ZTv0_n12_N8S21153C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21153C4D1Ev,_ZThn44_N8S21153C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D0Ev,_ZTv0_n12_N8S21153C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D0Ev,_ZThn32_N8S21153C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C6D1Ev,_ZTv0_n12_N8S21153C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21153C6D1Ev,_ZThn32_N8S21153C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D0Ev,_ZTv0_n24_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21153C11D0Ev,_ZThn192_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21153C11D1Ev,_ZTv0_n24_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S21153C11D1Ev,_ZThn192_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D0Ev,_ZTv0_n16_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C11D0Ev,_ZThn176_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C11D1Ev,_ZTv0_n16_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C11D1Ev,_ZThn176_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D0Ev,_ZTv0_n20_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21153C11D0Ev,_ZThn84_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C11D1Ev,_ZTv0_n20_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21153C11D1Ev,_ZThn84_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D0Ev,_ZTv0_n12_N9S21153C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21153C11D0Ev,_ZThn184_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21153C11D0Ev,_ZThn56_N9S21153C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21153C11D0Ev,_ZThn128_N9S21153C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C11D1Ev,_ZTv0_n12_N9S21153C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S21153C11D1Ev,_ZThn184_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S21153C11D1Ev,_ZThn56_N9S21153C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S21153C11D1Ev,_ZThn128_N9S21153C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D0Ev,_ZTv0_n16_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21153C13D0Ev,_ZThn164_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21153C13D1Ev,_ZTv0_n16_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S21153C13D1Ev,_ZThn164_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D0Ev,_ZTv0_n20_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D0Ev,_ZThn72_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21153C13D1Ev,_ZTv0_n20_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21153C13D1Ev,_ZThn72_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D0Ev,_ZTv0_n12_N9S21153C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C13D0Ev,_ZThn172_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C13D0Ev,_ZThn44_N9S21153C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C13D0Ev,_ZThn116_N9S21153C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21153C13D1Ev,_ZTv0_n12_N9S21153C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S21153C13D1Ev,_ZThn172_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21153C13D1Ev,_ZThn44_N9S21153C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S21153C13D1Ev,_ZThn116_N9S21153C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D0Ev,_ZTv0_n16_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D0Ev,_ZThn24_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C8D0Ev,_ZThn164_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C8D1Ev,_ZTv0_n16_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21153C8D1Ev,_ZThn24_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21153C8D1Ev,_ZThn164_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D0Ev,_ZTv0_n20_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D0Ev,_ZThn72_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C8D1Ev,_ZTv0_n20_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C8D1Ev,_ZThn72_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D0Ev,_ZTv0_n12_N8S21153C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C8D0Ev,_ZThn116_N8S21153C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C8D0Ev,_ZThn44_N8S21153C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C8D1Ev,_ZTv0_n12_N8S21153C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C8D1Ev,_ZThn116_N8S21153C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C8D1Ev,_ZThn44_N8S21153C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D0Ev,_ZTv0_n20_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D0Ev,_ZThn72_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C2D1Ev,_ZTv0_n20_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21153C2D1Ev,_ZThn72_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D0Ev,_ZTv0_n12_N8S21153C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D0Ev,_ZThn88_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D0Ev,_ZThn16_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C2D0Ev,_ZThn116_N8S21153C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C2D0Ev,_ZThn44_N8S21153C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C2D1Ev,_ZTv0_n12_N8S21153C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S21153C2D1Ev,_ZThn88_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21153C2D1Ev,_ZThn16_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21153C2D1Ev,_ZThn116_N8S21153C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21153C2D1Ev,_ZThn44_N8S21153C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C1D0Ev,_ZTv0_n16_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C1D0Ev,_ZThn176_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21153C1D1Ev,_ZTv0_n16_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S21153C1D1Ev,_ZThn176_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21153C1D0Ev,_ZTv0_n28_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21153C1D0Ev,_ZThn140_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21153C1D1Ev,_ZTv0_n28_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21153C1D1Ev,_ZThn140_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C1D0Ev,_ZTv0_n20_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21153C1D0Ev,_ZThn84_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21153C1D1Ev,_ZTv0_n20_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21153C1D1Ev,_ZThn84_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C1D0Ev,_ZTv0_n12_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21153C1D0Ev,_ZThn184_N8S21153C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21153C1D0Ev,_ZThn128_N8S21153C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21153C1D0Ev,_ZThn56_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21153C1D1Ev,_ZTv0_n12_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S21153C1D1Ev,_ZThn184_N8S21153C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S21153C1D1Ev,_ZThn128_N8S21153C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21153C1D1Ev,_ZThn56_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21153C1D0Ev,_ZTv0_n24_N8S21153C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21153C1D0Ev,_ZThn192_N8S21153C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C1D0Ev,_ZThn40_N8S21153C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21153C1D1Ev,_ZTv0_n24_N8S21153C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21153C1D1Ev,_ZThn192_N8S21153C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21153C1D1Ev,_ZThn40_N8S21153C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21153C1 = {  "S21153C1", // class name
  bases_S21153C1, 27,
  &(vtc_S21153C1[0]), // expected_vtbl_contents
  &(vtt_S21153C1[0]), // expected_vtt_contents
  ABISELECT(576,360), // object size
  NSPAIRA(_ZTI8S21153C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21153C1),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21153C1),83, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names233,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C4  : S3423C8_nt {
};
//SIG(-1 S393C4) C1{ BC2{ m Fi}}



static void Test_S393C4()
{
  extern Class_Descriptor cd_S393C4;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S393C4, buf);
    S393C4 &lv = *(new (buf) S393C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S393C4)");
    check2(__alignof__(lv), 4, "__alignof__(S393C4)");
    check_base_class_offset(lv, (S3423C8_nt*), 0, "S393C4");
    test_class_info(&lv, &cd_S393C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C4(Test_S393C4, "S393C4", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S393C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C4[];
Class_Descriptor cd_S393C4 = {  "S393C4", // class name
  bases_S393C4, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI6S393C4),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  S393C3  : S393C4 {
  ::S4161C4_nt s393c3f0;
  void *s393c3f1;
  virtual  ~S393C3(); // _ZN6S393C3D1Ev
  virtual void  v3(); // _ZN6S393C32v3Ev
  virtual void  v4(); // _ZN6S393C32v4Ev
  virtual void  v5(); // _ZN6S393C32v5Ev
  virtual void  v6(); // _ZN6S393C32v6Ev
  virtual void  v7(); // _ZN6S393C32v7Ev
  virtual void  v8(); // _ZN6S393C32v8Ev
  virtual void  v9(); // _ZN6S393C32v9Ev
  virtual void  v10(); // _ZN6S393C33v10Ev
  virtual void  v11(); // _ZN6S393C33v11Ev
  virtual void  v12(); // _ZN6S393C33v12Ev
  virtual void  v13(); // _ZN6S393C33v13Ev
  virtual void  v14(); // _ZN6S393C33v14Ev
  virtual void  v15(); // _ZN6S393C33v15Ev
  virtual void  v16(); // _ZN6S393C33v16Ev
  virtual void  v17(); // _ZN6S393C33v17Ev
  virtual void  v18(); // _ZN6S393C33v18Ev
  virtual void  v19(); // _ZN6S393C33v19Ev
  virtual void  v20(); // _ZN6S393C33v20Ev
  virtual void  v21(); // _ZN6S393C33v21Ev
  virtual void  v22(); // _ZN6S393C33v22Ev
  virtual void  v23(); // _ZN6S393C33v23Ev
  virtual void  v24(); // _ZN6S393C33v24Ev
  virtual void  v25(); // _ZN6S393C33v25Ev
  S393C3(); // tgen
};
//SIG(-1 S393C3) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC4{ m Fp} Fp}


 S393C3 ::~S393C3(){ note_dtor("S393C3", this);}
void  S393C3 ::v3(){vfunc_called(this, "_ZN6S393C32v3Ev");}
void  S393C3 ::v4(){vfunc_called(this, "_ZN6S393C32v4Ev");}
void  S393C3 ::v5(){vfunc_called(this, "_ZN6S393C32v5Ev");}
void  S393C3 ::v6(){vfunc_called(this, "_ZN6S393C32v6Ev");}
void  S393C3 ::v7(){vfunc_called(this, "_ZN6S393C32v7Ev");}
void  S393C3 ::v8(){vfunc_called(this, "_ZN6S393C32v8Ev");}
void  S393C3 ::v9(){vfunc_called(this, "_ZN6S393C32v9Ev");}
void  S393C3 ::v10(){vfunc_called(this, "_ZN6S393C33v10Ev");}
void  S393C3 ::v11(){vfunc_called(this, "_ZN6S393C33v11Ev");}
void  S393C3 ::v12(){vfunc_called(this, "_ZN6S393C33v12Ev");}
void  S393C3 ::v13(){vfunc_called(this, "_ZN6S393C33v13Ev");}
void  S393C3 ::v14(){vfunc_called(this, "_ZN6S393C33v14Ev");}
void  S393C3 ::v15(){vfunc_called(this, "_ZN6S393C33v15Ev");}
void  S393C3 ::v16(){vfunc_called(this, "_ZN6S393C33v16Ev");}
void  S393C3 ::v17(){vfunc_called(this, "_ZN6S393C33v17Ev");}
void  S393C3 ::v18(){vfunc_called(this, "_ZN6S393C33v18Ev");}
void  S393C3 ::v19(){vfunc_called(this, "_ZN6S393C33v19Ev");}
void  S393C3 ::v20(){vfunc_called(this, "_ZN6S393C33v20Ev");}
void  S393C3 ::v21(){vfunc_called(this, "_ZN6S393C33v21Ev");}
void  S393C3 ::v22(){vfunc_called(this, "_ZN6S393C33v22Ev");}
void  S393C3 ::v23(){vfunc_called(this, "_ZN6S393C33v23Ev");}
void  S393C3 ::v24(){vfunc_called(this, "_ZN6S393C33v24Ev");}
void  S393C3 ::v25(){vfunc_called(this, "_ZN6S393C33v25Ev");}
S393C3 ::S393C3(){ note_ctor("S393C3", this);} // tgen

static void Test_S393C3()
{
  extern Class_Descriptor cd_S393C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S393C3, buf);
    S393C3 *dp, &lv = *(dp=new (buf) S393C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S393C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S393C3)");
    check_base_class_offset(lv, (S3423C8_nt*)(S393C4*), ABISELECT(8,4), "S393C3");
    check_base_class_offset(lv, (S393C4*), ABISELECT(8,4), "S393C3");
    check_field_offset(lv, s393c3f0, ABISELECT(16,8), "S393C3.s393c3f0");
    check_field_offset(lv, s393c3f1, ABISELECT(24,12), "S393C3.s393c3f1");
    test_class_info(&lv, &cd_S393C3);
    dp->~S393C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C3(Test_S393C3, "S393C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN6S393C3C1Ev();
extern void _ZN6S393C3D1Ev();
Name_Map name_map_S393C3[] = {
  NSPAIR(_ZN6S393C3C1Ev),
  NSPAIR(_ZN6S393C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S393C4;
extern VTBL_ENTRY _ZTI6S393C4[];
static Base_Class bases_S393C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S393C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C3[];
extern void _ZN6S393C3D1Ev();
extern void _ZN6S393C3D0Ev();
extern void _ZN6S393C32v3Ev();
extern void _ZN6S393C32v4Ev();
extern void _ZN6S393C32v5Ev();
extern void _ZN6S393C32v6Ev();
extern void _ZN6S393C32v7Ev();
extern void _ZN6S393C32v8Ev();
extern void _ZN6S393C32v9Ev();
extern void _ZN6S393C33v10Ev();
extern void _ZN6S393C33v11Ev();
extern void _ZN6S393C33v12Ev();
extern void _ZN6S393C33v13Ev();
extern void _ZN6S393C33v14Ev();
extern void _ZN6S393C33v15Ev();
extern void _ZN6S393C33v16Ev();
extern void _ZN6S393C33v17Ev();
extern void _ZN6S393C33v18Ev();
extern void _ZN6S393C33v19Ev();
extern void _ZN6S393C33v20Ev();
extern void _ZN6S393C33v21Ev();
extern void _ZN6S393C33v22Ev();
extern void _ZN6S393C33v23Ev();
extern void _ZN6S393C33v24Ev();
extern void _ZN6S393C33v25Ev();
static  VTBL_ENTRY vtc_S393C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S393C3[0]),
  (VTBL_ENTRY)&_ZN6S393C3D1Ev,
  (VTBL_ENTRY)&_ZN6S393C3D0Ev,
  (VTBL_ENTRY)&_ZN6S393C32v3Ev,
  (VTBL_ENTRY)&_ZN6S393C32v4Ev,
  (VTBL_ENTRY)&_ZN6S393C32v5Ev,
  (VTBL_ENTRY)&_ZN6S393C32v6Ev,
  (VTBL_ENTRY)&_ZN6S393C32v7Ev,
  (VTBL_ENTRY)&_ZN6S393C32v8Ev,
  (VTBL_ENTRY)&_ZN6S393C32v9Ev,
  (VTBL_ENTRY)&_ZN6S393C33v10Ev,
  (VTBL_ENTRY)&_ZN6S393C33v11Ev,
  (VTBL_ENTRY)&_ZN6S393C33v12Ev,
  (VTBL_ENTRY)&_ZN6S393C33v13Ev,
  (VTBL_ENTRY)&_ZN6S393C33v14Ev,
  (VTBL_ENTRY)&_ZN6S393C33v15Ev,
  (VTBL_ENTRY)&_ZN6S393C33v16Ev,
  (VTBL_ENTRY)&_ZN6S393C33v17Ev,
  (VTBL_ENTRY)&_ZN6S393C33v18Ev,
  (VTBL_ENTRY)&_ZN6S393C33v19Ev,
  (VTBL_ENTRY)&_ZN6S393C33v20Ev,
  (VTBL_ENTRY)&_ZN6S393C33v21Ev,
  (VTBL_ENTRY)&_ZN6S393C33v22Ev,
  (VTBL_ENTRY)&_ZN6S393C33v23Ev,
  (VTBL_ENTRY)&_ZN6S393C33v24Ev,
  (VTBL_ENTRY)&_ZN6S393C33v25Ev,
};
extern VTBL_ENTRY _ZTI6S393C3[];
extern  VTBL_ENTRY _ZTV6S393C3[];
Class_Descriptor cd_S393C3 = {  "S393C3", // class name
  bases_S393C3, 2,
  &(vtc_S393C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI6S393C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV6S393C3),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C2  : S393C3 {
  ::S3423C4_nt s393c2f0;
  virtual void  v26(); // _ZN6S393C23v26Ev
  virtual void  v27(); // _ZN6S393C23v27Ev
  virtual void  v28(); // _ZN6S393C23v28Ev
  virtual void  v29(); // _ZN6S393C23v29Ev
  virtual void  v30(); // _ZN6S393C23v30Ev
  virtual void  v31(); // _ZN6S393C23v31Ev
  virtual void  v32(); // _ZN6S393C23v32Ev
  virtual void  v33(); // _ZN6S393C23v33Ev
  virtual void  v34(); // _ZN6S393C23v34Ev
  virtual void  v35(); // _ZN6S393C23v35Ev
  virtual void  v36(); // _ZN6S393C23v36Ev
  ~S393C2(); // tgen
  S393C2(); // tgen
};
//SIG(-1 S393C2) C1{ BC2{ BC3{ BC4{ m Fi}} vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 FC5{ m Fp} Fp} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC6{ m Fi[2]}}


void  S393C2 ::v26(){vfunc_called(this, "_ZN6S393C23v26Ev");}
void  S393C2 ::v27(){vfunc_called(this, "_ZN6S393C23v27Ev");}
void  S393C2 ::v28(){vfunc_called(this, "_ZN6S393C23v28Ev");}
void  S393C2 ::v29(){vfunc_called(this, "_ZN6S393C23v29Ev");}
void  S393C2 ::v30(){vfunc_called(this, "_ZN6S393C23v30Ev");}
void  S393C2 ::v31(){vfunc_called(this, "_ZN6S393C23v31Ev");}
void  S393C2 ::v32(){vfunc_called(this, "_ZN6S393C23v32Ev");}
void  S393C2 ::v33(){vfunc_called(this, "_ZN6S393C23v33Ev");}
void  S393C2 ::v34(){vfunc_called(this, "_ZN6S393C23v34Ev");}
void  S393C2 ::v35(){vfunc_called(this, "_ZN6S393C23v35Ev");}
void  S393C2 ::v36(){vfunc_called(this, "_ZN6S393C23v36Ev");}
S393C2 ::~S393C2(){ note_dtor("S393C2", this);} // tgen
S393C2 ::S393C2(){ note_ctor("S393C2", this);} // tgen

static void Test_S393C2()
{
  extern Class_Descriptor cd_S393C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S393C2, buf);
    S393C2 *dp, &lv = *(dp=new (buf) S393C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S393C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S393C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S393C4*)(S393C3*), ABISELECT(8,4), "S393C2");
    check_base_class_offset(lv, (S393C4*)(S393C3*), ABISELECT(8,4), "S393C2");
    check_base_class_offset(lv, (S393C3*), 0, "S393C2");
    check_field_offset(lv, s393c2f0, ABISELECT(32,16), "S393C2.s393c2f0");
    test_class_info(&lv, &cd_S393C2);
    dp->~S393C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C2(Test_S393C2, "S393C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN6S393C2C1Ev();
extern void _ZN6S393C2D1Ev();
Name_Map name_map_S393C2[] = {
  NSPAIR(_ZN6S393C2C1Ev),
  NSPAIR(_ZN6S393C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S393C4;
extern VTBL_ENTRY _ZTI6S393C4[];
extern Class_Descriptor cd_S393C3;
extern VTBL_ENTRY _ZTI6S393C3[];
extern  VTBL_ENTRY _ZTV6S393C3[];
static Base_Class bases_S393C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S393C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S393C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S393C2[];
extern void _ZN6S393C2D1Ev();
extern void _ZN6S393C2D0Ev();
extern void _ZN6S393C32v3Ev();
extern void _ZN6S393C32v4Ev();
extern void _ZN6S393C32v5Ev();
extern void _ZN6S393C32v6Ev();
extern void _ZN6S393C32v7Ev();
extern void _ZN6S393C32v8Ev();
extern void _ZN6S393C32v9Ev();
extern void _ZN6S393C33v10Ev();
extern void _ZN6S393C33v11Ev();
extern void _ZN6S393C33v12Ev();
extern void _ZN6S393C33v13Ev();
extern void _ZN6S393C33v14Ev();
extern void _ZN6S393C33v15Ev();
extern void _ZN6S393C33v16Ev();
extern void _ZN6S393C33v17Ev();
extern void _ZN6S393C33v18Ev();
extern void _ZN6S393C33v19Ev();
extern void _ZN6S393C33v20Ev();
extern void _ZN6S393C33v21Ev();
extern void _ZN6S393C33v22Ev();
extern void _ZN6S393C33v23Ev();
extern void _ZN6S393C33v24Ev();
extern void _ZN6S393C33v25Ev();
extern void _ZN6S393C23v26Ev();
extern void _ZN6S393C23v27Ev();
extern void _ZN6S393C23v28Ev();
extern void _ZN6S393C23v29Ev();
extern void _ZN6S393C23v30Ev();
extern void _ZN6S393C23v31Ev();
extern void _ZN6S393C23v32Ev();
extern void _ZN6S393C23v33Ev();
extern void _ZN6S393C23v34Ev();
extern void _ZN6S393C23v35Ev();
extern void _ZN6S393C23v36Ev();
static  VTBL_ENTRY vtc_S393C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S393C2[0]),
  (VTBL_ENTRY)&_ZN6S393C2D1Ev,
  (VTBL_ENTRY)&_ZN6S393C2D0Ev,
  (VTBL_ENTRY)&_ZN6S393C32v3Ev,
  (VTBL_ENTRY)&_ZN6S393C32v4Ev,
  (VTBL_ENTRY)&_ZN6S393C32v5Ev,
  (VTBL_ENTRY)&_ZN6S393C32v6Ev,
  (VTBL_ENTRY)&_ZN6S393C32v7Ev,
  (VTBL_ENTRY)&_ZN6S393C32v8Ev,
  (VTBL_ENTRY)&_ZN6S393C32v9Ev,
  (VTBL_ENTRY)&_ZN6S393C33v10Ev,
  (VTBL_ENTRY)&_ZN6S393C33v11Ev,
  (VTBL_ENTRY)&_ZN6S393C33v12Ev,
  (VTBL_ENTRY)&_ZN6S393C33v13Ev,
  (VTBL_ENTRY)&_ZN6S393C33v14Ev,
  (VTBL_ENTRY)&_ZN6S393C33v15Ev,
  (VTBL_ENTRY)&_ZN6S393C33v16Ev,
  (VTBL_ENTRY)&_ZN6S393C33v17Ev,
  (VTBL_ENTRY)&_ZN6S393C33v18Ev,
  (VTBL_ENTRY)&_ZN6S393C33v19Ev,
  (VTBL_ENTRY)&_ZN6S393C33v20Ev,
  (VTBL_ENTRY)&_ZN6S393C33v21Ev,
  (VTBL_ENTRY)&_ZN6S393C33v22Ev,
  (VTBL_ENTRY)&_ZN6S393C33v23Ev,
  (VTBL_ENTRY)&_ZN6S393C33v24Ev,
  (VTBL_ENTRY)&_ZN6S393C33v25Ev,
  (VTBL_ENTRY)&_ZN6S393C23v26Ev,
  (VTBL_ENTRY)&_ZN6S393C23v27Ev,
  (VTBL_ENTRY)&_ZN6S393C23v28Ev,
  (VTBL_ENTRY)&_ZN6S393C23v29Ev,
  (VTBL_ENTRY)&_ZN6S393C23v30Ev,
  (VTBL_ENTRY)&_ZN6S393C23v31Ev,
  (VTBL_ENTRY)&_ZN6S393C23v32Ev,
  (VTBL_ENTRY)&_ZN6S393C23v33Ev,
  (VTBL_ENTRY)&_ZN6S393C23v34Ev,
  (VTBL_ENTRY)&_ZN6S393C23v35Ev,
  (VTBL_ENTRY)&_ZN6S393C23v36Ev,
};
extern VTBL_ENTRY _ZTI6S393C2[];
extern  VTBL_ENTRY _ZTV6S393C2[];
Class_Descriptor cd_S393C2 = {  "S393C2", // class name
  bases_S393C2, 3,
  &(vtc_S393C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI6S393C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S393C2),38, //virtual function table var
  2, // 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  S393C8_nt  {
  void *s393c8f0;
  void  mf393c8(); // _ZN9S393C8_nt7mf393c8Ev
};
//SIG(-1 S393C8_nt) C1{ m Fp}


void  S393C8_nt ::mf393c8(){}

//skip512 S393C8_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S393C1  : S393C2 {
  ::S393C8_nt s393c1f0;
  virtual  ~S393C1(); // _ZN6S393C1D1Ev
  virtual void  v1(); // _ZN6S393C12v1Ev
  virtual void  v2(); // _ZN6S393C12v2Ev
  S393C1(); // tgen
};
//SIG(1 S393C1) C1{ BC2{ BC3{ BC4{ BC5{ m Fi}} vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 FC6{ m Fp} Fp} v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 FC7{ m Fi[2]}} vd v1 v2 FC8{ m Fp}}


 S393C1 ::~S393C1(){ note_dtor("S393C1", this);}
void  S393C1 ::v1(){vfunc_called(this, "_ZN6S393C12v1Ev");}
void  S393C1 ::v2(){vfunc_called(this, "_ZN6S393C12v2Ev");}
S393C1 ::S393C1(){ note_ctor("S393C1", this);} // tgen

static void Test_S393C1()
{
  extern Class_Descriptor cd_S393C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S393C1, buf);
    S393C1 *dp, &lv = *(dp=new (buf) S393C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S393C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S393C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S393C4*)(S393C3*)(S393C2*), ABISELECT(8,4), "S393C1");
    check_base_class_offset(lv, (S393C4*)(S393C3*)(S393C2*), ABISELECT(8,4), "S393C1");
    check_base_class_offset(lv, (S393C3*)(S393C2*), 0, "S393C1");
    check_base_class_offset(lv, (S393C2*), 0, "S393C1");
    check_field_offset(lv, s393c1f0, ABISELECT(40,24), "S393C1.s393c1f0");
    test_class_info(&lv, &cd_S393C1);
    dp->~S393C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS393C1(Test_S393C1, "S393C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN6S393C1C1Ev();
extern void _ZN6S393C1D1Ev();
Name_Map name_map_S393C1[] = {
  NSPAIR(_ZN6S393C1C1Ev),
  NSPAIR(_ZN6S393C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S393C4;
extern VTBL_ENTRY _ZTI6S393C4[];
extern Class_Descriptor cd_S393C3;
extern VTBL_ENTRY _ZTI6S393C3[];
extern  VTBL_ENTRY _ZTV6S393C3[];
extern Class_Descriptor cd_S393C2;
extern VTBL_ENTRY _ZTI6S393C2[];
extern  VTBL_ENTRY _ZTV6S393C2[];
static Base_Class bases_S393C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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_S393C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S393C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S393C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S393C1[];
extern void _ZN6S393C1D1Ev();
extern void _ZN6S393C1D0Ev();
extern void _ZN6S393C32v3Ev();
extern void _ZN6S393C32v4Ev();
extern void _ZN6S393C32v5Ev();
extern void _ZN6S393C32v6Ev();
extern void _ZN6S393C32v7Ev();
extern void _ZN6S393C32v8Ev();
extern void _ZN6S393C32v9Ev();
extern void _ZN6S393C33v10Ev();
extern void _ZN6S393C33v11Ev();
extern void _ZN6S393C33v12Ev();
extern void _ZN6S393C33v13Ev();
extern void _ZN6S393C33v14Ev();
extern void _ZN6S393C33v15Ev();
extern void _ZN6S393C33v16Ev();
extern void _ZN6S393C33v17Ev();
extern void _ZN6S393C33v18Ev();
extern void _ZN6S393C33v19Ev();
extern void _ZN6S393C33v20Ev();
extern void _ZN6S393C33v21Ev();
extern void _ZN6S393C33v22Ev();
extern void _ZN6S393C33v23Ev();
extern void _ZN6S393C33v24Ev();
extern void _ZN6S393C33v25Ev();
extern void _ZN6S393C23v26Ev();
extern void _ZN6S393C23v27Ev();
extern void _ZN6S393C23v28Ev();
extern void _ZN6S393C23v29Ev();
extern void _ZN6S393C23v30Ev();
extern void _ZN6S393C23v31Ev();
extern void _ZN6S393C23v32Ev();
extern void _ZN6S393C23v33Ev();
extern void _ZN6S393C23v34Ev();
extern void _ZN6S393C23v35Ev();
extern void _ZN6S393C23v36Ev();
extern void _ZN6S393C12v1Ev();
extern void _ZN6S393C12v2Ev();
static  VTBL_ENTRY vtc_S393C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S393C1[0]),
  (VTBL_ENTRY)&_ZN6S393C1D1Ev,
  (VTBL_ENTRY)&_ZN6S393C1D0Ev,
  (VTBL_ENTRY)&_ZN6S393C32v3Ev,
  (VTBL_ENTRY)&_ZN6S393C32v4Ev,
  (VTBL_ENTRY)&_ZN6S393C32v5Ev,
  (VTBL_ENTRY)&_ZN6S393C32v6Ev,
  (VTBL_ENTRY)&_ZN6S393C32v7Ev,
  (VTBL_ENTRY)&_ZN6S393C32v8Ev,
  (VTBL_ENTRY)&_ZN6S393C32v9Ev,
  (VTBL_ENTRY)&_ZN6S393C33v10Ev,
  (VTBL_ENTRY)&_ZN6S393C33v11Ev,
  (VTBL_ENTRY)&_ZN6S393C33v12Ev,
  (VTBL_ENTRY)&_ZN6S393C33v13Ev,
  (VTBL_ENTRY)&_ZN6S393C33v14Ev,
  (VTBL_ENTRY)&_ZN6S393C33v15Ev,
  (VTBL_ENTRY)&_ZN6S393C33v16Ev,
  (VTBL_ENTRY)&_ZN6S393C33v17Ev,
  (VTBL_ENTRY)&_ZN6S393C33v18Ev,
  (VTBL_ENTRY)&_ZN6S393C33v19Ev,
  (VTBL_ENTRY)&_ZN6S393C33v20Ev,
  (VTBL_ENTRY)&_ZN6S393C33v21Ev,
  (VTBL_ENTRY)&_ZN6S393C33v22Ev,
  (VTBL_ENTRY)&_ZN6S393C33v23Ev,
  (VTBL_ENTRY)&_ZN6S393C33v24Ev,
  (VTBL_ENTRY)&_ZN6S393C33v25Ev,
  (VTBL_ENTRY)&_ZN6S393C23v26Ev,
  (VTBL_ENTRY)&_ZN6S393C23v27Ev,
  (VTBL_ENTRY)&_ZN6S393C23v28Ev,
  (VTBL_ENTRY)&_ZN6S393C23v29Ev,
  (VTBL_ENTRY)&_ZN6S393C23v30Ev,
  (VTBL_ENTRY)&_ZN6S393C23v31Ev,
  (VTBL_ENTRY)&_ZN6S393C23v32Ev,
  (VTBL_ENTRY)&_ZN6S393C23v33Ev,
  (VTBL_ENTRY)&_ZN6S393C23v34Ev,
  (VTBL_ENTRY)&_ZN6S393C23v35Ev,
  (VTBL_ENTRY)&_ZN6S393C23v36Ev,
  (VTBL_ENTRY)&_ZN6S393C12v1Ev,
  (VTBL_ENTRY)&_ZN6S393C12v2Ev,
};
extern VTBL_ENTRY _ZTI6S393C1[];
extern  VTBL_ENTRY _ZTV6S393C1[];
Class_Descriptor cd_S393C1 = {  "S393C1", // class name
  bases_S393C1, 4,
  &(vtc_S393C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI6S393C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S393C1),40, //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  S7755C3  : virtual S4228C37 , S4228C27 {
  ~S7755C3(); // tgen
  S7755C3(); // tgen
};
//SIG(-1 S7755C3) C1{ VBC2{ m} BC3{ m}}


S7755C3 ::~S7755C3(){ note_dtor("S7755C3", this);} // tgen
S7755C3 ::S7755C3(){ note_ctor("S7755C3", this);} // tgen

static void Test_S7755C3()
{
  extern Class_Descriptor cd_S7755C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7755C3, buf);
    S7755C3 *dp, &lv = *(dp=new (buf) S7755C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7755C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C3)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7755C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S7755C3");
    test_class_info(&lv, &cd_S7755C3);
    dp->~S7755C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C3(Test_S7755C3, "S7755C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7755C3C1Ev();
extern void _ZN7S7755C3D1Ev();
Name_Map name_map_S7755C3[] = {
  NSPAIR(_ZN7S7755C3C1Ev),
  NSPAIR(_ZN7S7755C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7755C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C3[];
static  VTBL_ENTRY vtc_S7755C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
extern VTBL_ENTRY _ZTV7S7755C3[];
static  VTT_ENTRY vtt_S7755C3[] = {
  {&(_ZTV7S7755C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
Class_Descriptor cd_S7755C3 = {  "S7755C3", // class name
  bases_S7755C3, 2,
  &(vtc_S7755C3[0]), // expected_vtbl_contents
  &(vtt_S7755C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7755C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7755C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C3),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  S7755C2  : virtual S7755C3 {
  virtual  ~S7755C2(); // _ZN7S7755C2D2Ev
  S7755C2(); // tgen
};
//SIG(-1 S7755C2) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S7755C2 ::~S7755C2(){ note_dtor("S7755C2", this);}
S7755C2 ::S7755C2(){ note_ctor("S7755C2", this);} // tgen

static void Test_S7755C2()
{
  extern Class_Descriptor cd_S7755C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7755C2, buf);
    S7755C2 *dp, &lv = *(dp=new (buf) S7755C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7755C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C2)");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*), 0, "S7755C2");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*), 0, "S7755C2");
    check_base_class_offset(lv, (S7755C3*), 0, "S7755C2");
    test_class_info(&lv, &cd_S7755C2);
    dp->~S7755C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C2(Test_S7755C2, "S7755C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7755C2C1Ev();
extern void _ZN7S7755C2D2Ev();
Name_Map name_map_S7755C2[] = {
  NSPAIR(_ZN7S7755C2C1Ev),
  NSPAIR(_ZN7S7755C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
static Base_Class bases_S7755C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C2[];
extern void _ZN7S7755C2D1Ev();
extern void _ZN7S7755C2D0Ev();
static  VTBL_ENTRY vtc_S7755C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C2[0]),
  (VTBL_ENTRY)&_ZN7S7755C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7755C2[];
static  VTBL_ENTRY _tg__ZTV7S7755C3__7S7755C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTT_ENTRY vtt_S7755C2[] = {
  {&(_ZTV7S7755C2[4]),  4,6},
  {&(_ZTV7S7755C2[4]),  4,6},
  {&(_tg__ZTV7S7755C3__7S7755C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C2[];
extern  VTBL_ENTRY _ZTV7S7755C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C2[];
Class_Descriptor cd_S7755C2 = {  "S7755C2", // class name
  bases_S7755C2, 3,
  &(vtc_S7755C2[0]), // expected_vtbl_contents
  &(vtt_S7755C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7755C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7755C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C2),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  S7755C8  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s7755c8f0;
  ~S7755C8(); // tgen
  S7755C8(); // tgen
};
//SIG(-1 S7755C8) C1{ BC2{ m} VBC3{ m} FC2}


S7755C8 ::~S7755C8(){ note_dtor("S7755C8", this);} // tgen
S7755C8 ::S7755C8(){ note_ctor("S7755C8", this);} // tgen

static void Test_S7755C8()
{
  extern Class_Descriptor cd_S7755C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7755C8, buf);
    S7755C8 *dp, &lv = *(dp=new (buf) S7755C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7755C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C8)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7755C8");
    check_base_class_offset(lv, (S4228C27*), 0, "S7755C8");
    check_field_offset(lv, s7755c8f0, ABISELECT(8,4), "S7755C8.s7755c8f0");
    test_class_info(&lv, &cd_S7755C8);
    dp->~S7755C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C8(Test_S7755C8, "S7755C8", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7755C8C1Ev();
extern void _ZN7S7755C8D1Ev();
Name_Map name_map_S7755C8[] = {
  NSPAIR(_ZN7S7755C8C1Ev),
  NSPAIR(_ZN7S7755C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7755C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7755C8[];
static  VTBL_ENTRY vtc_S7755C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
extern VTBL_ENTRY _ZTV7S7755C8[];
static  VTT_ENTRY vtt_S7755C8[] = {
  {&(_ZTV7S7755C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
Class_Descriptor cd_S7755C8 = {  "S7755C8", // class name
  bases_S7755C8, 2,
  &(vtc_S7755C8[0]), // expected_vtbl_contents
  &(vtt_S7755C8[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7755C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7755C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C8),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  S7755C7  : S4228C27 , S7755C3 , S7755C8 {
  virtual  ~S7755C7(); // _ZN7S7755C7D2Ev
  S7755C7(); // tgen
};
//SIG(-1 S7755C7) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S7755C7 ::~S7755C7(){ note_dtor("S7755C7", this);}
S7755C7 ::S7755C7(){ note_ctor("S7755C7", this);} // tgen

static void Test_S7755C7()
{
  extern Class_Descriptor cd_S7755C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7755C7, buf);
    S7755C7 *dp, &lv = *(dp=new (buf) S7755C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7755C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C7)");
    /*is_ambiguous_... S7755C7::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(8,4), "S7755C7");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*), 0, "S7755C7");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*), 0, "S7755C7");
    check_base_class_offset(lv, (S7755C3*), 0, "S7755C7");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(8,4), "S7755C7");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(17,9), "S7755C7");
    check_base_class_offset(lv, (S7755C8*), ABISELECT(8,4), "S7755C7");
    test_class_info(&lv, &cd_S7755C7);
    dp->~S7755C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C7(Test_S7755C7, "S7755C7", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S7755C7C1Ev();
extern void _ZN7S7755C7D2Ev();
Name_Map name_map_S7755C7[] = {
  NSPAIR(_ZN7S7755C7C1Ev),
  NSPAIR(_ZN7S7755C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
static Base_Class bases_S7755C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    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_S7755C8,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C7[];
extern void _ZN7S7755C7D1Ev();
extern void _ZN7S7755C7D0Ev();
static  VTBL_ENTRY vtc_S7755C7[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
  (VTBL_ENTRY)&_ZN7S7755C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C7D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
};
extern VTBL_ENTRY _ZTV7S7755C7[];
static  VTBL_ENTRY _tg__ZTV7S7755C3__7S7755C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C7[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C7[] = {
  {&(_ZTV7S7755C7[4]),  4,9},
  {&(_tg__ZTV7S7755C3__7S7755C7[3]),  3,3},
  {&(_tg__ZTV7S7755C8__7S7755C7[3]),  3,3},
  {&(_ZTV7S7755C7[9]),  9,9},
};
extern VTBL_ENTRY _ZTI7S7755C7[];
extern  VTBL_ENTRY _ZTV7S7755C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C7[];
Class_Descriptor cd_S7755C7 = {  "S7755C7", // class name
  bases_S7755C7, 7,
  &(vtc_S7755C7[0]), // expected_vtbl_contents
  &(vtt_S7755C7[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S7755C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7755C7),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C7),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C9  : S4228C27 , virtual S4228C37 , virtual S7755C8 {
  void *s7755c9f0;
  ~S7755C9(); // tgen
  S7755C9(); // tgen
};
//SIG(-1 S7755C9) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7755C9 ::~S7755C9(){ note_dtor("S7755C9", this);} // tgen
S7755C9 ::S7755C9(){ note_ctor("S7755C9", this);} // tgen

static void Test_S7755C9()
{
  extern Class_Descriptor cd_S7755C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7755C9, buf);
    S7755C9 *dp, &lv = *(dp=new (buf) S7755C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7755C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C9)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7755C9");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7755C9");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(16,8), "S7755C9");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(25,13), "S7755C9");
    check_base_class_offset(lv, (S7755C8*), ABISELECT(16,8), "S7755C9");
    check_field_offset(lv, s7755c9f0, ABISELECT(8,4), "S7755C9.s7755c9f0");
    test_class_info(&lv, &cd_S7755C9);
    dp->~S7755C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C9(Test_S7755C9, "S7755C9", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7755C9C1Ev();
extern void _ZN7S7755C9D1Ev();
Name_Map name_map_S7755C9[] = {
  NSPAIR(_ZN7S7755C9C1Ev),
  NSPAIR(_ZN7S7755C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
static Base_Class bases_S7755C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C9[];
static  VTBL_ENTRY vtc_S7755C9[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
extern VTBL_ENTRY _ZTV7S7755C9[];
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C9[] = {
  {&(_ZTV7S7755C9[5]),  5,8},
  {&(_ZTV7S7755C9[8]),  8,8},
  {&(_tg__ZTV7S7755C8__7S7755C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
Class_Descriptor cd_S7755C9 = {  "S7755C9", // class name
  bases_S7755C9, 5,
  &(vtc_S7755C9[0]), // expected_vtbl_contents
  &(vtt_S7755C9[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7755C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7755C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C9),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C10  : virtual S7755C9 {
  char s7755c10f0:8;
  ~S7755C10(); // tgen
  S7755C10(); // tgen
};
//SIG(-1 S7755C10) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S7755C10 ::~S7755C10(){ note_dtor("S7755C10", this);} // tgen
S7755C10 ::S7755C10(){ note_ctor("S7755C10", this);} // tgen

static void Test_S7755C10()
{
  extern Class_Descriptor cd_S7755C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7755C10, buf);
    S7755C10 *dp, &lv = *(dp=new (buf) S7755C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7755C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C10)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(16,8), "S7755C10");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C10");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(32,16), "S7755C10");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C10");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(32,16), "S7755C10");
    check_base_class_offset(lv, (S7755C9*), ABISELECT(16,8), "S7755C10");
    set_bf_and_test(lv, s7755c10f0, ABISELECT(8,4), 0, 8, 1, "S7755C10");
    set_bf_and_test(lv, s7755c10f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S7755C10");
    test_class_info(&lv, &cd_S7755C10);
    dp->~S7755C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C10(Test_S7755C10, "S7755C10", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S7755C10C1Ev();
extern void _ZN8S7755C10D1Ev();
Name_Map name_map_S7755C10[] = {
  NSPAIR(_ZN8S7755C10C1Ev),
  NSPAIR(_ZN8S7755C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
static Base_Class bases_S7755C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C8,    ABISELECT(32,16), //bcp->offset
    11, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(16,8), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C10[];
static  VTBL_ENTRY vtc_S7755C10[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
extern VTBL_ENTRY _ZTV8S7755C10[];
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__8S7755C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C10[] = {
  {&(_ZTV8S7755C10[6]),  6,14},
  {&(_ZTV8S7755C10[11]),  11,14},
  {&(_ZTV8S7755C10[14]),  14,14},
  {&(_tg__ZTV7S7755C9__8S7755C10[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__8S7755C10[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C10[];
extern  VTBL_ENTRY _ZTV8S7755C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C10[];
Class_Descriptor cd_S7755C10 = {  "S7755C10", // class name
  bases_S7755C10, 6,
  &(vtc_S7755C10[0]), // expected_vtbl_contents
  &(vtt_S7755C10[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S7755C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7755C10),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C10),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C13  : S3423C8_nt , virtual S7755C8 , S7755C9 , S4228C27 {
  char s7755c13f0;
  virtual  ~S7755C13(); // _ZN8S7755C13D2Ev
  S7755C13(); // tgen
};
//SIG(-1 S7755C13) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7755C13 ::~S7755C13(){ note_dtor("S7755C13", this);}
S7755C13 ::S7755C13(){ note_ctor("S7755C13", this);} // tgen

static void Test_S7755C13()
{
  extern Class_Descriptor cd_S7755C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7755C13, buf);
    S7755C13 *dp, &lv = *(dp=new (buf) S7755C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7755C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C13)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7755C13");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(24,16), "S7755C13");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(33,21), "S7755C13");
    check_base_class_offset(lv, (S7755C8*), ABISELECT(24,16), "S7755C13");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(24,16), "S7755C13");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), 0, "S7755C13");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C13");
    check_base_class_offset(lv, (S7755C9*), 0, "S7755C13");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S7755C13");
    check_field_offset(lv, s7755c13f0, ABISELECT(20,12), "S7755C13.s7755c13f0");
    test_class_info(&lv, &cd_S7755C13);
    dp->~S7755C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C13(Test_S7755C13, "S7755C13", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S7755C13C1Ev();
extern void _ZN8S7755C13D2Ev();
Name_Map name_map_S7755C13[] = {
  NSPAIR(_ZN8S7755C13C1Ev),
  NSPAIR(_ZN8S7755C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7755C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C13[];
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY vtc_S7755C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
extern VTBL_ENTRY _ZTV8S7755C13[];
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__8S7755C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C13[] = {
  {&(_ZTV8S7755C13[5]),  5,10},
  {&(_tg__ZTV7S7755C9__8S7755C13[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__8S7755C13[3]),  3,3},
  {&(_ZTV8S7755C13[10]),  10,10},
  {&(_tg__ZTV7S7755C8__8S7755C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
Class_Descriptor cd_S7755C13 = {  "S7755C13", // class name
  bases_S7755C13, 8,
  &(vtc_S7755C13[0]), // expected_vtbl_contents
  &(vtt_S7755C13[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S7755C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7755C13),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C12  : virtual S7755C13 {
  int s7755c12f0;
  virtual  ~S7755C12(); // _ZN8S7755C12D2Ev
  S7755C12(); // tgen
};
//SIG(-1 S7755C12) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7755C12 ::~S7755C12(){ note_dtor("S7755C12", this);}
S7755C12 ::S7755C12(){ note_ctor("S7755C12", this);} // tgen

static void Test_S7755C12()
{
  extern Class_Descriptor cd_S7755C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7755C12, buf);
    S7755C12 *dp, &lv = *(dp=new (buf) S7755C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7755C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C12)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7755C13*), ABISELECT(32,16), "S7755C12");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(40,24), "S7755C12");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C12");
    check_base_class_offset(lv, (S7755C8*)(S7755C13*), ABISELECT(40,24), "S7755C12");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C13*), ABISELECT(40,24), "S7755C12");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C13*), ABISELECT(16,8), "S7755C12");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C13*), 0, "S7755C12");
    check_base_class_offset(lv, (S7755C9*)(S7755C13*), ABISELECT(16,8), "S7755C12");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C13*), ABISELECT(36,20), "S7755C12");
    check_base_class_offset(lv, (S7755C13*), ABISELECT(16,8), "S7755C12");
    check_field_offset(lv, s7755c12f0, ABISELECT(8,4), "S7755C12.s7755c12f0");
    test_class_info(&lv, &cd_S7755C12);
    dp->~S7755C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C12(Test_S7755C12, "S7755C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7755C12C1Ev();
extern void _ZN8S7755C12D2Ev();
Name_Map name_map_S7755C12[] = {
  NSPAIR(_ZN8S7755C12C1Ev),
  NSPAIR(_ZN8S7755C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C13;
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
static Base_Class bases_S7755C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C8,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C9,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7755C13,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C12[];
extern void _ZN8S7755C12D1Ev();
extern void _ZN8S7755C12D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev)();
extern void ABISELECT(_ZThn16_N8S7755C12D1Ev,_ZThn8_N8S7755C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev)();
extern void ABISELECT(_ZThn16_N8S7755C12D0Ev,_ZThn8_N8S7755C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C12[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&_ZN8S7755C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C12D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
};
extern VTBL_ENTRY _ZTV8S7755C12[];
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C13__8S7755C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C13__8S7755C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C13__8S7755C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13__8S7755C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C12[] = {
  {&(_ZTV8S7755C12[6]),  6,19},
  {&(_ZTV8S7755C12[14]),  14,19},
  {&(_ZTV8S7755C12[19]),  19,19},
  {&(_tg__ZTV8S7755C13__8S7755C12[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C13__8S7755C12[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C13__8S7755C12[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C13__8S7755C12[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C12[];
extern  VTBL_ENTRY _ZTV8S7755C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C12[];
static VTBL_ENTRY alt_thunk_names234[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C12D0Ev,_ZThn8_N8S7755C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C12D1Ev,_ZThn8_N8S7755C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C12 = {  "S7755C12", // class name
  bases_S7755C12, 9,
  &(vtc_S7755C12[0]), // expected_vtbl_contents
  &(vtt_S7755C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7755C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7755C12),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C12),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names234,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C6  : virtual S7755C7 , virtual S7755C9 , S7755C10 , virtual S3423C8_nt , S7755C12 {
  ~S7755C6(); // tgen
  S7755C6(); // tgen
};
//SIG(-1 S7755C6) C1{ VBC2{ BC3{ m} BC4{ VBC5{ m} BC3} BC6{ BC5 VBC3 FC5} vd} VBC7{ BC3 VBC5 VBC6 Fp} BC8{ VBC7 Fc:8} VBC9{ m Fi} BC10{ VBC11{ BC9 VBC6 BC7 BC3 vd Fc} vd Fi}}


S7755C6 ::~S7755C6(){ note_dtor("S7755C6", this);} // tgen
S7755C6 ::S7755C6(){ note_ctor("S7755C6", this);} // tgen

static void Test_S7755C6()
{
  extern Class_Descriptor cd_S7755C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S7755C6, buf);
    S7755C6 *dp, &lv = *(dp=new (buf) S7755C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S7755C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C6)");
    /*is_ambiguous_... S7755C7::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C7*), ABISELECT(40,20), "S7755C6");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*)(S7755C7*), 0, "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C6");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C13*), 0, "S7755C6");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*)(S7755C7*), ABISELECT(32,16), "S7755C6");
    check_base_class_offset(lv, (S7755C3*)(S7755C7*), ABISELECT(32,16), "S7755C6");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*)(S7755C7*), ABISELECT(40,20), "S7755C6");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*)(S7755C7*), 0, "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C6");
    check_base_class_offset(lv, (S7755C8*)(S7755C7*), ABISELECT(40,20), "S7755C6");
    check_base_class_offset(lv, (S7755C7*), ABISELECT(32,16), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(56,28), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(72,36), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(72,36), "S7755C6");
    check_base_class_offset(lv, (S7755C8*)(S7755C13*), ABISELECT(72,36), "S7755C6");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C13*), ABISELECT(72,36), "S7755C6");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*), ABISELECT(56,28), "S7755C6");
    check_base_class_offset(lv, (S7755C9*)(S7755C10*), ABISELECT(56,28), "S7755C6");
    check_base_class_offset(lv, (S7755C10*), 0, "S7755C6");
    /*is_ambiguous_... S7755C6::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(84,44), "S7755C6");
    check_base_class_offset(lv, (S3423C8_nt*)(S7755C13*), ABISELECT(104,56), "S7755C6");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C13*), ABISELECT(88,48), "S7755C6");
    check_base_class_offset(lv, (S7755C9*)(S7755C13*), ABISELECT(88,48), "S7755C6");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C13*), ABISELECT(108,60), "S7755C6");
    check_base_class_offset(lv, (S7755C13*)(S7755C12*), ABISELECT(88,48), "S7755C6");
    check_base_class_offset(lv, (S7755C12*), ABISELECT(16,8), "S7755C6");
    test_class_info(&lv, &cd_S7755C6);
    dp->~S7755C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C6(Test_S7755C6, "S7755C6", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN7S7755C6C1Ev();
extern void _ZN7S7755C6D1Ev();
Name_Map name_map_S7755C6[] = {
  NSPAIR(_ZN7S7755C6C1Ev),
  NSPAIR(_ZN7S7755C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C7;
extern VTBL_ENTRY _ZTI7S7755C7[];
extern  VTBL_ENTRY _ZTV7S7755C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C7[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C10;
extern VTBL_ENTRY _ZTI8S7755C10[];
extern  VTBL_ENTRY _ZTV8S7755C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C13;
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
extern Class_Descriptor cd_S7755C12;
extern VTBL_ENTRY _ZTI8S7755C12[];
extern  VTBL_ENTRY _ZTV8S7755C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C12[];
static Base_Class bases_S7755C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    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
    3, //immediately_derived
  0, 0},
  {&cd_S7755C3,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C8,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7755C7,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    10, //immediately_derived
  0, 0},
  {&cd_S7755C8,    ABISELECT(72,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7755C10,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_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
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    16, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(108,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
    18, //immediately_derived
  0, 0},
  {&cd_S7755C13,    ABISELECT(88,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7755C12,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C6[];
extern void _ZN7S7755C6D1Ev();
extern void _ZN7S7755C6D0Ev();
extern void ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7755C6D1Ev,_ZThn16_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn32_N7S7755C6D0Ev,_ZThn16_N7S7755C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn88_N7S7755C6D1Ev,_ZThn48_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn88_N7S7755C6D0Ev,_ZThn48_N7S7755C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C6[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&_ZN7S7755C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S7755C6[];
static  VTBL_ENTRY _tg__ZTV8S7755C10__7S7755C6[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C10__7S7755C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C10__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
extern void _ZN8S7755C12D1Ev();
extern void _ZN8S7755C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C12__7S7755C6[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&_ZN8S7755C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev)();
extern void ABISELECT(_ZThn72_N8S7755C12D1Ev,_ZThn40_N8S7755C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev)();
extern void ABISELECT(_ZThn72_N8S7755C12D0Ev,_ZThn40_N8S7755C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C13__8S7755C12__7S7755C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C12__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
};
extern void _ZN7S7755C7D1Ev();
extern void _ZN7S7755C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C7__7S7755C6[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
  (VTBL_ENTRY)&_ZN7S7755C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C37S7755C7__7S7755C6[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C87S7755C7__7S7755C6[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C7__7S7755C6[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__7S7755C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__A1__7S7755C6[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C13__7S7755C6[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C13__A1__7S7755C6[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13__7S7755C6[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
static  VTT_ENTRY vtt_S7755C6[] = {
  {&(_ZTV7S7755C6[9]),  9,45},
  {&(_tg__ZTV8S7755C10__7S7755C6[6]),  6,6},
  {&(_tg__ZTV7S7755C9__8S7755C10__7S7755C6[5]),  5,5},
  {&(_tg__ZTV7S7755C8__8S7755C10__7S7755C6[3]),  3,3},
  {&(_tg__ZTV8S7755C12__7S7755C6[6]),  6,8},
  {&(_tg__ZTV8S7755C13__8S7755C12__7S7755C6[6]),  6,8},
  {&(_tg__ZTV7S7755C8__8S7755C12__7S7755C6[3]),  3,3},
  {&(_ZTV7S7755C6[24]),  24,45},
  {&(_ZTV7S7755C6[29]),  29,45},
  {&(_ZTV7S7755C6[34]),  34,45},
  {&(_ZTV7S7755C6[37]),  37,45},
  {&(_ZTV7S7755C6[17]),  17,45},
  {&(_ZTV7S7755C6[43]),  43,45},
  {&(_tg__ZTV7S7755C7__7S7755C6[4]),  4,6},
  {&(_tg__ZTV7S7755C37S7755C7__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C87S7755C7__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C8__7S7755C7__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C9__7S7755C6[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C8__A1__7S7755C6[3]),  3,3},
  {&(_tg__ZTV8S7755C13__7S7755C6[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C13__A1__7S7755C6[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C6[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C13__7S7755C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C6[];
extern  VTBL_ENTRY _ZTV7S7755C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C6[];
static VTBL_ENTRY alt_thunk_names235[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7755C12D0Ev,_ZThn40_N8S7755C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7755C12D1Ev,_ZThn40_N8S7755C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7755C6D0Ev,_ZThn48_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7755C6D1Ev,_ZThn48_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7755C6D0Ev,_ZThn16_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7755C6D1Ev,_ZThn16_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C6 = {  "S7755C6", // class name
  bases_S7755C6, 20,
  &(vtc_S7755C6[0]), // expected_vtbl_contents
  &(vtt_S7755C6[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI7S7755C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7755C6),45, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C6),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names235,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C15  : S7755C9 {
  __tsi64 s7755c15f0[10];
  virtual  ~S7755C15(); // _ZN8S7755C15D2Ev
  S7755C15(); // tgen
};
//SIG(-1 S7755C15) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7755C15 ::~S7755C15(){ note_dtor("S7755C15", this);}
S7755C15 ::S7755C15(){ note_ctor("S7755C15", this);} // tgen

static void Test_S7755C15()
{
  extern Class_Descriptor cd_S7755C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7755C15, buf);
    S7755C15 *dp, &lv = *(dp=new (buf) S7755C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7755C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C15)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), 0, "S7755C15");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C15");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(96,88), "S7755C15");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(105,93), "S7755C15");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(96,88), "S7755C15");
    check_base_class_offset(lv, (S7755C9*), 0, "S7755C15");
    check_field_offset(lv, s7755c15f0, ABISELECT(16,8), "S7755C15.s7755c15f0");
    test_class_info(&lv, &cd_S7755C15);
    dp->~S7755C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C15(Test_S7755C15, "S7755C15", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7755C15C1Ev();
extern void _ZN8S7755C15D2Ev();
Name_Map name_map_S7755C15[] = {
  NSPAIR(_ZN8S7755C15C1Ev),
  NSPAIR(_ZN8S7755C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
static Base_Class bases_S7755C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    ABISELECT(96,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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C8,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7755C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C15[];
extern void _ZN8S7755C15D1Ev();
extern void _ZN8S7755C15D0Ev();
static  VTBL_ENTRY vtc_S7755C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
  (VTBL_ENTRY)&_ZN8S7755C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C15D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
};
extern VTBL_ENTRY _ZTV8S7755C15[];
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__8S7755C15[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C15[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTT_ENTRY vtt_S7755C15[] = {
  {&(_ZTV8S7755C15[5]),  5,10},
  {&(_tg__ZTV7S7755C9__8S7755C15[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__8S7755C15[3]),  3,3},
  {&(_ZTV8S7755C15[10]),  10,10},
  {&(_tg__ZTV7S7755C8__8S7755C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C15[];
extern  VTBL_ENTRY _ZTV8S7755C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C15[];
Class_Descriptor cd_S7755C15 = {  "S7755C15", // class name
  bases_S7755C15, 6,
  &(vtc_S7755C15[0]), // expected_vtbl_contents
  &(vtt_S7755C15[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7755C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7755C15),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C14  : virtual S7755C15 , virtual S7755C9 {
  __tsi64 s7755c14f0;
  virtual  ~S7755C14(); // _ZN8S7755C14D2Ev
  S7755C14(); // tgen
};
//SIG(-1 S7755C14) C1{ VBC2{ BC3{ BC4{ m} VBC5{ m} VBC6{ BC5 VBC4 FC5} Fp} vd FL[10]} VBC3 vd FL}


 S7755C14 ::~S7755C14(){ note_dtor("S7755C14", this);}
S7755C14 ::S7755C14(){ note_ctor("S7755C14", this);} // tgen

static void Test_S7755C14()
{
  extern Class_Descriptor cd_S7755C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,30)];
    init_test(&cd_S7755C14, buf);
    S7755C14 *dp, &lv = *(dp=new (buf) S7755C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,116), "sizeof(S7755C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C14)");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C15*), ABISELECT(16,12), "S7755C14");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C15*), 0, "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C14");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(112,100), "S7755C14");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*), 0, "S7755C14");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C15*), ABISELECT(112,100), "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(112,100), "S7755C14");
    check_base_class_offset(lv, (S7755C9*)(S7755C15*), ABISELECT(16,12), "S7755C14");
    check_base_class_offset(lv, (S7755C15*), ABISELECT(16,12), "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(128,108), "S7755C14");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*), ABISELECT(128,108), "S7755C14");
    check_field_offset(lv, s7755c14f0, ABISELECT(8,4), "S7755C14.s7755c14f0");
    test_class_info(&lv, &cd_S7755C14);
    dp->~S7755C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C14(Test_S7755C14, "S7755C14", ABISELECT(144,116));

#else // __cplusplus

extern void _ZN8S7755C14C1Ev();
extern void _ZN8S7755C14D2Ev();
Name_Map name_map_S7755C14[] = {
  NSPAIR(_ZN8S7755C14C1Ev),
  NSPAIR(_ZN8S7755C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C15;
extern VTBL_ENTRY _ZTI8S7755C15[];
extern  VTBL_ENTRY _ZTV8S7755C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C15[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
static Base_Class bases_S7755C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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
    5, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    ABISELECT(112,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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C8,    ABISELECT(112,100), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7755C9,    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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7755C15,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    ABISELECT(128,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
    8, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(128,108), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7755C14[];
extern void _ZN8S7755C14D1Ev();
extern void _ZN8S7755C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7755C14D1Ev,_ZThn12_N8S7755C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7755C14D0Ev,_ZThn12_N8S7755C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C14[] = {
  ABISELECT(128,108),
  0,
  ABISELECT(112,100),
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&_ZN8S7755C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C14D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(96,88),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev),
  ABISELECT(-112,-100),
  ABISELECT(-112,-100),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  ABISELECT(-128,-108),
  ABISELECT(-16,-8),
  ABISELECT(-128,-108),
  ABISELECT(-128,-108),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
};
extern VTBL_ENTRY _ZTV8S7755C14[];
extern void _ZN8S7755C15D1Ev();
extern void _ZN8S7755C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C15__8S7755C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(96,88),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
  (VTBL_ENTRY)&_ZN8S7755C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C15__8S7755C14[] = {
  ABISELECT(-16,-12),
  ABISELECT(96,88),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C15__8S7755C14[] = {
  ABISELECT(-112,-100),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C15__8S7755C14[] = {
  ABISELECT(-112,-100),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C14[] = {
  ABISELECT(-112,-100),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__A1__8S7755C14[] = {
  ABISELECT(-128,-108),
  ABISELECT(-16,-8),
  ABISELECT(-128,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__A1__8S7755C14[] = {
  ABISELECT(-112,-100),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTT_ENTRY vtt_S7755C14[] = {
  {&(_ZTV8S7755C14[7]),  7,25},
  {&(_ZTV8S7755C14[15]),  15,25},
  {&(_ZTV8S7755C14[20]),  20,25},
  {&(_ZTV8S7755C14[25]),  25,25},
  {&(_tg__ZTV8S7755C15__8S7755C14[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C15__8S7755C14[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C15__8S7755C14[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C15__8S7755C14[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C14[3]),  3,3},
  {&(_tg__ZTV7S7755C9__A1__8S7755C14[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__A1__8S7755C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7755C14[];
extern  VTBL_ENTRY _ZTV8S7755C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C14[];
static VTBL_ENTRY alt_thunk_names236[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C14D0Ev,_ZThn12_N8S7755C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7755C14D1Ev,_ZThn12_N8S7755C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C14 = {  "S7755C14", // class name
  bases_S7755C14, 9,
  &(vtc_S7755C14[0]), // expected_vtbl_contents
  &(vtt_S7755C14[0]), // expected_vtt_contents
  ABISELECT(144,116), // object size
  NSPAIRA(_ZTI8S7755C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7755C14),25, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7755C14),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names236,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7755C1  : S7755C2 , S7755C6 , S7755C14 {
  ::S19763C18_nt s7755c1f0;
  ~S7755C1(); // tgen
  S7755C1(); // tgen
};
//SIG(1 S7755C1) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m}} vd} BC6{ VBC7{ BC5 BC3 BC8{ BC4 VBC5 FC4} vd} VBC9{ BC5 VBC4 VBC8 Fp} BC10{ VBC9 Fc:8} VBC11{ m Fi} BC12{ VBC13{ BC11 VBC8 BC9 BC5 vd Fc} vd Fi}} BC14{ VBC15{ BC9 vd FL[10]} VBC9 vd FL} FC16{}}


S7755C1 ::~S7755C1(){ note_dtor("S7755C1", this);} // tgen
S7755C1 ::S7755C1(){ note_ctor("S7755C1", this);} // tgen

static void Test_S7755C1()
{
  extern Class_Descriptor cd_S7755C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,44)];
    init_test(&cd_S7755C1, buf);
    S7755C1 *dp, &lv = *(dp=new (buf) S7755C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,172), "sizeof(S7755C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7755C1)");
    /*is_ambiguous_... S7755C1::S7755C3 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C3*), 0, "S7755C1");
    check_base_class_offset(lv, (S4228C37*)(S7755C3*)(S7755C7*), 0, "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*), 0, "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C13*), 0, "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C9*)(S7755C15*), 0, "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C3 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C3*), 0, "S7755C1");
    check_base_class_offset(lv, (S7755C3*)(S7755C2*), 0, "S7755C1");
    check_base_class_offset(lv, (S7755C2*), 0, "S7755C1");
    /*is_ambiguous_... S7755C7::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C7*), ABISELECT(72,40), "S7755C1");
    check_base_class_offset(lv, (S4228C27*)(S7755C3*)(S7755C7*), ABISELECT(64,36), "S7755C1");
    check_base_class_offset(lv, (S7755C3*)(S7755C7*), ABISELECT(64,36), "S7755C1");
    check_base_class_offset(lv, (S4228C37*)(S7755C8*)(S7755C7*), ABISELECT(72,40), "S7755C1");
    check_base_class_offset(lv, (S4228C27*)(S7755C8*)(S7755C7*), ABISELECT(81,45), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C8*), ABISELECT(81,45), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C7*), ABISELECT(72,40), "S7755C1");
    check_base_class_offset(lv, (S7755C7*)(S7755C6*), ABISELECT(64,36), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C9 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*), ABISELECT(88,48), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7755C8*), ABISELECT(104,56), "S7755C1");
    /*is_ambiguous_... S7755C1::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C8*)(S7755C9*), ABISELECT(104,56), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C13*), ABISELECT(104,56), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C13*), ABISELECT(104,56), "S7755C1");
    check_base_class_offset(lv, (S7755C8*)(S7755C9*)(S7755C15*), ABISELECT(104,56), "S7755C1");
    /*is_ambiguous_... S7755C6::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*)(S7755C6*), ABISELECT(88,48), "S7755C1");
    check_base_class_offset(lv, (S7755C9*)(S7755C10*)(S7755C6*), ABISELECT(88,48), "S7755C1");
    /*is_ambiguous_... S7755C14::S7755C9 */ AMB_check_base_class_offset(lv, (S7755C9*)(S7755C14*), ABISELECT(88,48), "S7755C1");
    check_base_class_offset(lv, (S7755C10*)(S7755C6*), ABISELECT(8,4), "S7755C1");
    /*is_ambiguous_... S7755C6::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S7755C6*), ABISELECT(116,64), "S7755C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7755C13*), ABISELECT(136,76), "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C13*), ABISELECT(120,68), "S7755C1");
    check_base_class_offset(lv, (S7755C9*)(S7755C13*), ABISELECT(120,68), "S7755C1");
    /*is_ambiguous_... S7755C13::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C13*), ABISELECT(140,80), "S7755C1");
    check_base_class_offset(lv, (S7755C13*)(S7755C12*)(S7755C6*), ABISELECT(120,68), "S7755C1");
    check_base_class_offset(lv, (S7755C12*)(S7755C6*), ABISELECT(24,12), "S7755C1");
    check_base_class_offset(lv, (S7755C6*), ABISELECT(8,4), "S7755C1");
    /*is_ambiguous_... S7755C9::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7755C9*)(S7755C15*), ABISELECT(144,84), "S7755C1");
    check_base_class_offset(lv, (S7755C9*)(S7755C15*), ABISELECT(144,84), "S7755C1");
    check_base_class_offset(lv, (S7755C15*)(S7755C14*), ABISELECT(144,84), "S7755C1");
    check_base_class_offset(lv, (S7755C14*), ABISELECT(40,20), "S7755C1");
    check_field_offset(lv, s7755c1f0, ABISELECT(56,32), "S7755C1.s7755c1f0");
    test_class_info(&lv, &cd_S7755C1);
    dp->~S7755C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7755C1(Test_S7755C1, "S7755C1", ABISELECT(240,172));

#else // __cplusplus

extern void _ZN7S7755C1C1Ev();
extern void _ZN7S7755C1D1Ev();
Name_Map name_map_S7755C1[] = {
  NSPAIR(_ZN7S7755C1C1Ev),
  NSPAIR(_ZN7S7755C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S7755C2;
extern VTBL_ENTRY _ZTI7S7755C2[];
extern  VTBL_ENTRY _ZTV7S7755C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C3;
extern VTBL_ENTRY _ZTI7S7755C3[];
extern  VTBL_ENTRY _ZTV7S7755C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C7;
extern VTBL_ENTRY _ZTI7S7755C7[];
extern  VTBL_ENTRY _ZTV7S7755C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C7[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7755C8;
extern VTBL_ENTRY _ZTI7S7755C8[];
extern  VTBL_ENTRY _ZTV7S7755C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C8[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C10;
extern VTBL_ENTRY _ZTI8S7755C10[];
extern  VTBL_ENTRY _ZTV8S7755C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C13;
extern VTBL_ENTRY _ZTI8S7755C13[];
extern  VTBL_ENTRY _ZTV8S7755C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C13[];
extern Class_Descriptor cd_S7755C12;
extern VTBL_ENTRY _ZTI8S7755C12[];
extern  VTBL_ENTRY _ZTV8S7755C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C12[];
extern Class_Descriptor cd_S7755C6;
extern VTBL_ENTRY _ZTI7S7755C6[];
extern  VTBL_ENTRY _ZTV7S7755C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7755C9;
extern VTBL_ENTRY _ZTI7S7755C9[];
extern  VTBL_ENTRY _ZTV7S7755C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C9[];
extern Class_Descriptor cd_S7755C15;
extern VTBL_ENTRY _ZTI8S7755C15[];
extern  VTBL_ENTRY _ZTV8S7755C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C15[];
extern Class_Descriptor cd_S7755C14;
extern VTBL_ENTRY _ZTI8S7755C14[];
extern  VTBL_ENTRY _ZTV8S7755C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7755C14[];
static Base_Class bases_S7755C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7755C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7755C2,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    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
    10, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7755C3,    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
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(81,45), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7755C8,    ABISELECT(72,40), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7755C7,    ABISELECT(64,36), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    13, //immediately_derived
  0, 0},
  {&cd_S7755C8,    ABISELECT(104,56), //bcp->offset
    56, //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
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S7755C9,    ABISELECT(88,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7755C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(116,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
    23, //immediately_derived
  0, 1},
  {&cd_S3423C8_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
    21, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    19, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(140,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_S7755C13,    ABISELECT(120,68), //bcp->offset
    59, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7755C12,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7755C6,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    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
    25, //immediately_derived
  0, 0},
  {&cd_S7755C9,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7755C15,    ABISELECT(144,84), //bcp->offset
    67, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7755C14,    ABISELECT(40,20), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7755C1[];
extern void _ZN7S7755C1D1Ev();
extern void _ZN7S7755C1D0Ev();
extern void ABISELECT(_ZThn8_N7S7755C1D1Ev,_ZThn4_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7755C1D0Ev,_ZThn4_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7755C1D1Ev,_ZThn12_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7755C1D0Ev,_ZThn12_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S7755C1D1Ev,_ZThn20_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7755C1D0Ev,_ZThn20_N7S7755C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S7755C1D1Ev,_ZTv0_n20_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7755C1D1Ev,_ZThn36_N7S7755C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7755C1D0Ev,_ZTv0_n20_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7755C1D0Ev,_ZThn36_N7S7755C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7755C1D1Ev,_ZThn68_N7S7755C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7755C1D0Ev,_ZThn68_N7S7755C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7755C1D1Ev,_ZThn84_N7S7755C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7755C1D0Ev,_ZThn84_N7S7755C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7755C1[] = {
  ABISELECT(144,84),
  ABISELECT(120,68),
  ABISELECT(116,64),
  ABISELECT(104,56),
  ABISELECT(88,48),
  ABISELECT(81,45),
  ABISELECT(64,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&_ZN7S7755C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C1D0Ev,
  ABISELECT(112,64),
  ABISELECT(108,60),
  ABISELECT(56,32),
  ABISELECT(73,41),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7755C1D1Ev,_ZThn4_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7755C1D0Ev,_ZThn4_N7S7755C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(57,33),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7755C1D1Ev,_ZThn12_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7755C1D0Ev,_ZThn12_N7S7755C1D0Ev),
  ABISELECT(48,28),
  ABISELECT(41,25),
  ABISELECT(64,36),
  ABISELECT(-40,-20),
  ABISELECT(104,64),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7755C1D1Ev,_ZThn20_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S7755C1D0Ev,_ZThn20_N7S7755C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(17,9),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C1D1Ev,_ZTv0_n20_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C1D0Ev,_ZTv0_n20_N7S7755C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  ABISELECT(-23,-11),
  ABISELECT(-104,-56),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  ABISELECT(-120,-68),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev),
  ABISELECT(-144,-84),
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7755C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7755C1[];
extern void _ZN7S7755C2D1Ev();
extern void _ZN7S7755C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C2__7S7755C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C2[0]),
  (VTBL_ENTRY)&_ZN7S7755C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C2D0Ev,
};
extern void _ZN7S7755C6D1Ev();
extern void _ZN7S7755C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C6__7S7755C1[] = {
  ABISELECT(112,64),
  ABISELECT(108,60),
  ABISELECT(56,32),
  ABISELECT(73,41),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&_ZN7S7755C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C6D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7755C107S7755C6__7S7755C1[] = {
  ABISELECT(73,41),
  ABISELECT(96,52),
  ABISELECT(-8,-4),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__8S7755C107S7755C6__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C107S7755C6__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S7755C10[0]),
};
extern void _ZN8S7755C12D1Ev();
extern void _ZN8S7755C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C127S7755C6__7S7755C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(57,33),
  ABISELECT(80,44),
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&_ZN8S7755C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev)();
extern void ABISELECT(_ZThn96_N8S7755C12D1Ev,_ZThn56_N8S7755C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev)();
extern void ABISELECT(_ZThn96_N8S7755C12D0Ev,_ZThn56_N8S7755C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C13__8S7755C127S7755C6__7S7755C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C127S7755C6__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S7755C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S7755C6D1Ev,_ZThn32_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S7755C6D0Ev,_ZThn32_N7S7755C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7755C7__7S7755C6__7S7755C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(17,9),
  ABISELECT(-64,-36),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C87S7755C7__7S7755C6__7S7755C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__7S7755C6__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__A1__7S7755C6__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
};
extern void ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7755C12__7S7755C6__7S7755C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(57,33),
  ABISELECT(80,44),
  ABISELECT(96,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D1Ev,_ZThn8_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S7755C6D0Ev,_ZThn8_N7S7755C6D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7755C6D1Ev,_ZThn64_N7S7755C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7755C6D0Ev,_ZThn64_N7S7755C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C13__7S7755C6__7S7755C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7755C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev),
};
extern void _ZN8S7755C14D1Ev();
extern void _ZN8S7755C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C14__7S7755C1[] = {
  ABISELECT(48,28),
  ABISELECT(41,25),
  ABISELECT(64,36),
  ABISELECT(-40,-20),
  ABISELECT(104,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&_ZN8S7755C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C14D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev)();
extern void ABISELECT(_ZThn104_N8S7755C14D1Ev,_ZThn64_N8S7755C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev)();
extern void ABISELECT(_ZThn104_N8S7755C14D0Ev,_ZThn64_N8S7755C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7755C15__8S7755C14__7S7755C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C14__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__A1__8S7755C14__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7755C14[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C3__7S7755C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
extern void _ZN7S7755C7D1Ev();
extern void _ZN7S7755C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7755C7__7S7755C1[] = {
  ABISELECT(17,9),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
  (VTBL_ENTRY)&_ZN7S7755C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7755C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C37S7755C7__A1__7S7755C1[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C87S7755C7__7S7755C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C7__7S7755C1[] = {
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7755C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C9__7S7755C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(16,8),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C9__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__A1__7S7755C1[] = {
  ABISELECT(-23,-11),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C8[0]),
};
extern void _ZN8S7755C13D1Ev();
extern void _ZN8S7755C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C13__7S7755C1[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
  (VTBL_ENTRY)&_ZN8S7755C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C13__A1__7S7755C1[] = {
  ABISELECT(-39,-23),
  ABISELECT(-16,-12),
  ABISELECT(-120,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C13__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S7755C13[0]),
};
extern void _ZN8S7755C15D1Ev();
extern void _ZN8S7755C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7755C15__7S7755C1[] = {
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
  (VTBL_ENTRY)&_ZN8S7755C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7755C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7755C98S7755C15__A2__7S7755C1[] = {
  ABISELECT(-63,-39),
  ABISELECT(-40,-28),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__7S7755C98S7755C15__A2__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI7S7755C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7755C8__8S7755C15__7S7755C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(40,28),
  (VTBL_ENTRY)&(_ZTI8S7755C15[0]),
};
static  VTT_ENTRY vtt_S7755C1[] = {
  {&(_ZTV7S7755C1[11]),  11,75},
  {&(_tg__ZTV7S7755C2__7S7755C1[4]),  4,6},
  {&(_tg__ZTV7S7755C2__7S7755C1[4]),  4,6},
  {&(_tg__ZTV7S7755C6__7S7755C1[9]),  9,11},
  {&(_tg__ZTV8S7755C107S7755C6__7S7755C1[6]),  6,6},
  {&(_tg__ZTV7S7755C9__8S7755C107S7755C6__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__8S7755C107S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C127S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV8S7755C13__8S7755C127S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV7S7755C8__8S7755C127S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C7__7S7755C6__7S7755C1[5]),  5,7},
  {&(_tg__ZTV7S7755C87S7755C7__7S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C9__7S7755C6__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__A1__7S7755C6__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C12__7S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV8S7755C13__7S7755C6__7S7755C1[6]),  6,8},
  {&(_tg__ZTV8S7755C14__7S7755C1[7]),  7,9},
  {&(_tg__ZTV8S7755C15__8S7755C14__7S7755C1[6]),  6,8},
  {&(_tg__ZTV7S7755C8__8S7755C14__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C9__A1__8S7755C14__7S7755C1[5]),  5,5},
  {&(_ZTV7S7755C1[11]),  11,75},
  {&(_ZTV7S7755C1[22]),  22,75},
  {&(_ZTV7S7755C1[46]),  46,75},
  {&(_ZTV7S7755C1[51]),  51,75},
  {&(_ZTV7S7755C1[56]),  56,75},
  {&(_ZTV7S7755C1[59]),  59,75},
  {&(_ZTV7S7755C1[30]),  30,75},
  {&(_ZTV7S7755C1[65]),  65,75},
  {&(_ZTV7S7755C1[39]),  39,75},
  {&(_ZTV7S7755C1[73]),  73,75},
  {&(_tg__ZTV7S7755C3__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C7__7S7755C1[4]),  4,6},
  {&(_tg__ZTV7S7755C37S7755C7__A1__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C87S7755C7__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__7S7755C7__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C9__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C9__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__A1__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C13__7S7755C1[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C13__A1__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C13__A1__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C13__7S7755C1[3]),  3,3},
  {&(_tg__ZTV8S7755C15__7S7755C1[5]),  5,7},
  {&(_tg__ZTV7S7755C98S7755C15__A2__7S7755C1[5]),  5,5},
  {&(_tg__ZTV7S7755C8__7S7755C98S7755C15__A2__7S7755C1[3]),  3,3},
  {&(_tg__ZTV7S7755C8__8S7755C15__7S7755C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7755C1[];
extern  VTBL_ENTRY _ZTV7S7755C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7755C1[];
static VTBL_ENTRY alt_thunk_names237[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D0Ev,_ZTv0_n24_N8S7755C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7755C14D0Ev,_ZThn64_N8S7755C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C14D1Ev,_ZTv0_n24_N8S7755C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7755C14D1Ev,_ZThn64_N8S7755C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D0Ev,_ZTv0_n24_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7755C6D0Ev,_ZThn64_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C6D1Ev,_ZTv0_n24_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7755C6D1Ev,_ZThn64_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D0Ev,_ZTv0_n20_N7S7755C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7755C6D0Ev,_ZThn32_N7S7755C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C6D1Ev,_ZTv0_n20_N7S7755C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7755C6D1Ev,_ZThn32_N7S7755C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D0Ev,_ZTv0_n24_N8S7755C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7755C12D0Ev,_ZThn56_N8S7755C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7755C12D1Ev,_ZTv0_n24_N8S7755C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7755C12D1Ev,_ZThn56_N8S7755C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C1D0Ev,_ZTv0_n24_N7S7755C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7755C1D0Ev,_ZThn84_N7S7755C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7755C1D0Ev,_ZThn68_N7S7755C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7755C1D1Ev,_ZTv0_n24_N7S7755C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7755C1D1Ev,_ZThn84_N7S7755C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7755C1D1Ev,_ZThn68_N7S7755C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C1D0Ev,_ZTv0_n20_N7S7755C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7755C1D0Ev,_ZThn36_N7S7755C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7755C1D1Ev,_ZTv0_n20_N7S7755C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7755C1D1Ev,_ZThn36_N7S7755C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7755C1 = {  "S7755C1", // class name
  bases_S7755C1, 28,
  &(vtc_S7755C1[0]), // expected_vtbl_contents
  &(vtt_S7755C1[0]), // expected_vtt_contents
  ABISELECT(240,172), // object size
  NSPAIRA(_ZTI7S7755C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7755C1),75, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7755C1),46, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names237,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C7  : S4228C27 , virtual S4228C37 {
  ::S4228C27 s7208c7f0;
  ~S7208C7(); // tgen
  S7208C7(); // tgen
};
//SIG(-1 S7208C7) C1{ BC2{ m} VBC3{ m} FC2}


S7208C7 ::~S7208C7(){ note_dtor("S7208C7", this);} // tgen
S7208C7 ::S7208C7(){ note_ctor("S7208C7", this);} // tgen

static void Test_S7208C7()
{
  extern Class_Descriptor cd_S7208C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7208C7, buf);
    S7208C7 *dp, &lv = *(dp=new (buf) S7208C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7208C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C7)");
    check_base_class_offset(lv, (S4228C27*), 0, "S7208C7");
    check_base_class_offset(lv, (S4228C37*), 0, "S7208C7");
    check_field_offset(lv, s7208c7f0, ABISELECT(8,4), "S7208C7.s7208c7f0");
    test_class_info(&lv, &cd_S7208C7);
    dp->~S7208C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C7(Test_S7208C7, "S7208C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7208C7C1Ev();
extern void _ZN7S7208C7D1Ev();
Name_Map name_map_S7208C7[] = {
  NSPAIR(_ZN7S7208C7C1Ev),
  NSPAIR(_ZN7S7208C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7208C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7208C7[];
static  VTBL_ENTRY vtc_S7208C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern VTBL_ENTRY _ZTV7S7208C7[];
static  VTT_ENTRY vtt_S7208C7[] = {
  {&(_ZTV7S7208C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
Class_Descriptor cd_S7208C7 = {  "S7208C7", // class name
  bases_S7208C7, 2,
  &(vtc_S7208C7[0]), // expected_vtbl_contents
  &(vtt_S7208C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7208C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7208C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C7),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  S7208C4  : S4228C37 , virtual S4228C27 , virtual S7208C7 {
  void *s7208c4f0;
  ~S7208C4(); // tgen
  S7208C4(); // tgen
};
//SIG(-1 S7208C4) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7208C4 ::~S7208C4(){ note_dtor("S7208C4", this);} // tgen
S7208C4 ::S7208C4(){ note_ctor("S7208C4", this);} // tgen

static void Test_S7208C4()
{
  extern Class_Descriptor cd_S7208C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7208C4, buf);
    S7208C4 *dp, &lv = *(dp=new (buf) S7208C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7208C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C4)");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7208C4");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7208C4");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(16,8), "S7208C4");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(25,13), "S7208C4");
    check_base_class_offset(lv, (S7208C7*), ABISELECT(16,8), "S7208C4");
    check_field_offset(lv, s7208c4f0, ABISELECT(8,4), "S7208C4.s7208c4f0");
    test_class_info(&lv, &cd_S7208C4);
    dp->~S7208C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C4(Test_S7208C4, "S7208C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7208C4C1Ev();
extern void _ZN7S7208C4D1Ev();
Name_Map name_map_S7208C4[] = {
  NSPAIR(_ZN7S7208C4C1Ev),
  NSPAIR(_ZN7S7208C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
static Base_Class bases_S7208C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C4[];
static  VTBL_ENTRY vtc_S7208C4[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
extern VTBL_ENTRY _ZTV7S7208C4[];
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C4[] = {
  {&(_ZTV7S7208C4[5]),  5,8},
  {&(_ZTV7S7208C4[8]),  8,8},
  {&(_tg__ZTV7S7208C7__7S7208C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
Class_Descriptor cd_S7208C4 = {  "S7208C4", // class name
  bases_S7208C4, 5,
  &(vtc_S7208C4[0]), // expected_vtbl_contents
  &(vtt_S7208C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7208C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7208C4),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C4),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C8  : S3423C8_nt , virtual S7208C7 , S7208C4 , S4228C37 {
  char s7208c8f0;
  virtual  ~S7208C8(); // _ZN7S7208C8D2Ev
  S7208C8(); // tgen
};
//SIG(-1 S7208C8) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7208C8 ::~S7208C8(){ note_dtor("S7208C8", this);}
S7208C8 ::S7208C8(){ note_ctor("S7208C8", this);} // tgen

static void Test_S7208C8()
{
  extern Class_Descriptor cd_S7208C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7208C8, buf);
    S7208C8 *dp, &lv = *(dp=new (buf) S7208C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7208C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C8)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7208C8");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(24,16), "S7208C8");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(33,21), "S7208C8");
    check_base_class_offset(lv, (S7208C7*), ABISELECT(24,16), "S7208C8");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*), ABISELECT(24,16), "S7208C8");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*), 0, "S7208C8");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*), 0, "S7208C8");
    check_base_class_offset(lv, (S7208C4*), 0, "S7208C8");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(20,12), "S7208C8");
    check_field_offset(lv, s7208c8f0, ABISELECT(20,12), "S7208C8.s7208c8f0");
    test_class_info(&lv, &cd_S7208C8);
    dp->~S7208C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C8(Test_S7208C8, "S7208C8", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7208C8C1Ev();
extern void _ZN7S7208C8D2Ev();
Name_Map name_map_S7208C8[] = {
  NSPAIR(_ZN7S7208C8C1Ev),
  NSPAIR(_ZN7S7208C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7208C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C8[];
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY vtc_S7208C8[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern VTBL_ENTRY _ZTV7S7208C8[];
static  VTBL_ENTRY _tg__ZTV7S7208C4__7S7208C8[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4__7S7208C8[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C8[] = {
  {&(_ZTV7S7208C8[5]),  5,10},
  {&(_tg__ZTV7S7208C4__7S7208C8[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C4__7S7208C8[3]),  3,3},
  {&(_ZTV7S7208C8[10]),  10,10},
  {&(_tg__ZTV7S7208C7__7S7208C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
Class_Descriptor cd_S7208C8 = {  "S7208C8", // class name
  bases_S7208C8, 8,
  &(vtc_S7208C8[0]), // expected_vtbl_contents
  &(vtt_S7208C8[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7208C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7208C8),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C10  : virtual S7208C8 {
  int s7208c10f0;
  virtual  ~S7208C10(); // _ZN8S7208C10D2Ev
  S7208C10(); // tgen
};
//SIG(-1 S7208C10) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7208C10 ::~S7208C10(){ note_dtor("S7208C10", this);}
S7208C10 ::S7208C10(){ note_ctor("S7208C10", this);} // tgen

static void Test_S7208C10()
{
  extern Class_Descriptor cd_S7208C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7208C10, buf);
    S7208C10 *dp, &lv = *(dp=new (buf) S7208C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7208C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C10)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(32,16), "S7208C10");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(40,24), "S7208C10");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), 0, "S7208C10");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(40,24), "S7208C10");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(40,24), "S7208C10");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(16,8), "S7208C10");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C10");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(16,8), "S7208C10");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(36,20), "S7208C10");
    check_base_class_offset(lv, (S7208C8*), ABISELECT(16,8), "S7208C10");
    check_field_offset(lv, s7208c10f0, ABISELECT(8,4), "S7208C10.s7208c10f0");
    test_class_info(&lv, &cd_S7208C10);
    dp->~S7208C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C10(Test_S7208C10, "S7208C10", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7208C10C1Ev();
extern void _ZN8S7208C10D2Ev();
Name_Map name_map_S7208C10[] = {
  NSPAIR(_ZN8S7208C10C1Ev),
  NSPAIR(_ZN8S7208C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
static Base_Class bases_S7208C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C7,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C4,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C10[];
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C10[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern VTBL_ENTRY _ZTV8S7208C10[];
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__8S7208C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C10[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__8S7208C10[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C10[] = {
  {&(_ZTV8S7208C10[6]),  6,19},
  {&(_ZTV8S7208C10[14]),  14,19},
  {&(_ZTV8S7208C10[19]),  19,19},
  {&(_tg__ZTV7S7208C8__8S7208C10[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__8S7208C10[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C10[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__8S7208C10[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
static VTBL_ENTRY alt_thunk_names238[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C10 = {  "S7208C10", // class name
  bases_S7208C10, 9,
  &(vtc_S7208C10[0]), // expected_vtbl_contents
  &(vtt_S7208C10[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7208C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7208C10),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C10),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names238,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C12  : virtual S4228C27 , S4228C37 {
  ~S7208C12(); // tgen
  S7208C12(); // tgen
};
//SIG(-1 S7208C12) C1{ VBC2{ m} BC3{ m}}


S7208C12 ::~S7208C12(){ note_dtor("S7208C12", this);} // tgen
S7208C12 ::S7208C12(){ note_ctor("S7208C12", this);} // tgen

static void Test_S7208C12()
{
  extern Class_Descriptor cd_S7208C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7208C12, buf);
    S7208C12 *dp, &lv = *(dp=new (buf) S7208C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7208C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C12)");
    check_base_class_offset(lv, (S4228C27*), 0, "S7208C12");
    check_base_class_offset(lv, (S4228C37*), 0, "S7208C12");
    test_class_info(&lv, &cd_S7208C12);
    dp->~S7208C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C12(Test_S7208C12, "S7208C12", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7208C12C1Ev();
extern void _ZN8S7208C12D1Ev();
Name_Map name_map_S7208C12[] = {
  NSPAIR(_ZN8S7208C12C1Ev),
  NSPAIR(_ZN8S7208C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S7208C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C12[];
static  VTBL_ENTRY vtc_S7208C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern VTBL_ENTRY _ZTV8S7208C12[];
static  VTT_ENTRY vtt_S7208C12[] = {
  {&(_ZTV8S7208C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
Class_Descriptor cd_S7208C12 = {  "S7208C12", // class name
  bases_S7208C12, 2,
  &(vtc_S7208C12[0]), // expected_vtbl_contents
  &(vtt_S7208C12[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7208C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7208C12),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C12),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  S7208C11  : S4228C37 , S7208C12 , S7208C7 {
  virtual  ~S7208C11(); // _ZN8S7208C11D2Ev
  S7208C11(); // tgen
};
//SIG(-1 S7208C11) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S7208C11 ::~S7208C11(){ note_dtor("S7208C11", this);}
S7208C11 ::S7208C11(){ note_ctor("S7208C11", this);} // tgen

static void Test_S7208C11()
{
  extern Class_Descriptor cd_S7208C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S7208C11, buf);
    S7208C11 *dp, &lv = *(dp=new (buf) S7208C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S7208C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C11)");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(8,4), "S7208C11");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C11");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C11");
    check_base_class_offset(lv, (S7208C12*), 0, "S7208C11");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(8,4), "S7208C11");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(17,9), "S7208C11");
    check_base_class_offset(lv, (S7208C7*), ABISELECT(8,4), "S7208C11");
    test_class_info(&lv, &cd_S7208C11);
    dp->~S7208C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C11(Test_S7208C11, "S7208C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S7208C11C1Ev();
extern void _ZN8S7208C11D2Ev();
Name_Map name_map_S7208C11[] = {
  NSPAIR(_ZN8S7208C11C1Ev),
  NSPAIR(_ZN8S7208C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
static Base_Class bases_S7208C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    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_S7208C7,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C11[];
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY vtc_S7208C11[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
extern VTBL_ENTRY _ZTV8S7208C11[];
static  VTBL_ENTRY _tg__ZTV8S7208C12__8S7208C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C11[] = {
  {&(_ZTV8S7208C11[4]),  4,9},
  {&(_tg__ZTV8S7208C12__8S7208C11[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11[3]),  3,3},
  {&(_ZTV8S7208C11[9]),  9,9},
};
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
Class_Descriptor cd_S7208C11 = {  "S7208C11", // class name
  bases_S7208C11, 7,
  &(vtc_S7208C11[0]), // expected_vtbl_contents
  &(vtt_S7208C11[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S7208C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7208C11),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C11),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C3  : S7208C4 , virtual S7208C8 , virtual S7208C10 , S4228C37 , virtual S7208C11 {
  int s7208c3f0[8];
  ~S7208C3(); // tgen
  S7208C3(); // tgen
};
//SIG(-1 S7208C3) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} VBC6{ BC7{ m Fi} VBC5 BC2 BC3 vd Fc} VBC8{ VBC6 vd Fi} BC3 VBC9{ BC3 BC10{ VBC4 BC3} BC5 vd} Fi[8]}


S7208C3 ::~S7208C3(){ note_dtor("S7208C3", this);} // tgen
S7208C3 ::S7208C3(){ note_ctor("S7208C3", this);} // tgen

static void Test_S7208C3()
{
  extern Class_Descriptor cd_S7208C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S7208C3, buf);
    S7208C3 *dp, &lv = *(dp=new (buf) S7208C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S7208C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C3)");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*), 0, "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*), 0, "S7208C3");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C3");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*)(S7208C11*), 0, "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(48,40), "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(57,45), "S7208C3");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*)(S7208C11*), ABISELECT(57,45), "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C7*)(S7208C4*), ABISELECT(48,40), "S7208C3");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(48,40), "S7208C3");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(48,40), "S7208C3");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C4*), 0, "S7208C3");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(80,56), "S7208C3");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(64,48), "S7208C3");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(64,48), "S7208C3");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(84,60), "S7208C3");
    check_base_class_offset(lv, (S7208C8*), ABISELECT(64,48), "S7208C3");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(64,48), "S7208C3");
    check_base_class_offset(lv, (S7208C10*), ABISELECT(88,64), "S7208C3");
    /*is_ambiguous_... S7208C3::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(16,8), "S7208C3");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C11*), ABISELECT(112,76), "S7208C3");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*)(S7208C11*), ABISELECT(104,72), "S7208C3");
    check_base_class_offset(lv, (S7208C12*)(S7208C11*), ABISELECT(104,72), "S7208C3");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*)(S7208C11*), ABISELECT(112,76), "S7208C3");
    check_base_class_offset(lv, (S7208C7*)(S7208C11*), ABISELECT(112,76), "S7208C3");
    check_base_class_offset(lv, (S7208C11*), ABISELECT(104,72), "S7208C3");
    check_field_offset(lv, s7208c3f0, ABISELECT(16,8), "S7208C3.s7208c3f0");
    test_class_info(&lv, &cd_S7208C3);
    dp->~S7208C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C3(Test_S7208C3, "S7208C3", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S7208C3C1Ev();
extern void _ZN7S7208C3D1Ev();
Name_Map name_map_S7208C3[] = {
  NSPAIR(_ZN7S7208C3C1Ev),
  NSPAIR(_ZN7S7208C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C11;
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
static Base_Class bases_S7208C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    ABISELECT(48,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(57,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_S7208C7,    ABISELECT(48,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(84,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(64,48), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7208C10,    ABISELECT(88,64), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C12,    ABISELECT(104,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7208C7,    ABISELECT(112,76), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7208C11,    ABISELECT(104,72), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C3[];
extern void _ZN7S7208C3D1Ev();
extern void _ZN7S7208C3D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C3[] = {
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&_ZN7S7208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C3D0Ev,
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  ABISELECT(-64,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev),
  ABISELECT(-88,-64),
  ABISELECT(-88,-64),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(-47,-27),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev),
  ABISELECT(-55,-31),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
extern VTBL_ENTRY _ZTV7S7208C3[];
static  VTBL_ENTRY _tg__ZTV7S7208C4__7S7208C3[] = {
  ABISELECT(57,45),
  ABISELECT(48,40),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C3[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__A1__7S7208C3[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C3[] = {
  ABISELECT(-88,-64),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__7S7208C3[] = {
  ABISELECT(24,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-48),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__7S7208C3[] = {
  ABISELECT(9,5),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C3[] = {
  ABISELECT(-47,-27),
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7208C128S7208C11__7S7208C3[] = {
  ABISELECT(-104,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C3[] = {
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11__7S7208C3[] = {
  ABISELECT(-55,-31),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
static  VTT_ENTRY vtt_S7208C3[] = {
  {&(_ZTV7S7208C3[8]),  8,40},
  {&(_tg__ZTV7S7208C4__7S7208C3[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C4__7S7208C3[3]),  3,3},
  {&(_ZTV7S7208C3[13]),  13,40},
  {&(_ZTV7S7208C3[19]),  19,40},
  {&(_ZTV7S7208C3[28]),  28,40},
  {&(_ZTV7S7208C3[35]),  35,40},
  {&(_ZTV7S7208C3[40]),  40,40},
  {&(_tg__ZTV7S7208C7__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C3[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__A1__7S7208C3[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__7S7208C3[3]),  3,3},
  {&(_tg__ZTV8S7208C10__7S7208C3[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__7S7208C3[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__7S7208C3[3]),  3,3},
  {&(_tg__ZTV8S7208C11__7S7208C3[4]),  4,6},
  {&(_tg__ZTV8S7208C128S7208C11__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C3[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11__7S7208C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C3[];
extern  VTBL_ENTRY _ZTV7S7208C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C3[];
static VTBL_ENTRY alt_thunk_names239[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C3 = {  "S7208C3", // class name
  bases_S7208C3, 19,
  &(vtc_S7208C3[0]), // expected_vtbl_contents
  &(vtt_S7208C3[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S7208C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7208C3),40, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C3),20, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names239,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C15  : S7208C4 {
  __tsi64 s7208c15f0[10];
  virtual  ~S7208C15(); // _ZN8S7208C15D2Ev
  S7208C15(); // tgen
};
//SIG(-1 S7208C15) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7208C15 ::~S7208C15(){ note_dtor("S7208C15", this);}
S7208C15 ::S7208C15(){ note_ctor("S7208C15", this);} // tgen

static void Test_S7208C15()
{
  extern Class_Descriptor cd_S7208C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7208C15, buf);
    S7208C15 *dp, &lv = *(dp=new (buf) S7208C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7208C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C15)");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*), 0, "S7208C15");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*), 0, "S7208C15");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(96,88), "S7208C15");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(105,93), "S7208C15");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*), ABISELECT(96,88), "S7208C15");
    check_base_class_offset(lv, (S7208C4*), 0, "S7208C15");
    check_field_offset(lv, s7208c15f0, ABISELECT(16,8), "S7208C15.s7208c15f0");
    test_class_info(&lv, &cd_S7208C15);
    dp->~S7208C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C15(Test_S7208C15, "S7208C15", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7208C15C1Ev();
extern void _ZN8S7208C15D2Ev();
Name_Map name_map_S7208C15[] = {
  NSPAIR(_ZN8S7208C15C1Ev),
  NSPAIR(_ZN8S7208C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
static Base_Class bases_S7208C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    ABISELECT(96,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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C7,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C15[];
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY vtc_S7208C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
extern VTBL_ENTRY _ZTV8S7208C15[];
static  VTBL_ENTRY _tg__ZTV7S7208C4__8S7208C15[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C4__8S7208C15[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTT_ENTRY vtt_S7208C15[] = {
  {&(_ZTV8S7208C15[5]),  5,10},
  {&(_tg__ZTV7S7208C4__8S7208C15[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C4__8S7208C15[3]),  3,3},
  {&(_ZTV8S7208C15[10]),  10,10},
  {&(_tg__ZTV7S7208C7__8S7208C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
Class_Descriptor cd_S7208C15 = {  "S7208C15", // class name
  bases_S7208C15, 6,
  &(vtc_S7208C15[0]), // expected_vtbl_contents
  &(vtt_S7208C15[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7208C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7208C15),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C13  : virtual S4228C23 , virtual S7208C10 , virtual S7208C12 , virtual S7208C15 {
  virtual  ~S7208C13(); // _ZN8S7208C13D2Ev
  S7208C13(); // tgen
};
//SIG(-1 S7208C13) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S7208C13 ::~S7208C13(){ note_dtor("S7208C13", this);}
S7208C13 ::S7208C13(){ note_ctor("S7208C13", this);} // tgen

static void Test_S7208C13()
{
  extern Class_Descriptor cd_S7208C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S7208C13, buf);
    S7208C13 *dp, &lv = *(dp=new (buf) S7208C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7208C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C13)");
    check_base_class_offset(lv, (S4228C23*), 0, "S7208C13");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(40,20), "S7208C13");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(48,28), "S7208C13");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(57,33), "S7208C13");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(48,28), "S7208C13");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(48,28), "S7208C13");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C15*), ABISELECT(48,28), "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(24,12), "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C13");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C15*), 0, "S7208C13");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(24,12), "S7208C13");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(44,24), "S7208C13");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(24,12), "S7208C13");
    check_base_class_offset(lv, (S7208C10*), ABISELECT(8,4), "S7208C13");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C13");
    check_base_class_offset(lv, (S7208C12*), 0, "S7208C13");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C15*), ABISELECT(64,36), "S7208C13");
    check_base_class_offset(lv, (S7208C4*)(S7208C15*), ABISELECT(64,36), "S7208C13");
    check_base_class_offset(lv, (S7208C15*), ABISELECT(64,36), "S7208C13");
    test_class_info(&lv, &cd_S7208C13);
    dp->~S7208C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C13(Test_S7208C13, "S7208C13", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S7208C13C1Ev();
extern void _ZN8S7208C13D2Ev();
Name_Map name_map_S7208C13[] = {
  NSPAIR(_ZN8S7208C13C1Ev),
  NSPAIR(_ZN8S7208C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S7208C15;
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
static Base_Class bases_S7208C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3423C8_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_S4228C27,    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_S4228C37,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //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
    7, //immediately_derived
  0, 1},
  {&cd_S4228C37,    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
    7, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7208C10,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C15,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7208C13[];
extern void _ZN8S7208C13D1Ev();
extern void _ZN8S7208C13D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn8_N8S7208C13D1Ev,_ZThn4_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn8_N8S7208C13D0Ev,_ZThn4_N8S7208C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn24_N8S7208C13D1Ev,_ZThn12_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn24_N8S7208C13D0Ev,_ZThn12_N8S7208C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S7208C13D1Ev,_ZThn36_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S7208C13D0Ev,_ZThn36_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C13[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&_ZN8S7208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C13D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7208C13[];
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__8S7208C13[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
extern void ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__8S7208C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__8S7208C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7208C12__8S7208C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C15__8S7208C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C48S7208C15__A1__8S7208C13[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C48S7208C15__A1__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15__8S7208C13[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
static  VTT_ENTRY vtt_S7208C13[] = {
  {&(_ZTV8S7208C13[10]),  10,40},
  {&(_ZTV8S7208C13[19]),  19,40},
  {&(_ZTV8S7208C13[27]),  27,40},
  {&(_ZTV8S7208C13[32]),  32,40},
  {&(_ZTV8S7208C13[10]),  10,40},
  {&(_ZTV8S7208C13[38]),  38,40},
  {&(_tg__ZTV8S7208C10__8S7208C13[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__8S7208C13[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C8__8S7208C13[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__8S7208C13[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C13[3]),  3,3},
  {&(_tg__ZTV8S7208C12__8S7208C13[3]),  3,3},
  {&(_tg__ZTV8S7208C15__8S7208C13[5]),  5,7},
  {&(_tg__ZTV7S7208C48S7208C15__A1__8S7208C13[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C48S7208C15__A1__8S7208C13[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C15__8S7208C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7208C13[];
extern  VTBL_ENTRY _ZTV8S7208C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C13[];
static VTBL_ENTRY alt_thunk_names240[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D0Ev,_ZThn8_N8S7208C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7208C10D1Ev,_ZThn8_N8S7208C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7208C13D0Ev,_ZThn36_N8S7208C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7208C13D0Ev,_ZThn12_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7208C13D1Ev,_ZThn36_N8S7208C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7208C13D1Ev,_ZThn12_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7208C13D0Ev,_ZThn4_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7208C13D1Ev,_ZThn4_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C13 = {  "S7208C13", // class name
  bases_S7208C13, 16,
  &(vtc_S7208C13[0]), // expected_vtbl_contents
  &(vtt_S7208C13[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S7208C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7208C13),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7208C13),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names240,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C2  : virtual S7208C3 , virtual S7208C13 {
  virtual  ~S7208C2(); // _ZN7S7208C2D2Ev
  S7208C2(); // tgen
};
//SIG(-1 S7208C2) C1{ VBC2{ BC3{ BC4{ m} VBC5{ m} VBC6{ BC5 VBC4 FC5} Fp} VBC7{ BC8{ m Fi} VBC6 BC3 BC4 vd Fc} VBC9{ VBC7 vd Fi} BC4 VBC10{ BC4 BC11{ VBC5 BC4} BC6 vd} Fi[8]} VBC12{ VBC13{ m} VBC9 VBC11 VBC14{ BC3 vd FL[10]} vd} vd}


 S7208C2 ::~S7208C2(){ note_dtor("S7208C2", this);}
S7208C2 ::S7208C2(){ note_ctor("S7208C2", this);} // tgen

static void Test_S7208C2()
{
  extern Class_Descriptor cd_S7208C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,45)];
    init_test(&cd_S7208C2, buf);
    S7208C2 *dp, &lv = *(dp=new (buf) S7208C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,176), "sizeof(S7208C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C2)");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C3*), ABISELECT(8,4), "S7208C2");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C3*), 0, "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C2");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*)(S7208C11*), 0, "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C15*), 0, "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(56,44), "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(65,49), "S7208C2");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*)(S7208C11*), ABISELECT(65,49), "S7208C2");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C3*), ABISELECT(56,44), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(56,44), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(56,44), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C15*), ABISELECT(56,44), "S7208C2");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C4*)(S7208C3*), ABISELECT(8,4), "S7208C2");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(88,60), "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(72,52), "S7208C2");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(72,52), "S7208C2");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(92,64), "S7208C2");
    check_base_class_offset(lv, (S7208C8*)(S7208C3*), ABISELECT(72,52), "S7208C2");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(72,52), "S7208C2");
    check_base_class_offset(lv, (S7208C10*)(S7208C3*), ABISELECT(96,68), "S7208C2");
    check_base_class_offset(lv, (S7208C10*)(S7208C13*), ABISELECT(96,68), "S7208C2");
    /*is_ambiguous_... S7208C3::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C3*), ABISELECT(24,12), "S7208C2");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C11*), ABISELECT(120,80), "S7208C2");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*)(S7208C11*), ABISELECT(112,76), "S7208C2");
    check_base_class_offset(lv, (S7208C12*)(S7208C11*), ABISELECT(112,76), "S7208C2");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*)(S7208C11*), ABISELECT(120,80), "S7208C2");
    check_base_class_offset(lv, (S7208C7*)(S7208C11*), ABISELECT(120,80), "S7208C2");
    check_base_class_offset(lv, (S7208C11*)(S7208C3*), ABISELECT(112,76), "S7208C2");
    check_base_class_offset(lv, (S7208C3*), ABISELECT(8,4), "S7208C2");
    check_base_class_offset(lv, (S4228C23*)(S7208C13*), 0, "S7208C2");
    /*is_ambiguous_... S7208C2::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C2");
    check_base_class_offset(lv, (S7208C12*)(S7208C13*), 0, "S7208C2");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C15*), ABISELECT(136,88), "S7208C2");
    check_base_class_offset(lv, (S7208C4*)(S7208C15*), ABISELECT(136,88), "S7208C2");
    check_base_class_offset(lv, (S7208C15*)(S7208C13*), ABISELECT(136,88), "S7208C2");
    check_base_class_offset(lv, (S7208C13*), 0, "S7208C2");
    test_class_info(&lv, &cd_S7208C2);
    dp->~S7208C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C2(Test_S7208C2, "S7208C2", ABISELECT(232,176));

#else // __cplusplus

extern void _ZN7S7208C2C1Ev();
extern void _ZN7S7208C2D2Ev();
Name_Map name_map_S7208C2[] = {
  NSPAIR(_ZN7S7208C2C1Ev),
  NSPAIR(_ZN7S7208C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C11;
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
extern Class_Descriptor cd_S7208C3;
extern VTBL_ENTRY _ZTI7S7208C3[];
extern  VTBL_ENTRY _ZTV7S7208C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S7208C15;
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
extern Class_Descriptor cd_S7208C13;
extern VTBL_ENTRY _ZTI8S7208C13[];
extern  VTBL_ENTRY _ZTV8S7208C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C13[];
static Base_Class bases_S7208C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(65,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
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(56,44), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    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
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(92,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
    10, //immediately_derived
  0, 0},
  {&cd_S7208C8,    ABISELECT(72,52), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7208C10,    ABISELECT(96,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S4228C37,    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_S4228C37,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C12,    ABISELECT(112,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7208C7,    ABISELECT(120,80), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7208C11,    ABISELECT(112,76), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7208C3,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(136,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7208C15,    ABISELECT(136,88), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7208C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    8, //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 _ZTI7S7208C2[];
extern void _ZN7S7208C2D1Ev();
extern void _ZN7S7208C2D0Ev();
extern void ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn8_N7S7208C2D1Ev,_ZThn4_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn8_N7S7208C2D0Ev,_ZThn4_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7208C2D1Ev,_ZThn52_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7208C2D0Ev,_ZThn52_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7208C2D1Ev,_ZThn68_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7208C2D0Ev,_ZThn68_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7208C2D1Ev,_ZThn76_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7208C2D0Ev,_ZThn76_N7S7208C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S7208C2D1Ev,_ZThn88_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S7208C2D0Ev,_ZThn88_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C2[] = {
  0,
  ABISELECT(112,76),
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  ABISELECT(65,49),
  ABISELECT(56,44),
  ABISELECT(72,52),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&_ZN7S7208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev),
  ABISELECT(9,5),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  ABISELECT(-72,-52),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev),
  ABISELECT(-112,-76),
  ABISELECT(-47,-27),
  ABISELECT(-112,-76),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev),
  ABISELECT(-55,-31),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  ABISELECT(-136,-88),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7208C2[];
extern void _ZN7S7208C3D1Ev();
extern void _ZN7S7208C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C3__7S7208C2[] = {
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&_ZN7S7208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C3__7S7208C2[] = {
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C3__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C3__7S7208C2[] = {
  ABISELECT(-64,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C3__7S7208C2[] = {
  ABISELECT(-88,-64),
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C3__7S7208C2[] = {
  ABISELECT(-104,-72),
  ABISELECT(-47,-27),
  ABISELECT(-112,-76),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C2[] = {
  ABISELECT(-55,-31),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__A1__7S7208C2[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__7S7208C2[] = {
  ABISELECT(24,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C2[] = {
  ABISELECT(-47,-27),
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7208C128S7208C11__7S7208C2[] = {
  ABISELECT(-112,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C2[] = {
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11__7S7208C2[] = {
  ABISELECT(-55,-31),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
extern void _ZN8S7208C13D1Ev();
extern void _ZN8S7208C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C13__7S7208C2[] = {
  ABISELECT(136,88),
  0,
  ABISELECT(65,49),
  ABISELECT(56,44),
  ABISELECT(72,52),
  ABISELECT(96,68),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&_ZN8S7208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C13D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn96_N8S7208C13D1Ev,_ZThn68_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn96_N8S7208C13D0Ev,_ZThn68_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__8S7208C13__7S7208C2[] = {
  ABISELECT(-96,-68),
  ABISELECT(-96,-68),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn72_N8S7208C13D1Ev,_ZThn52_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn72_N8S7208C13D0Ev,_ZThn52_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C13__7S7208C2[] = {
  ABISELECT(-72,-52),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-72,-52),
  ABISELECT(-72,-52),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C13__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn136_N8S7208C13D1Ev,_ZThn88_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn136_N8S7208C13D0Ev,_ZThn88_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C15__8S7208C13__7S7208C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7208C12__A1__7S7208C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C15__7S7208C2[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C48S7208C15__A2__7S7208C2[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15__7S7208C2[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
static  VTT_ENTRY vtt_S7208C2[] = {
  {&(_ZTV7S7208C2[14]),  14,65},
  {&(_ZTV7S7208C2[25]),  25,65},
  {&(_ZTV7S7208C2[30]),  30,65},
  {&(_ZTV7S7208C2[36]),  36,65},
  {&(_ZTV7S7208C2[45]),  45,65},
  {&(_ZTV7S7208C2[52]),  52,65},
  {&(_ZTV7S7208C2[57]),  57,65},
  {&(_ZTV7S7208C2[14]),  14,65},
  {&(_ZTV7S7208C2[14]),  14,65},
  {&(_ZTV7S7208C2[63]),  63,65},
  {&(_tg__ZTV7S7208C3__7S7208C2[8]),  8,10},
  {&(_tg__ZTV7S7208C47S7208C3__7S7208C2[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C3__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C3__7S7208C2[6]),  6,8},
  {&(_tg__ZTV8S7208C10__7S7208C3__7S7208C2[7]),  7,9},
  {&(_tg__ZTV8S7208C11__7S7208C3__7S7208C2[5]),  5,7},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C2[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__A1__7S7208C2[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C10__7S7208C2[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__7S7208C2[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C11__7S7208C2[4]),  4,6},
  {&(_tg__ZTV8S7208C128S7208C11__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C2[10]),  10,12},
  {&(_tg__ZTV8S7208C10__8S7208C13__7S7208C2[7]),  7,9},
  {&(_tg__ZTV7S7208C8__8S7208C13__7S7208C2[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C13__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C2[10]),  10,12},
  {&(_tg__ZTV8S7208C15__8S7208C13__7S7208C2[6]),  6,8},
  {&(_tg__ZTV8S7208C12__A1__7S7208C2[3]),  3,3},
  {&(_tg__ZTV8S7208C15__7S7208C2[5]),  5,7},
  {&(_tg__ZTV7S7208C48S7208C15__A2__7S7208C2[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C2[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C15__7S7208C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C2[];
extern  VTBL_ENTRY _ZTV7S7208C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C2[];
static VTBL_ENTRY alt_thunk_names241[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7208C13D0Ev,_ZThn88_N8S7208C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7208C13D0Ev,_ZThn52_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S7208C13D1Ev,_ZThn88_N8S7208C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S7208C13D1Ev,_ZThn52_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7208C13D0Ev,_ZThn68_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S7208C13D1Ev,_ZThn68_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7208C2D0Ev,_ZThn76_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7208C2D1Ev,_ZThn76_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7208C2D0Ev,_ZThn68_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7208C2D1Ev,_ZThn68_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7208C2D0Ev,_ZThn88_N7S7208C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7208C2D0Ev,_ZThn52_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S7208C2D1Ev,_ZThn88_N7S7208C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7208C2D1Ev,_ZThn52_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7208C2D0Ev,_ZThn4_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7208C2D1Ev,_ZThn4_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C2 = {  "S7208C2", // class name
  bases_S7208C2, 27,
  &(vtc_S7208C2[0]), // expected_vtbl_contents
  &(vtt_S7208C2[0]), // expected_vtt_contents
  ABISELECT(232,176), // object size
  NSPAIRA(_ZTI7S7208C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7208C2),65, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C2),41, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names241,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7208C1  : S7208C2 {
  ::S3423C8_nt s7208c1f0;
  ~S7208C1(); // tgen
  S7208C1(); // tgen
};
//SIG(1 S7208C1) C1{ BC2{ VBC3{ BC4{ BC5{ m} VBC6{ m} VBC7{ BC6 VBC5 FC6} Fp} VBC8{ BC9{ m Fi} VBC7 BC4 BC5 vd Fc} VBC10{ VBC8 vd Fi} BC5 VBC11{ BC5 BC12{ VBC6 BC5} BC7 vd} Fi[8]} VBC13{ VBC14{ m} VBC10 VBC12 VBC15{ BC4 vd FL[10]} vd} vd} FC9}


S7208C1 ::~S7208C1(){ note_dtor("S7208C1", this);} // tgen
S7208C1 ::S7208C1(){ note_ctor("S7208C1", this);} // tgen

static void Test_S7208C1()
{
  extern Class_Descriptor cd_S7208C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,46)];
    init_test(&cd_S7208C1, buf);
    S7208C1 *dp, &lv = *(dp=new (buf) S7208C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,180), "sizeof(S7208C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7208C1)");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C3*), ABISELECT(16,8), "S7208C1");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C3*), 0, "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C8*), 0, "S7208C1");
    check_base_class_offset(lv, (S4228C27*)(S7208C12*)(S7208C11*), 0, "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C12*), 0, "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C4*)(S7208C15*), 0, "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7208C7*), ABISELECT(64,48), "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C7 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C7*), ABISELECT(73,53), "S7208C1");
    check_base_class_offset(lv, (S4228C37*)(S7208C7*)(S7208C11*), ABISELECT(73,53), "S7208C1");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C3*), ABISELECT(64,48), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C8*), ABISELECT(64,48), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C8*), ABISELECT(64,48), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C4*)(S7208C15*), ABISELECT(64,48), "S7208C1");
    /*is_ambiguous_... S7208C3::S7208C4 */ AMB_check_base_class_offset(lv, (S7208C4*)(S7208C3*), ABISELECT(16,8), "S7208C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7208C8*), ABISELECT(96,64), "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C8*), ABISELECT(80,56), "S7208C1");
    check_base_class_offset(lv, (S7208C4*)(S7208C8*), ABISELECT(80,56), "S7208C1");
    /*is_ambiguous_... S7208C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C8*), ABISELECT(100,68), "S7208C1");
    check_base_class_offset(lv, (S7208C8*)(S7208C3*), ABISELECT(80,56), "S7208C1");
    check_base_class_offset(lv, (S7208C8*)(S7208C10*), ABISELECT(80,56), "S7208C1");
    check_base_class_offset(lv, (S7208C10*)(S7208C3*), ABISELECT(104,72), "S7208C1");
    check_base_class_offset(lv, (S7208C10*)(S7208C13*), ABISELECT(104,72), "S7208C1");
    /*is_ambiguous_... S7208C3::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C3*), ABISELECT(32,16), "S7208C1");
    /*is_ambiguous_... S7208C11::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C11*), ABISELECT(128,84), "S7208C1");
    check_base_class_offset(lv, (S4228C37*)(S7208C12*)(S7208C11*), ABISELECT(120,80), "S7208C1");
    check_base_class_offset(lv, (S7208C12*)(S7208C11*), ABISELECT(120,80), "S7208C1");
    check_base_class_offset(lv, (S4228C27*)(S7208C7*)(S7208C11*), ABISELECT(128,84), "S7208C1");
    check_base_class_offset(lv, (S7208C7*)(S7208C11*), ABISELECT(128,84), "S7208C1");
    check_base_class_offset(lv, (S7208C11*)(S7208C3*), ABISELECT(120,80), "S7208C1");
    check_base_class_offset(lv, (S7208C3*)(S7208C2*), ABISELECT(16,8), "S7208C1");
    check_base_class_offset(lv, (S4228C23*)(S7208C13*), 0, "S7208C1");
    /*is_ambiguous_... S7208C1::S7208C12 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C12*), 0, "S7208C1");
    check_base_class_offset(lv, (S7208C12*)(S7208C13*), 0, "S7208C1");
    /*is_ambiguous_... S7208C4::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7208C4*)(S7208C15*), ABISELECT(144,92), "S7208C1");
    check_base_class_offset(lv, (S7208C4*)(S7208C15*), ABISELECT(144,92), "S7208C1");
    check_base_class_offset(lv, (S7208C15*)(S7208C13*), ABISELECT(144,92), "S7208C1");
    check_base_class_offset(lv, (S7208C13*)(S7208C2*), 0, "S7208C1");
    check_base_class_offset(lv, (S7208C2*), 0, "S7208C1");
    check_field_offset(lv, s7208c1f0, ABISELECT(8,4), "S7208C1.s7208c1f0");
    test_class_info(&lv, &cd_S7208C1);
    dp->~S7208C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7208C1(Test_S7208C1, "S7208C1", ABISELECT(240,180));

#else // __cplusplus

extern void _ZN7S7208C1C1Ev();
extern void _ZN7S7208C1D1Ev();
Name_Map name_map_S7208C1[] = {
  NSPAIR(_ZN7S7208C1C1Ev),
  NSPAIR(_ZN7S7208C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C8;
extern VTBL_ENTRY _ZTI7S7208C8[];
extern  VTBL_ENTRY _ZTV7S7208C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C8[];
extern Class_Descriptor cd_S7208C10;
extern VTBL_ENTRY _ZTI8S7208C10[];
extern  VTBL_ENTRY _ZTV8S7208C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C10[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7208C7;
extern VTBL_ENTRY _ZTI7S7208C7[];
extern  VTBL_ENTRY _ZTV7S7208C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C7[];
extern Class_Descriptor cd_S7208C11;
extern VTBL_ENTRY _ZTI8S7208C11[];
extern  VTBL_ENTRY _ZTV8S7208C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C11[];
extern Class_Descriptor cd_S7208C3;
extern VTBL_ENTRY _ZTI7S7208C3[];
extern  VTBL_ENTRY _ZTV7S7208C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C12;
extern VTBL_ENTRY _ZTI8S7208C12[];
extern  VTBL_ENTRY _ZTV8S7208C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C12[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7208C4;
extern VTBL_ENTRY _ZTI7S7208C4[];
extern  VTBL_ENTRY _ZTV7S7208C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C4[];
extern Class_Descriptor cd_S7208C15;
extern VTBL_ENTRY _ZTI8S7208C15[];
extern  VTBL_ENTRY _ZTV8S7208C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C15[];
extern Class_Descriptor cd_S7208C13;
extern VTBL_ENTRY _ZTI8S7208C13[];
extern  VTBL_ENTRY _ZTV8S7208C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7208C13[];
extern Class_Descriptor cd_S7208C2;
extern VTBL_ENTRY _ZTI7S7208C2[];
extern  VTBL_ENTRY _ZTV7S7208C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C2[];
static Base_Class bases_S7208C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(73,53), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7208C7,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7208C4,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(100,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_S7208C8,    ABISELECT(80,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7208C10,    ABISELECT(104,72), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S4228C37,    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
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7208C12,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S7208C7,    ABISELECT(128,84), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7208C11,    ABISELECT(120,80), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S7208C3,    ABISELECT(16,8), //bcp->offset
    16, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7208C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C37,    ABISELECT(144,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
    24, //immediately_derived
  0, 0},
  {&cd_S7208C4,    ABISELECT(144,92), //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
    11, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S7208C15,    ABISELECT(144,92), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7208C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S7208C2,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7208C1[];
extern void _ZN7S7208C1D1Ev();
extern void _ZN7S7208C1D0Ev();
extern void ABISELECT(_ZTv0_n72_N7S7208C1D1Ev,_ZTv0_n36_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7208C1D1Ev,_ZThn8_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7208C1D0Ev,_ZTv0_n36_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7208C1D0Ev,_ZThn8_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7208C1D1Ev,_ZThn56_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7208C1D0Ev,_ZThn56_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C1D1Ev,_ZTv0_n28_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C1D1Ev,_ZThn72_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C1D0Ev,_ZTv0_n28_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C1D0Ev,_ZThn72_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C1D1Ev,_ZTv0_n20_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn120_N7S7208C1D1Ev,_ZThn80_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C1D0Ev,_ZTv0_n20_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn120_N7S7208C1D0Ev,_ZThn80_N7S7208C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7208C1D1Ev,_ZThn92_N7S7208C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7208C1D0Ev,_ZThn92_N7S7208C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7208C1[] = {
  0,
  ABISELECT(120,80),
  ABISELECT(16,8),
  0,
  ABISELECT(144,92),
  0,
  ABISELECT(73,53),
  ABISELECT(64,48),
  ABISELECT(80,56),
  ABISELECT(104,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&_ZN7S7208C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C1D1Ev,_ZTv0_n36_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C1D0Ev,_ZTv0_n36_N7S7208C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  ABISELECT(-80,-56),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev),
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C1D1Ev,_ZTv0_n28_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C1D0Ev,_ZTv0_n28_N7S7208C1D0Ev),
  ABISELECT(-120,-80),
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C1D1Ev,_ZTv0_n20_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C1D0Ev,_ZTv0_n20_N7S7208C1D0Ev),
  ABISELECT(-55,-31),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  ABISELECT(-144,-92),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7208C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7208C1[];
extern void _ZN7S7208C2D1Ev();
extern void _ZN7S7208C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C2__7S7208C1[] = {
  0,
  ABISELECT(120,80),
  ABISELECT(16,8),
  0,
  ABISELECT(144,92),
  0,
  ABISELECT(73,53),
  ABISELECT(64,48),
  ABISELECT(80,56),
  ABISELECT(104,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&_ZN7S7208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C2D0Ev,
};
extern void ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7208C2D1Ev,_ZThn8_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7208C2D0Ev,_ZThn8_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C3__7S7208C2__7S7208C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C2__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7208C2D1Ev,_ZThn56_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7208C2D0Ev,_ZThn56_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C2__7S7208C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C2D1Ev,_ZThn72_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C2D0Ev,_ZThn72_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C2__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn120_N7S7208C2D1Ev,_ZThn80_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn120_N7S7208C2D0Ev,_ZThn80_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C2__7S7208C1[] = {
  ABISELECT(-120,-80),
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C2__7S7208C1[] = {
  ABISELECT(-55,-31),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7208C2D1Ev,_ZThn92_N7S7208C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7208C2D0Ev,_ZThn92_N7S7208C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C15__7S7208C2__7S7208C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7208C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev),
};
extern void _ZN7S7208C3D1Ev();
extern void _ZN7S7208C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C3__7S7208C1[] = {
  ABISELECT(104,72),
  ABISELECT(88,64),
  ABISELECT(64,48),
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&_ZN7S7208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C3__7S7208C1[] = {
  ABISELECT(57,45),
  ABISELECT(48,40),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C3__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-40),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C3__7S7208C1[] = {
  ABISELECT(-64,-48),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C3__7S7208C1[] = {
  ABISELECT(-88,-64),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev)();
extern void ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C3__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C1[] = {
  ABISELECT(-55,-31),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI7S7208C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
extern void _ZN7S7208C8D1Ev();
extern void _ZN7S7208C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7208C8__7S7208C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
  (VTBL_ENTRY)&_ZN7S7208C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7208C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C47S7208C8__A1__7S7208C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C8__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7208C8[0]),
};
extern void _ZN8S7208C10D1Ev();
extern void _ZN8S7208C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C10__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&_ZN8S7208C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C10D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C10__7S7208C1[] = {
  ABISELECT(24,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D1Ev,_ZTv0_n24_N8S7208C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C10D0Ev,_ZTv0_n24_N8S7208C10D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C10__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S7208C10[0]),
};
extern void _ZN8S7208C11D1Ev();
extern void _ZN8S7208C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C11__7S7208C1[] = {
  ABISELECT(-47,-27),
  ABISELECT(-120,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
  (VTBL_ENTRY)&_ZN8S7208C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7208C128S7208C11__7S7208C1[] = {
  ABISELECT(-120,-80),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C78S7208C11__A1__7S7208C1[] = {
  ABISELECT(-55,-31),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C11__7S7208C1[] = {
  ABISELECT(-55,-31),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7208C11[0]),
};
extern void _ZN8S7208C13D1Ev();
extern void _ZN8S7208C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C13__7S7208C1[] = {
  ABISELECT(144,92),
  0,
  ABISELECT(73,53),
  ABISELECT(64,48),
  ABISELECT(80,56),
  ABISELECT(104,72),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&_ZN8S7208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C13D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn104_N8S7208C13D1Ev,_ZThn72_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn104_N8S7208C13D0Ev,_ZThn72_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C10__8S7208C13__7S7208C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  ABISELECT(-31,-19),
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn80_N8S7208C13D1Ev,_ZThn56_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn80_N8S7208C13D0Ev,_ZThn56_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7208C8__8S7208C13__7S7208C1[] = {
  ABISELECT(-80,-56),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-80,-56),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C13__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev)();
extern void ABISELECT(_ZThn144_N8S7208C13D1Ev,_ZThn92_N8S7208C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev)();
extern void ABISELECT(_ZThn144_N8S7208C13D0Ev,_ZThn92_N8S7208C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7208C15__8S7208C13__7S7208C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S7208C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S7208C12__A1__7S7208C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C12[0]),
};
extern void _ZN8S7208C15D1Ev();
extern void _ZN8S7208C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7208C15__7S7208C1[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
  (VTBL_ENTRY)&_ZN8S7208C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7208C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7208C48S7208C15__A2__7S7208C1[] = {
  ABISELECT(-71,-39),
  ABISELECT(-80,-44),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7208C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7208C7__8S7208C15__7S7208C1[] = {
  ABISELECT(9,5),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI8S7208C15[0]),
};
static  VTT_ENTRY vtt_S7208C1[] = {
  {&(_ZTV7S7208C1[14]),  14,65},
  {&(_tg__ZTV7S7208C2__7S7208C1[14]),  14,16},
  {&(_tg__ZTV7S7208C3__7S7208C2__7S7208C1[9]),  9,11},
  {&(_tg__ZTV7S7208C7__7S7208C2__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C2__7S7208C1[6]),  6,8},
  {&(_tg__ZTV8S7208C10__7S7208C2__7S7208C1[7]),  7,9},
  {&(_tg__ZTV8S7208C11__7S7208C2__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C2__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C2__7S7208C1[14]),  14,16},
  {&(_tg__ZTV7S7208C2__7S7208C1[14]),  14,16},
  {&(_tg__ZTV8S7208C15__7S7208C2__7S7208C1[6]),  6,8},
  {&(_ZTV7S7208C1[25]),  25,65},
  {&(_ZTV7S7208C1[30]),  30,65},
  {&(_ZTV7S7208C1[36]),  36,65},
  {&(_ZTV7S7208C1[45]),  45,65},
  {&(_ZTV7S7208C1[52]),  52,65},
  {&(_ZTV7S7208C1[57]),  57,65},
  {&(_ZTV7S7208C1[14]),  14,65},
  {&(_ZTV7S7208C1[14]),  14,65},
  {&(_ZTV7S7208C1[63]),  63,65},
  {&(_tg__ZTV7S7208C3__7S7208C1[8]),  8,10},
  {&(_tg__ZTV7S7208C47S7208C3__7S7208C1[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C3__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C3__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C3__7S7208C1[6]),  6,8},
  {&(_tg__ZTV8S7208C10__7S7208C3__7S7208C1[7]),  7,9},
  {&(_tg__ZTV8S7208C11__7S7208C3__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C3__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C8__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C47S7208C8__A1__7S7208C1[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C47S7208C8__A1__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__7S7208C8__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C10__7S7208C1[6]),  6,8},
  {&(_tg__ZTV7S7208C8__8S7208C10__7S7208C1[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C10__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C11__7S7208C1[4]),  4,6},
  {&(_tg__ZTV8S7208C128S7208C11__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C78S7208C11__A1__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C11__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C1[10]),  10,12},
  {&(_tg__ZTV8S7208C10__8S7208C13__7S7208C1[7]),  7,9},
  {&(_tg__ZTV7S7208C8__8S7208C13__7S7208C1[6]),  6,8},
  {&(_tg__ZTV7S7208C7__8S7208C13__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C13__7S7208C1[10]),  10,12},
  {&(_tg__ZTV8S7208C15__8S7208C13__7S7208C1[6]),  6,8},
  {&(_tg__ZTV8S7208C12__A1__7S7208C1[3]),  3,3},
  {&(_tg__ZTV8S7208C15__7S7208C1[5]),  5,7},
  {&(_tg__ZTV7S7208C48S7208C15__A2__7S7208C1[5]),  5,5},
  {&(_tg__ZTV7S7208C7__7S7208C48S7208C15__A2__7S7208C1[3]),  3,3},
  {&(_tg__ZTV7S7208C7__8S7208C15__7S7208C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7208C1[];
extern  VTBL_ENTRY _ZTV7S7208C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7208C1[];
static VTBL_ENTRY alt_thunk_names242[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D0Ev,_ZTv0_n24_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7208C13D0Ev,_ZThn92_N8S7208C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7208C13D0Ev,_ZThn56_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7208C13D1Ev,_ZTv0_n24_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S7208C13D1Ev,_ZThn92_N8S7208C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S7208C13D1Ev,_ZThn56_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D0Ev,_ZTv0_n28_N8S7208C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7208C13D0Ev,_ZThn72_N8S7208C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7208C13D1Ev,_ZTv0_n28_N8S7208C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S7208C13D1Ev,_ZThn72_N8S7208C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D0Ev,_ZTv0_n20_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D0Ev,_ZThn72_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C3D1Ev,_ZTv0_n20_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C3D1Ev,_ZThn72_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D0Ev,_ZTv0_n28_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D0Ev,_ZThn64_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C3D1Ev,_ZTv0_n28_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S7208C3D1Ev,_ZThn64_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D0Ev,_ZTv0_n24_N7S7208C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D0Ev,_ZThn48_N7S7208C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C3D1Ev,_ZTv0_n24_N7S7208C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7208C3D1Ev,_ZThn48_N7S7208C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D0Ev,_ZTv0_n20_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C2D0Ev,_ZThn80_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C2D1Ev,_ZTv0_n20_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C2D1Ev,_ZThn80_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D0Ev,_ZTv0_n28_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C2D0Ev,_ZThn72_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C2D1Ev,_ZTv0_n28_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C2D1Ev,_ZThn72_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D0Ev,_ZTv0_n24_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C2D0Ev,_ZThn92_N7S7208C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C2D0Ev,_ZThn56_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C2D1Ev,_ZTv0_n24_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C2D1Ev,_ZThn92_N7S7208C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C2D1Ev,_ZThn56_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D0Ev,_ZTv0_n36_N7S7208C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C2D0Ev,_ZThn8_N7S7208C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C2D1Ev,_ZTv0_n36_N7S7208C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C2D1Ev,_ZThn8_N7S7208C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C1D0Ev,_ZTv0_n20_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C1D0Ev,_ZThn80_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7208C1D1Ev,_ZTv0_n20_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N7S7208C1D1Ev,_ZThn80_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C1D0Ev,_ZTv0_n28_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C1D0Ev,_ZThn72_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7208C1D1Ev,_ZTv0_n28_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7208C1D1Ev,_ZThn72_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C1D0Ev,_ZTv0_n24_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C1D0Ev,_ZThn92_N7S7208C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C1D0Ev,_ZThn56_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7208C1D1Ev,_ZTv0_n24_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7208C1D1Ev,_ZThn92_N7S7208C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7208C1D1Ev,_ZThn56_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C1D0Ev,_ZTv0_n36_N7S7208C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C1D0Ev,_ZThn8_N7S7208C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7208C1D1Ev,_ZTv0_n36_N7S7208C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7208C1D1Ev,_ZThn8_N7S7208C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7208C1 = {  "S7208C1", // class name
  bases_S7208C1, 28,
  &(vtc_S7208C1[0]), // expected_vtbl_contents
  &(vtt_S7208C1[0]), // expected_vtt_contents
  ABISELECT(240,180), // object size
  NSPAIRA(_ZTI7S7208C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7208C1),65, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7208C1),51, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names242,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C3  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s7290c3f0;
  ~S7290C3(); // tgen
  S7290C3(); // tgen
};
//SIG(-1 S7290C3) C1{ BC2{ m} VBC3{ m} FC2}


S7290C3 ::~S7290C3(){ note_dtor("S7290C3", this);} // tgen
S7290C3 ::S7290C3(){ note_ctor("S7290C3", this);} // tgen

static void Test_S7290C3()
{
  extern Class_Descriptor cd_S7290C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7290C3, buf);
    S7290C3 *dp, &lv = *(dp=new (buf) S7290C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7290C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C3)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7290C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S7290C3");
    check_field_offset(lv, s7290c3f0, ABISELECT(8,4), "S7290C3.s7290c3f0");
    test_class_info(&lv, &cd_S7290C3);
    dp->~S7290C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C3(Test_S7290C3, "S7290C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7290C3C1Ev();
extern void _ZN7S7290C3D1Ev();
Name_Map name_map_S7290C3[] = {
  NSPAIR(_ZN7S7290C3C1Ev),
  NSPAIR(_ZN7S7290C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7290C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7290C3[];
static  VTBL_ENTRY vtc_S7290C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
extern VTBL_ENTRY _ZTV7S7290C3[];
static  VTT_ENTRY vtt_S7290C3[] = {
  {&(_ZTV7S7290C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
Class_Descriptor cd_S7290C3 = {  "S7290C3", // class name
  bases_S7290C3, 2,
  &(vtc_S7290C3[0]), // expected_vtbl_contents
  &(vtt_S7290C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7290C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C3),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  S7290C6  : virtual S4228C37 , S4228C27 {
  ~S7290C6(); // tgen
  S7290C6(); // tgen
};
//SIG(-1 S7290C6) C1{ VBC2{ m} BC3{ m}}


S7290C6 ::~S7290C6(){ note_dtor("S7290C6", this);} // tgen
S7290C6 ::S7290C6(){ note_ctor("S7290C6", this);} // tgen

static void Test_S7290C6()
{
  extern Class_Descriptor cd_S7290C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7290C6, buf);
    S7290C6 *dp, &lv = *(dp=new (buf) S7290C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7290C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C6)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7290C6");
    check_base_class_offset(lv, (S4228C27*), 0, "S7290C6");
    test_class_info(&lv, &cd_S7290C6);
    dp->~S7290C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C6(Test_S7290C6, "S7290C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7290C6C1Ev();
extern void _ZN7S7290C6D1Ev();
Name_Map name_map_S7290C6[] = {
  NSPAIR(_ZN7S7290C6C1Ev),
  NSPAIR(_ZN7S7290C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7290C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C6[];
static  VTBL_ENTRY vtc_S7290C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
extern VTBL_ENTRY _ZTV7S7290C6[];
static  VTT_ENTRY vtt_S7290C6[] = {
  {&(_ZTV7S7290C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
Class_Descriptor cd_S7290C6 = {  "S7290C6", // class name
  bases_S7290C6, 2,
  &(vtc_S7290C6[0]), // expected_vtbl_contents
  &(vtt_S7290C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7290C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C6),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  S7290C2  : virtual S7290C3 , S7290C6 {
  void *s7290c2f0;
  ~S7290C2(); // tgen
  S7290C2(); // tgen
};
//SIG(-1 S7290C2) C1{ VBC2{ BC3{ m} VBC4{ m} FC3} BC5{ VBC3 BC4} Fp}


S7290C2 ::~S7290C2(){ note_dtor("S7290C2", this);} // tgen
S7290C2 ::S7290C2(){ note_ctor("S7290C2", this);} // tgen

static void Test_S7290C2()
{
  extern Class_Descriptor cd_S7290C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7290C2, buf);
    S7290C2 *dp, &lv = *(dp=new (buf) S7290C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7290C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C2)");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(16,8), "S7290C2");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(25,13), "S7290C2");
    check_base_class_offset(lv, (S7290C3*), ABISELECT(16,8), "S7290C2");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C2");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*), 0, "S7290C2");
    check_base_class_offset(lv, (S7290C6*), 0, "S7290C2");
    check_field_offset(lv, s7290c2f0, ABISELECT(8,4), "S7290C2.s7290c2f0");
    test_class_info(&lv, &cd_S7290C2);
    dp->~S7290C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C2(Test_S7290C2, "S7290C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7290C2C1Ev();
extern void _ZN7S7290C2D1Ev();
Name_Map name_map_S7290C2[] = {
  NSPAIR(_ZN7S7290C2C1Ev),
  NSPAIR(_ZN7S7290C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
static Base_Class bases_S7290C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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
    2, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(16,8), //bcp->offset
    5, //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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C2[];
static  VTBL_ENTRY vtc_S7290C2[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
};
extern VTBL_ENTRY _ZTV7S7290C2[];
static  VTBL_ENTRY _tg__ZTV7S7290C6__7S7290C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C2[] = {
  {&(_ZTV7S7290C2[5]),  5,8},
  {&(_tg__ZTV7S7290C6__7S7290C2[3]),  3,3},
  {&(_ZTV7S7290C2[8]),  8,8},
  {&(_tg__ZTV7S7290C3__7S7290C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C2[];
extern  VTBL_ENTRY _ZTV7S7290C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C2[];
Class_Descriptor cd_S7290C2 = {  "S7290C2", // class name
  bases_S7290C2, 6,
  &(vtc_S7290C2[0]), // expected_vtbl_contents
  &(vtt_S7290C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7290C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C2),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C7  : S7290C6 , S3423C8_nt {
  ~S7290C7(); // tgen
  S7290C7(); // tgen
};
//SIG(-1 S7290C7) C1{ BC2{ VBC3{ m} BC4{ m}} BC5{ m Fi}}


S7290C7 ::~S7290C7(){ note_dtor("S7290C7", this);} // tgen
S7290C7 ::S7290C7(){ note_ctor("S7290C7", this);} // tgen

static void Test_S7290C7()
{
  extern Class_Descriptor cd_S7290C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7290C7, buf);
    S7290C7 *dp, &lv = *(dp=new (buf) S7290C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7290C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C7)");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C7");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*), 0, "S7290C7");
    check_base_class_offset(lv, (S7290C6*), 0, "S7290C7");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(8,4), "S7290C7");
    test_class_info(&lv, &cd_S7290C7);
    dp->~S7290C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C7(Test_S7290C7, "S7290C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7290C7C1Ev();
extern void _ZN7S7290C7D1Ev();
Name_Map name_map_S7290C7[] = {
  NSPAIR(_ZN7S7290C7C1Ev),
  NSPAIR(_ZN7S7290C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
static Base_Class bases_S7290C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_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 _ZTI7S7290C7[];
static  VTBL_ENTRY vtc_S7290C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C7[0]),
};
extern VTBL_ENTRY _ZTV7S7290C7[];
static  VTBL_ENTRY _tg__ZTV7S7290C6__7S7290C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTT_ENTRY vtt_S7290C7[] = {
  {&(_ZTV7S7290C7[3]),  3,3},
  {&(_tg__ZTV7S7290C6__7S7290C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C7[];
extern  VTBL_ENTRY _ZTV7S7290C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C7[];
Class_Descriptor cd_S7290C7 = {  "S7290C7", // class name
  bases_S7290C7, 4,
  &(vtc_S7290C7[0]), // expected_vtbl_contents
  &(vtt_S7290C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7290C7),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7290C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C7),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  S7290C10  : S4228C27 , virtual S4228C37 , virtual S7290C3 {
  void *s7290c10f0;
  ~S7290C10(); // tgen
  S7290C10(); // tgen
};
//SIG(-1 S7290C10) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7290C10 ::~S7290C10(){ note_dtor("S7290C10", this);} // tgen
S7290C10 ::S7290C10(){ note_ctor("S7290C10", this);} // tgen

static void Test_S7290C10()
{
  extern Class_Descriptor cd_S7290C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7290C10, buf);
    S7290C10 *dp, &lv = *(dp=new (buf) S7290C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7290C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C10)");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7290C10");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7290C10");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(16,8), "S7290C10");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(25,13), "S7290C10");
    check_base_class_offset(lv, (S7290C3*), ABISELECT(16,8), "S7290C10");
    check_field_offset(lv, s7290c10f0, ABISELECT(8,4), "S7290C10.s7290c10f0");
    test_class_info(&lv, &cd_S7290C10);
    dp->~S7290C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C10(Test_S7290C10, "S7290C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S7290C10C1Ev();
extern void _ZN8S7290C10D1Ev();
Name_Map name_map_S7290C10[] = {
  NSPAIR(_ZN8S7290C10C1Ev),
  NSPAIR(_ZN8S7290C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
static Base_Class bases_S7290C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C10[];
static  VTBL_ENTRY vtc_S7290C10[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
extern VTBL_ENTRY _ZTV8S7290C10[];
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C10[] = {
  {&(_ZTV8S7290C10[5]),  5,8},
  {&(_ZTV8S7290C10[8]),  8,8},
  {&(_tg__ZTV7S7290C3__8S7290C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
Class_Descriptor cd_S7290C10 = {  "S7290C10", // class name
  bases_S7290C10, 5,
  &(vtc_S7290C10[0]), // expected_vtbl_contents
  &(vtt_S7290C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S7290C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7290C10),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C10),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C9  : virtual S7290C10 {
  char s7290c9f0:8;
  ~S7290C9(); // tgen
  S7290C9(); // tgen
};
//SIG(-1 S7290C9) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S7290C9 ::~S7290C9(){ note_dtor("S7290C9", this);} // tgen
S7290C9 ::S7290C9(){ note_ctor("S7290C9", this);} // tgen

static void Test_S7290C9()
{
  extern Class_Descriptor cd_S7290C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7290C9, buf);
    S7290C9 *dp, &lv = *(dp=new (buf) S7290C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7290C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C9)");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), ABISELECT(16,8), "S7290C9");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C9");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(32,16), "S7290C9");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), 0, "S7290C9");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(32,16), "S7290C9");
    check_base_class_offset(lv, (S7290C10*), ABISELECT(16,8), "S7290C9");
    set_bf_and_test(lv, s7290c9f0, ABISELECT(8,4), 0, 8, 1, "S7290C9");
    set_bf_and_test(lv, s7290c9f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S7290C9");
    test_class_info(&lv, &cd_S7290C9);
    dp->~S7290C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C9(Test_S7290C9, "S7290C9", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7290C9C1Ev();
extern void _ZN7S7290C9D1Ev();
Name_Map name_map_S7290C9[] = {
  NSPAIR(_ZN7S7290C9C1Ev),
  NSPAIR(_ZN7S7290C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
static Base_Class bases_S7290C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C3,    ABISELECT(32,16), //bcp->offset
    11, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7290C10,    ABISELECT(16,8), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C9[];
static  VTBL_ENTRY vtc_S7290C9[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
extern VTBL_ENTRY _ZTV7S7290C9[];
static  VTBL_ENTRY _tg__ZTV8S7290C10__7S7290C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__7S7290C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C9[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C9[] = {
  {&(_ZTV7S7290C9[6]),  6,14},
  {&(_ZTV7S7290C9[11]),  11,14},
  {&(_ZTV7S7290C9[14]),  14,14},
  {&(_tg__ZTV8S7290C10__7S7290C9[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__7S7290C9[3]),  3,3},
  {&(_tg__ZTV7S7290C3__7S7290C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C9[];
extern  VTBL_ENTRY _ZTV7S7290C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C9[];
Class_Descriptor cd_S7290C9 = {  "S7290C9", // class name
  bases_S7290C9, 6,
  &(vtc_S7290C9[0]), // expected_vtbl_contents
  &(vtt_S7290C9[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7290C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7290C9),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C9),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C11  : S7290C10 {
  __tsi64 s7290c11f0[10];
  virtual  ~S7290C11(); // _ZN8S7290C11D2Ev
  S7290C11(); // tgen
};
//SIG(-1 S7290C11) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7290C11 ::~S7290C11(){ note_dtor("S7290C11", this);}
S7290C11 ::S7290C11(){ note_ctor("S7290C11", this);} // tgen

static void Test_S7290C11()
{
  extern Class_Descriptor cd_S7290C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7290C11, buf);
    S7290C11 *dp, &lv = *(dp=new (buf) S7290C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7290C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C11)");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), 0, "S7290C11");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C11");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(96,88), "S7290C11");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(105,93), "S7290C11");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(96,88), "S7290C11");
    check_base_class_offset(lv, (S7290C10*), 0, "S7290C11");
    check_field_offset(lv, s7290c11f0, ABISELECT(16,8), "S7290C11.s7290c11f0");
    test_class_info(&lv, &cd_S7290C11);
    dp->~S7290C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C11(Test_S7290C11, "S7290C11", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7290C11C1Ev();
extern void _ZN8S7290C11D2Ev();
Name_Map name_map_S7290C11[] = {
  NSPAIR(_ZN8S7290C11C1Ev),
  NSPAIR(_ZN8S7290C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
static Base_Class bases_S7290C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    ABISELECT(96,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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C3,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7290C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C11[];
extern void _ZN8S7290C11D1Ev();
extern void _ZN8S7290C11D0Ev();
static  VTBL_ENTRY vtc_S7290C11[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
  (VTBL_ENTRY)&_ZN8S7290C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C11D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
};
extern VTBL_ENTRY _ZTV8S7290C11[];
static  VTBL_ENTRY _tg__ZTV8S7290C10__8S7290C11[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__8S7290C11[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C11[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C11[] = {
  {&(_ZTV8S7290C11[5]),  5,10},
  {&(_tg__ZTV8S7290C10__8S7290C11[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__8S7290C11[3]),  3,3},
  {&(_ZTV8S7290C11[10]),  10,10},
  {&(_tg__ZTV7S7290C3__8S7290C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C11[];
extern  VTBL_ENTRY _ZTV8S7290C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C11[];
Class_Descriptor cd_S7290C11 = {  "S7290C11", // class name
  bases_S7290C11, 6,
  &(vtc_S7290C11[0]), // expected_vtbl_contents
  &(vtt_S7290C11[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7290C11),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7290C11),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C15  : S3423C8_nt , virtual S7290C3 , S7290C10 , S4228C27 {
  char s7290c15f0;
  virtual  ~S7290C15(); // _ZN8S7290C15D2Ev
  S7290C15(); // tgen
};
//SIG(-1 S7290C15) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7290C15 ::~S7290C15(){ note_dtor("S7290C15", this);}
S7290C15 ::S7290C15(){ note_ctor("S7290C15", this);} // tgen

static void Test_S7290C15()
{
  extern Class_Descriptor cd_S7290C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7290C15, buf);
    S7290C15 *dp, &lv = *(dp=new (buf) S7290C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7290C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C15)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7290C15");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(24,16), "S7290C15");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(33,21), "S7290C15");
    check_base_class_offset(lv, (S7290C3*), ABISELECT(24,16), "S7290C15");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(24,16), "S7290C15");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), 0, "S7290C15");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C15");
    check_base_class_offset(lv, (S7290C10*), 0, "S7290C15");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S7290C15");
    check_field_offset(lv, s7290c15f0, ABISELECT(20,12), "S7290C15.s7290c15f0");
    test_class_info(&lv, &cd_S7290C15);
    dp->~S7290C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C15(Test_S7290C15, "S7290C15", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S7290C15C1Ev();
extern void _ZN8S7290C15D2Ev();
Name_Map name_map_S7290C15[] = {
  NSPAIR(_ZN8S7290C15C1Ev),
  NSPAIR(_ZN8S7290C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7290C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C15[];
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY vtc_S7290C15[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
extern VTBL_ENTRY _ZTV8S7290C15[];
static  VTBL_ENTRY _tg__ZTV8S7290C10__8S7290C15[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__8S7290C15[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C15[] = {
  {&(_ZTV8S7290C15[5]),  5,10},
  {&(_tg__ZTV8S7290C10__8S7290C15[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__8S7290C15[3]),  3,3},
  {&(_ZTV8S7290C15[10]),  10,10},
  {&(_tg__ZTV7S7290C3__8S7290C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
Class_Descriptor cd_S7290C15 = {  "S7290C15", // class name
  bases_S7290C15, 8,
  &(vtc_S7290C15[0]), // expected_vtbl_contents
  &(vtt_S7290C15[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S7290C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7290C15),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C14  : virtual S7290C15 {
  int s7290c14f0;
  virtual  ~S7290C14(); // _ZN8S7290C14D2Ev
  S7290C14(); // tgen
};
//SIG(-1 S7290C14) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7290C14 ::~S7290C14(){ note_dtor("S7290C14", this);}
S7290C14 ::S7290C14(){ note_ctor("S7290C14", this);} // tgen

static void Test_S7290C14()
{
  extern Class_Descriptor cd_S7290C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7290C14, buf);
    S7290C14 *dp, &lv = *(dp=new (buf) S7290C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7290C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C14)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C15*), ABISELECT(32,16), "S7290C14");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(40,24), "S7290C14");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), 0, "S7290C14");
    check_base_class_offset(lv, (S7290C3*)(S7290C15*), ABISELECT(40,24), "S7290C14");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C15*), ABISELECT(40,24), "S7290C14");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C15*), ABISELECT(16,8), "S7290C14");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C15*), 0, "S7290C14");
    check_base_class_offset(lv, (S7290C10*)(S7290C15*), ABISELECT(16,8), "S7290C14");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C15*), ABISELECT(36,20), "S7290C14");
    check_base_class_offset(lv, (S7290C15*), ABISELECT(16,8), "S7290C14");
    check_field_offset(lv, s7290c14f0, ABISELECT(8,4), "S7290C14.s7290c14f0");
    test_class_info(&lv, &cd_S7290C14);
    dp->~S7290C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C14(Test_S7290C14, "S7290C14", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7290C14C1Ev();
extern void _ZN8S7290C14D2Ev();
Name_Map name_map_S7290C14[] = {
  NSPAIR(_ZN8S7290C14C1Ev),
  NSPAIR(_ZN8S7290C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C15;
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
static Base_Class bases_S7290C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C3,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C10,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7290C15,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C14[];
extern void _ZN8S7290C14D1Ev();
extern void _ZN8S7290C14D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7290C14[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&_ZN8S7290C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
};
extern VTBL_ENTRY _ZTV8S7290C14[];
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C15__8S7290C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C14[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15__8S7290C14[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C14[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTT_ENTRY vtt_S7290C14[] = {
  {&(_ZTV8S7290C14[6]),  6,19},
  {&(_ZTV8S7290C14[14]),  14,19},
  {&(_ZTV8S7290C14[19]),  19,19},
  {&(_tg__ZTV8S7290C15__8S7290C14[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C15__8S7290C14[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C14[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C15__8S7290C14[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C14[];
extern  VTBL_ENTRY _ZTV8S7290C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C14[];
static VTBL_ENTRY alt_thunk_names243[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7290C14 = {  "S7290C14", // class name
  bases_S7290C14, 9,
  &(vtc_S7290C14[0]), // expected_vtbl_contents
  &(vtt_S7290C14[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7290C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7290C14),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C14),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names243,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C12  : virtual S4228C23 , virtual S7290C14 , virtual S7290C6 , virtual S7290C11 {
  virtual  ~S7290C12(); // _ZN8S7290C12D2Ev
  S7290C12(); // tgen
};
//SIG(-1 S7290C12) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S7290C12 ::~S7290C12(){ note_dtor("S7290C12", this);}
S7290C12 ::S7290C12(){ note_ctor("S7290C12", this);} // tgen

static void Test_S7290C12()
{
  extern Class_Descriptor cd_S7290C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S7290C12, buf);
    S7290C12 *dp, &lv = *(dp=new (buf) S7290C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7290C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C12)");
    check_base_class_offset(lv, (S4228C23*), 0, "S7290C12");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C15*), ABISELECT(40,20), "S7290C12");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(48,28), "S7290C12");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(57,33), "S7290C12");
    check_base_class_offset(lv, (S7290C3*)(S7290C15*), ABISELECT(48,28), "S7290C12");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C15*), ABISELECT(48,28), "S7290C12");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C11*), ABISELECT(48,28), "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C15*), ABISELECT(24,12), "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C15*), 0, "S7290C12");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C11*), 0, "S7290C12");
    check_base_class_offset(lv, (S7290C10*)(S7290C15*), ABISELECT(24,12), "S7290C12");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C15*), ABISELECT(44,24), "S7290C12");
    check_base_class_offset(lv, (S7290C15*)(S7290C14*), ABISELECT(24,12), "S7290C12");
    check_base_class_offset(lv, (S7290C14*), ABISELECT(8,4), "S7290C12");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*), 0, "S7290C12");
    check_base_class_offset(lv, (S7290C6*), 0, "S7290C12");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C11*), ABISELECT(64,36), "S7290C12");
    check_base_class_offset(lv, (S7290C10*)(S7290C11*), ABISELECT(64,36), "S7290C12");
    check_base_class_offset(lv, (S7290C11*), ABISELECT(64,36), "S7290C12");
    test_class_info(&lv, &cd_S7290C12);
    dp->~S7290C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C12(Test_S7290C12, "S7290C12", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S7290C12C1Ev();
extern void _ZN8S7290C12D2Ev();
Name_Map name_map_S7290C12[] = {
  NSPAIR(_ZN8S7290C12C1Ev),
  NSPAIR(_ZN8S7290C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C15;
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
extern Class_Descriptor cd_S7290C14;
extern VTBL_ENTRY _ZTI8S7290C14[];
extern  VTBL_ENTRY _ZTV8S7290C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C14[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S7290C11;
extern VTBL_ENTRY _ZTI8S7290C11[];
extern  VTBL_ENTRY _ZTV8S7290C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C11[];
static Base_Class bases_S7290C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3423C8_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_S4228C37,    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_S4228C27,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //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
    7, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7290C15,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7290C14,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7290C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7290C11,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7290C12[];
extern void _ZN8S7290C12D1Ev();
extern void _ZN8S7290C12D0Ev();
extern void ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn8_N8S7290C12D1Ev,_ZThn4_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn8_N8S7290C12D0Ev,_ZThn4_N8S7290C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn24_N8S7290C12D1Ev,_ZThn12_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn24_N8S7290C12D0Ev,_ZThn12_N8S7290C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn36_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn36_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7290C12[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&_ZN8S7290C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C12D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7290C12[];
extern void _ZN8S7290C14D1Ev();
extern void _ZN8S7290C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C14__8S7290C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&_ZN8S7290C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C14D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C14__8S7290C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C14__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
};
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C12[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C15__8S7290C12[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C12[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C6__8S7290C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
extern void _ZN8S7290C11D1Ev();
extern void _ZN8S7290C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C11__8S7290C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
  (VTBL_ENTRY)&_ZN8S7290C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C11__A1__8S7290C12[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C11__A1__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C11__8S7290C12[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
};
static  VTT_ENTRY vtt_S7290C12[] = {
  {&(_ZTV8S7290C12[10]),  10,40},
  {&(_ZTV8S7290C12[19]),  19,40},
  {&(_ZTV8S7290C12[27]),  27,40},
  {&(_ZTV8S7290C12[32]),  32,40},
  {&(_ZTV8S7290C12[10]),  10,40},
  {&(_ZTV8S7290C12[38]),  38,40},
  {&(_tg__ZTV8S7290C14__8S7290C12[6]),  6,8},
  {&(_tg__ZTV8S7290C15__8S7290C14__8S7290C12[6]),  6,8},
  {&(_tg__ZTV7S7290C3__8S7290C14__8S7290C12[3]),  3,3},
  {&(_tg__ZTV8S7290C15__8S7290C12[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C15__8S7290C12[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C15__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C15__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C6__8S7290C12[3]),  3,3},
  {&(_tg__ZTV8S7290C11__8S7290C12[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C11__A1__8S7290C12[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C11__A1__8S7290C12[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C11__8S7290C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7290C12[];
extern  VTBL_ENTRY _ZTV8S7290C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C12[];
static VTBL_ENTRY alt_thunk_names244[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn36_N8S7290C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7290C12D0Ev,_ZThn12_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn36_N8S7290C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S7290C12D1Ev,_ZThn12_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7290C12D0Ev,_ZThn4_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S7290C12D1Ev,_ZThn4_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7290C12 = {  "S7290C12", // class name
  bases_S7290C12, 16,
  &(vtc_S7290C12[0]), // expected_vtbl_contents
  &(vtt_S7290C12[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S7290C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7290C12),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7290C12),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names244,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7290C1  : S7290C2 , S7290C7 , virtual S7290C9 , virtual S7290C11 , S7290C12 {
  ::S19763C18_nt s7290c1f0;
  virtual  ~S7290C1(); // _ZN7S7290C1D2Ev
  S7290C1(); // tgen
};
//SIG(1 S7290C1) C1{ BC2{ VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ VBC4 BC5} Fp} BC7{ BC6 BC8{ m Fi}} VBC9{ VBC10{ BC5 VBC4 VBC3 Fp} Fc:8} VBC11{ BC10 vd FL[10]} BC12{ VBC13{ m} VBC14{ VBC15{ BC8 VBC3 BC10 BC5 vd Fc} vd Fi} VBC6 VBC11 vd} vd FC16{}}


 S7290C1 ::~S7290C1(){ note_dtor("S7290C1", this);}
S7290C1 ::S7290C1(){ note_ctor("S7290C1", this);} // tgen

static void Test_S7290C1()
{
  extern Class_Descriptor cd_S7290C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,41)];
    init_test(&cd_S7290C1, buf);
    S7290C1 *dp, &lv = *(dp=new (buf) S7290C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,160), "sizeof(S7290C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7290C1)");
    check_base_class_offset(lv, (S4228C37*)(S7290C3*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S4228C27*)(S7290C3*), ABISELECT(57,29), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C2*), ABISELECT(48,24), "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C10 */ AMB_check_base_class_offset(lv, (S7290C3*)(S7290C10*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C11*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C15*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S7290C3*)(S7290C10*)(S7290C15*), ABISELECT(48,24), "S7290C1");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*)(S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S4228C37*)(S7290C6*)(S7290C7*), 0, "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C10 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*), 0, "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C11*), 0, "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C10*)(S7290C15*), 0, "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C6 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7290C6*), 0, "S7290C1");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*)(S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S7290C6*)(S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S7290C2*), 0, "S7290C1");
    check_base_class_offset(lv, (S4228C27*)(S7290C6*)(S7290C7*), ABISELECT(16,8), "S7290C1");
    check_base_class_offset(lv, (S7290C6*)(S7290C7*), ABISELECT(16,8), "S7290C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C7*), ABISELECT(24,12), "S7290C1");
    check_base_class_offset(lv, (S7290C7*), ABISELECT(16,8), "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C10 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*), ABISELECT(80,40), "S7290C1");
    check_base_class_offset(lv, (S7290C10*)(S7290C9*), ABISELECT(80,40), "S7290C1");
    check_base_class_offset(lv, (S7290C9*), ABISELECT(64,32), "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C11*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S7290C10*)(S7290C11*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S7290C11*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S7290C11*)(S7290C12*), ABISELECT(96,48), "S7290C1");
    check_base_class_offset(lv, (S4228C23*)(S7290C12*), 0, "S7290C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S7290C15*), ABISELECT(224,152), "S7290C1");
    /*is_ambiguous_... S7290C10::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C10*)(S7290C15*), ABISELECT(208,144), "S7290C1");
    check_base_class_offset(lv, (S7290C10*)(S7290C15*), ABISELECT(208,144), "S7290C1");
    /*is_ambiguous_... S7290C15::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C15*), ABISELECT(228,156), "S7290C1");
    check_base_class_offset(lv, (S7290C15*)(S7290C14*), ABISELECT(208,144), "S7290C1");
    check_base_class_offset(lv, (S7290C14*)(S7290C12*), ABISELECT(192,136), "S7290C1");
    /*is_ambiguous_... S7290C1::S7290C6 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7290C6*), ABISELECT(32,16), "S7290C1");
    check_base_class_offset(lv, (S7290C6*)(S7290C12*), ABISELECT(32,16), "S7290C1");
    check_base_class_offset(lv, (S7290C12*), ABISELECT(32,16), "S7290C1");
    check_field_offset(lv, s7290c1f0, ABISELECT(40,20), "S7290C1.s7290c1f0");
    test_class_info(&lv, &cd_S7290C1);
    dp->~S7290C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7290C1(Test_S7290C1, "S7290C1", ABISELECT(232,160));

#else // __cplusplus

extern void _ZN7S7290C1C1Ev();
extern void _ZN7S7290C1D2Ev();
Name_Map name_map_S7290C1[] = {
  NSPAIR(_ZN7S7290C1C1Ev),
  NSPAIR(_ZN7S7290C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C3;
extern VTBL_ENTRY _ZTI7S7290C3[];
extern  VTBL_ENTRY _ZTV7S7290C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C3[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S7290C2;
extern VTBL_ENTRY _ZTI7S7290C2[];
extern  VTBL_ENTRY _ZTV7S7290C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C2[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S7290C7;
extern VTBL_ENTRY _ZTI7S7290C7[];
extern  VTBL_ENTRY _ZTV7S7290C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C7[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S7290C9;
extern VTBL_ENTRY _ZTI7S7290C9[];
extern  VTBL_ENTRY _ZTV7S7290C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S7290C11;
extern VTBL_ENTRY _ZTI8S7290C11[];
extern  VTBL_ENTRY _ZTV8S7290C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C11[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C10;
extern VTBL_ENTRY _ZTI8S7290C10[];
extern  VTBL_ENTRY _ZTV8S7290C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C10[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C15;
extern VTBL_ENTRY _ZTI8S7290C15[];
extern  VTBL_ENTRY _ZTV8S7290C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C15[];
extern Class_Descriptor cd_S7290C14;
extern VTBL_ENTRY _ZTI8S7290C14[];
extern  VTBL_ENTRY _ZTV8S7290C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C14[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7290C6;
extern VTBL_ENTRY _ZTI7S7290C6[];
extern  VTBL_ENTRY _ZTV7S7290C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C6[];
extern Class_Descriptor cd_S7290C12;
extern VTBL_ENTRY _ZTI8S7290C12[];
extern  VTBL_ENTRY _ZTV8S7290C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7290C12[];
static Base_Class bases_S7290C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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
    2, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(57,29), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7290C3,    ABISELECT(48,24), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7290C6,    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
    10, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7290C2,    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
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7290C6,    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
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7290C7,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    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_S7290C10,    ABISELECT(80,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S7290C9,    ABISELECT(64,32), //bcp->offset
    32, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    15, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(96,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7290C11,    ABISELECT(96,48), //bcp->offset
    43, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S3423C8_nt,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7290C10,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(228,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
    22, //immediately_derived
  0, 0},
  {&cd_S7290C15,    ABISELECT(208,144), //bcp->offset
    60, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S7290C14,    ABISELECT(192,136), //bcp->offset
    51, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    25, //immediately_derived
  0, 0},
  {&cd_S7290C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S7290C12,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7290C1[];
extern void _ZN7S7290C1D1Ev();
extern void _ZN7S7290C1D0Ev();
extern void ABISELECT(_ZThn32_N7S7290C1D1Ev,_ZThn16_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7290C1D0Ev,_ZThn16_N7S7290C1D0Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7290C1D1Ev,_ZThn48_N7S7290C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7290C1D0Ev,_ZThn48_N7S7290C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7290C1D1Ev,_ZTv0_n28_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7290C1D1Ev,_ZThn136_N7S7290C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7290C1D0Ev,_ZTv0_n28_N7S7290C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7290C1D0Ev,_ZThn136_N7S7290C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S7290C1D1Ev,_ZThn144_N7S7290C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S7290C1D0Ev,_ZThn144_N7S7290C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7290C1[] = {
  ABISELECT(32,16),
  ABISELECT(208,144),
  ABISELECT(192,136),
  0,
  ABISELECT(96,48),
  ABISELECT(80,40),
  ABISELECT(64,32),
  ABISELECT(57,29),
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&_ZN7S7290C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7290C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(64,32),
  0,
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(176,128),
  ABISELECT(160,120),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7290C1D1Ev,_ZThn16_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7290C1D0Ev,_ZThn16_N7S7290C1D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  ABISELECT(-96,-48),
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-135,-107),
  ABISELECT(-144,-112),
  ABISELECT(16,8),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7290C1D1Ev,_ZTv0_n28_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7290C1D0Ev,_ZTv0_n28_N7S7290C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S7290C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7290C1[];
static  VTBL_ENTRY _tg__ZTV7S7290C2__7S7290C1[] = {
  ABISELECT(57,29),
  ABISELECT(48,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C67S7290C2__7S7290C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C2__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7290C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C7__7S7290C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C7[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C67S7290C7__A1__7S7290C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
extern void _ZN8S7290C12D1Ev();
extern void _ZN8S7290C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C12__7S7290C1[] = {
  ABISELECT(64,32),
  0,
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(176,128),
  ABISELECT(160,120),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&_ZN8S7290C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C12D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn160_N8S7290C12D1Ev,_ZThn120_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn160_N8S7290C12D0Ev,_ZThn120_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C14__8S7290C12__7S7290C1[] = {
  ABISELECT(-160,-120),
  ABISELECT(-192,-136),
  ABISELECT(-135,-107),
  ABISELECT(-144,-112),
  ABISELECT(16,8),
  ABISELECT(-160,-120),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn176_N8S7290C12D1Ev,_ZThn128_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn176_N8S7290C12D0Ev,_ZThn128_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C12__7S7290C1[] = {
  ABISELECT(-176,-128),
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C12__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
};
extern void ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn32_N8S7290C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev)();
extern void ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn32_N8S7290C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C11__8S7290C12__7S7290C1[] = {
  ABISELECT(-64,-32),
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S7290C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C9__7S7290C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-32),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7290C10__7S7290C9__7S7290C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__7S7290C9__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7290C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7290C10__7S7290C1[] = {
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(-80,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C10__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
extern void _ZN8S7290C11D1Ev();
extern void _ZN8S7290C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C11__7S7290C1[] = {
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
  (VTBL_ENTRY)&_ZN8S7290C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C11__A1__7S7290C1[] = {
  ABISELECT(-39,-19),
  ABISELECT(-48,-24),
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C11__A1__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C11__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S7290C11[0]),
};
extern void _ZN8S7290C14D1Ev();
extern void _ZN8S7290C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C14__7S7290C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-135,-107),
  ABISELECT(-144,-112),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&_ZN8S7290C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C14D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev)();
extern void ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7290C15__8S7290C14__7S7290C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C14__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI8S7290C14[0]),
};
extern void _ZN8S7290C15D1Ev();
extern void _ZN8S7290C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7290C15__7S7290C1[] = {
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
  (VTBL_ENTRY)&_ZN8S7290C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7290C15D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7290C108S7290C15__A2__7S7290C1[] = {
  ABISELECT(-151,-115),
  ABISELECT(-160,-120),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C108S7290C15__A2__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(160,120),
  (VTBL_ENTRY)&(_ZTI8S7290C10[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C3__8S7290C15__7S7290C1[] = {
  ABISELECT(9,5),
  ABISELECT(160,120),
  (VTBL_ENTRY)&(_ZTI8S7290C15[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7290C6__A2__7S7290C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7290C6[0]),
};
static  VTT_ENTRY vtt_S7290C1[] = {
  {&(_ZTV7S7290C1[12]),  12,68},
  {&(_tg__ZTV7S7290C2__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C67S7290C2__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C3__7S7290C2__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C7__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C67S7290C7__A1__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C12__7S7290C1[10]),  10,12},
  {&(_tg__ZTV8S7290C14__8S7290C12__7S7290C1[7]),  7,9},
  {&(_tg__ZTV8S7290C15__8S7290C12__7S7290C1[6]),  6,8},
  {&(_tg__ZTV7S7290C3__8S7290C12__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C12__7S7290C1[10]),  10,12},
  {&(_tg__ZTV8S7290C11__8S7290C12__7S7290C1[6]),  6,8},
  {&(_ZTV7S7290C1[32]),  32,68},
  {&(_ZTV7S7290C1[17]),  17,68},
  {&(_ZTV7S7290C1[38]),  38,68},
  {&(_ZTV7S7290C1[43]),  43,68},
  {&(_ZTV7S7290C1[49]),  49,68},
  {&(_ZTV7S7290C1[27]),  27,68},
  {&(_ZTV7S7290C1[58]),  58,68},
  {&(_ZTV7S7290C1[66]),  66,68},
  {&(_ZTV7S7290C1[27]),  27,68},
  {&(_tg__ZTV7S7290C3__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C9__7S7290C1[6]),  6,6},
  {&(_tg__ZTV8S7290C10__7S7290C9__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__7S7290C9__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C10__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C10__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C11__7S7290C1[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C11__A1__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C11__A1__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C11__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C14__7S7290C1[6]),  6,8},
  {&(_tg__ZTV8S7290C15__8S7290C14__7S7290C1[6]),  6,8},
  {&(_tg__ZTV7S7290C3__8S7290C14__7S7290C1[3]),  3,3},
  {&(_tg__ZTV8S7290C15__7S7290C1[5]),  5,7},
  {&(_tg__ZTV8S7290C108S7290C15__A2__7S7290C1[5]),  5,5},
  {&(_tg__ZTV7S7290C3__8S7290C108S7290C15__A2__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C3__8S7290C15__7S7290C1[3]),  3,3},
  {&(_tg__ZTV7S7290C6__A2__7S7290C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7290C1[];
extern  VTBL_ENTRY _ZTV7S7290C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7290C1[];
static VTBL_ENTRY alt_thunk_names245[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D0Ev,_ZTv0_n24_N8S7290C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D0Ev,_ZThn8_N8S7290C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C14D1Ev,_ZTv0_n24_N8S7290C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7290C14D1Ev,_ZThn8_N8S7290C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D0Ev,_ZTv0_n24_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D0Ev,_ZThn32_N8S7290C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7290C12D0Ev,_ZThn128_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7290C12D1Ev,_ZTv0_n24_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S7290C12D1Ev,_ZThn32_N8S7290C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S7290C12D1Ev,_ZThn128_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D0Ev,_ZTv0_n28_N8S7290C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7290C12D0Ev,_ZThn120_N8S7290C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7290C12D1Ev,_ZTv0_n28_N8S7290C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S7290C12D1Ev,_ZThn120_N8S7290C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7290C1D0Ev,_ZTv0_n28_N7S7290C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7290C1D0Ev,_ZThn136_N7S7290C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7290C1D1Ev,_ZTv0_n28_N7S7290C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7290C1D1Ev,_ZThn136_N7S7290C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7290C1D0Ev,_ZTv0_n24_N7S7290C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7290C1D0Ev,_ZThn144_N7S7290C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7290C1D0Ev,_ZThn48_N7S7290C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7290C1D1Ev,_ZTv0_n24_N7S7290C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7290C1D1Ev,_ZThn144_N7S7290C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7290C1D1Ev,_ZThn48_N7S7290C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7290C1 = {  "S7290C1", // class name
  bases_S7290C1, 27,
  &(vtc_S7290C1[0]), // expected_vtbl_contents
  &(vtt_S7290C1[0]), // expected_vtt_contents
  ABISELECT(232,160), // object size
  NSPAIRA(_ZTI7S7290C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7290C1),68, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7290C1),39, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names245,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C9  : virtual S20760C9 {
  virtual  ~S2840C9(); // _ZN7S2840C9D2Ev
  S2840C9(); // tgen
};
//SIG(-1 S2840C9) C1{ VBC2{ vd m FL} vd}


 S2840C9 ::~S2840C9(){ note_dtor("S2840C9", this);}
S2840C9 ::S2840C9(){ note_ctor("S2840C9", this);} // tgen

static void Test_S2840C9()
{
  extern Class_Descriptor cd_S2840C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2840C9, buf);
    S2840C9 *dp, &lv = *(dp=new (buf) S2840C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2840C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2840C9)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S2840C9");
    test_class_info(&lv, &cd_S2840C9);
    dp->~S2840C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C9(Test_S2840C9, "S2840C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2840C9C1Ev();
extern void _ZN7S2840C9D2Ev();
Name_Map name_map_S2840C9[] = {
  NSPAIR(_ZN7S2840C9C1Ev),
  NSPAIR(_ZN7S2840C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S2840C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C9[];
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S2840C9D1Ev,_ZThn4_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S2840C9D0Ev,_ZThn4_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C9[];
static  VTT_ENTRY vtt_S2840C9[] = {
  {&(_ZTV7S2840C9[3]),  3,10},
  {&(_ZTV7S2840C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
static VTBL_ENTRY alt_thunk_names246[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2840C9D0Ev,_ZThn4_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2840C9D1Ev,_ZThn4_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C9 = {  "S2840C9", // class name
  bases_S2840C9, 1,
  &(vtc_S2840C9[0]), // expected_vtbl_contents
  &(vtt_S2840C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2840C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2840C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names246,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C7  : S20760C9 , virtual S20760C13 , S2840C9 {
  ::S20760C13 s2840c7f0;
  ~S2840C7(); // tgen
  S2840C7(); // tgen
};
//SIG(-1 S2840C7) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S2840C7 ::~S2840C7(){ note_dtor("S2840C7", this);} // tgen
S2840C7 ::S2840C7(){ note_ctor("S2840C7", this);} // tgen

static void Test_S2840C7()
{
  extern Class_Descriptor cd_S2840C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S2840C7, buf);
    S2840C7 *dp, &lv = *(dp=new (buf) S2840C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S2840C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2840C7)");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2840C7");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S2840C7");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(88,72), "S2840C7");
    check_base_class_offset(lv, (S2840C9*), ABISELECT(16,12), "S2840C7");
    check_field_offset(lv, s2840c7f0, ABISELECT(24,16), "S2840C7.s2840c7f0");
    test_class_info(&lv, &cd_S2840C7);
    dp->~S2840C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C7(Test_S2840C7, "S2840C7", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN7S2840C7C1Ev();
extern void _ZN7S2840C7D1Ev();
Name_Map name_map_S2840C7[] = {
  NSPAIR(_ZN7S2840C7C1Ev),
  NSPAIR(_ZN7S2840C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
static Base_Class bases_S2840C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C7[];
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S2840C7D1Ev,_ZThn72_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S2840C7D0Ev,_ZThn72_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C7[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C7[];
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S2840C9D1Ev,_ZThn60_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S2840C9D0Ev,_ZThn60_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__7S2840C7[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
static  VTT_ENTRY vtt_S2840C7[] = {
  {&(_ZTV7S2840C7[4]),  4,21},
  {&(_tg__ZTV7S2840C9__7S2840C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__7S2840C7[3]),  3,5},
  {&(_ZTV7S2840C7[14]),  14,21},
  {&(_ZTV7S2840C7[9]),  9,21},
  {&(_ZTV7S2840C7[19]),  19,21},
};
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
static VTBL_ENTRY alt_thunk_names247[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C9D0Ev,_ZThn60_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C9D1Ev,_ZThn60_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2840C7D0Ev,_ZThn72_N7S2840C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2840C7D1Ev,_ZThn72_N7S2840C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C7 = {  "S2840C7", // class name
  bases_S2840C7, 4,
  &(vtc_S2840C7[0]), // expected_vtbl_contents
  &(vtt_S2840C7[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI7S2840C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2840C7),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names247,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C11  : virtual S20760C13 , virtual S2840C7 {
  long double s2840c11f0;
  ~S2840C11(); // tgen
  S2840C11(); // tgen
};
//SIG(-1 S2840C11) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S2840C11 ::~S2840C11(){ note_dtor("S2840C11", this);} // tgen
S2840C11 ::S2840C11(){ note_ctor("S2840C11", this);} // tgen

static void Test_S2840C11()
{
  extern Class_Descriptor cd_S2840C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S2840C11, buf);
    S2840C11 *dp, &lv = *(dp=new (buf) S2840C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S2840C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C11)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S2840C11");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(32,16), "S2840C11");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(64,44), "S2840C11");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(120,88), "S2840C11");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(80,56), "S2840C11");
    check_base_class_offset(lv, (S2840C7*), ABISELECT(64,44), "S2840C11");
    check_field_offset(lv, s2840c11f0, ABISELECT(16,4), "S2840C11.s2840c11f0");
    test_class_info(&lv, &cd_S2840C11);
    dp->~S2840C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C11(Test_S2840C11, "S2840C11", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S2840C11C1Ev();
extern void _ZN8S2840C11D1Ev();
Name_Map name_map_S2840C11[] = {
  NSPAIR(_ZN8S2840C11C1Ev),
  NSPAIR(_ZN8S2840C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
static Base_Class bases_S2840C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2840C11[];
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S2840C11D1Ev,_ZThn16_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S2840C11D0Ev,_ZThn16_N8S2840C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn120_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn120_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C11[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2840C11[];
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C11[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C11[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__8S2840C11[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__8S2840C11[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__8S2840C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
static  VTT_ENTRY vtt_S2840C11[] = {
  {&(_ZTV8S2840C11[5]),  5,29},
  {&(_ZTV8S2840C11[10]),  10,29},
  {&(_ZTV8S2840C11[17]),  17,29},
  {&(_ZTV8S2840C11[22]),  22,29},
  {&(_ZTV8S2840C11[27]),  27,29},
  {&(_tg__ZTV7S2840C7__8S2840C11[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__8S2840C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__8S2840C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
static VTBL_ENTRY alt_thunk_names248[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2840C11D0Ev,_ZThn16_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2840C11D1Ev,_ZThn16_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C11 = {  "S2840C11", // class name
  bases_S2840C11, 5,
  &(vtc_S2840C11[0]), // expected_vtbl_contents
  &(vtt_S2840C11[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S2840C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2840C11),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2840C11),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names248,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C10  : S4161C4_nt , S2840C11 , S20760C22_nt , virtual S2840C9 {
  virtual  ~S2840C10(); // _ZN8S2840C10D2Ev
  S2840C10(); // tgen
};
//SIG(-1 S2840C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S2840C10 ::~S2840C10(){ note_dtor("S2840C10", this);}
S2840C10 ::S2840C10(){ note_ctor("S2840C10", this);} // tgen

static void Test_S2840C10()
{
  extern Class_Descriptor cd_S2840C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S2840C10, buf);
    S2840C10 *dp, &lv = *(dp=new (buf) S2840C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S2840C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S2840C10");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*), ABISELECT(48,24), "S2840C10");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(48,24), "S2840C10");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(80,52), "S2840C10");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(136,96), "S2840C10");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(136,96), "S2840C10");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(96,64), "S2840C10");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*), ABISELECT(80,52), "S2840C10");
    check_base_class_offset(lv, (S2840C11*), 0, "S2840C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S2840C10");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*), ABISELECT(152,108), "S2840C10");
    test_class_info(&lv, &cd_S2840C10);
    dp->~S2840C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C10(Test_S2840C10, "S2840C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S2840C10C1Ev();
extern void _ZN8S2840C10D2Ev();
Name_Map name_map_S2840C10[] = {
  NSPAIR(_ZN8S2840C10C1Ev),
  NSPAIR(_ZN8S2840C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
static Base_Class bases_S2840C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2840C11,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2840C9,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2840C10[];
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
extern void ABISELECT(_ZThn40_N8S2840C10D1Ev,_ZThn20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2840C10D0Ev,_ZThn20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S2840C10D1Ev,_ZThn24_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S2840C10D0Ev,_ZThn24_N8S2840C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn52_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn52_N8S2840C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn96_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn96_N8S2840C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S2840C10D1Ev,_ZThn108_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S2840C10D0Ev,_ZThn108_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2840C10D1Ev,_ZThn20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2840C10D0Ev,_ZThn20_N8S2840C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2840C10[];
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C11__8S2840C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S2840C11D1Ev,_ZThn24_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S2840C11D0Ev,_ZThn24_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C11__8S2840C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn52_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn52_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C11__8S2840C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C11__8S2840C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn96_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn96_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C11__8S2840C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__8S2840C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__8S2840C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__8S2840C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__8S2840C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
static  VTT_ENTRY vtt_S2840C10[] = {
  {&(_ZTV8S2840C10[6]),  6,40},
  {&(_tg__ZTV8S2840C11__8S2840C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C11__8S2840C10[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C11__8S2840C10[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C11__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C11__8S2840C10[3]),  3,5},
  {&(_ZTV8S2840C10[15]),  15,40},
  {&(_ZTV8S2840C10[22]),  22,40},
  {&(_ZTV8S2840C10[27]),  27,40},
  {&(_ZTV8S2840C10[32]),  32,40},
  {&(_ZTV8S2840C10[38]),  38,40},
  {&(_tg__ZTV7S2840C7__8S2840C10[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__8S2840C10[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__8S2840C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
static VTBL_ENTRY alt_thunk_names249[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D0Ev,_ZThn32_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2840C9D1Ev,_ZThn32_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn52_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn52_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn96_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C11D0Ev,_ZThn24_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn96_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C11D1Ev,_ZThn24_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2840C10D0Ev,_ZThn108_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2840C10D1Ev,_ZThn108_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn52_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn52_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn96_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C10D0Ev,_ZThn24_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn96_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2840C10D1Ev,_ZThn24_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C10 = {  "S2840C10", // class name
  bases_S2840C10, 9,
  &(vtc_S2840C10[0]), // expected_vtbl_contents
  &(vtt_S2840C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S2840C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2840C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2840C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names249,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C6  : virtual S4161C4_nt , virtual S20760C9 , virtual S2840C7 , S2840C10 , virtual S20760C5_nt {
  ~S2840C6(); // tgen
  S2840C6(); // tgen
};
//SIG(-1 S2840C6) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m FL}}


S2840C6 ::~S2840C6(){ note_dtor("S2840C6", this);} // tgen
S2840C6 ::S2840C6(){ note_ctor("S2840C6", this);} // tgen

static void Test_S2840C6()
{
  extern Class_Descriptor cd_S2840C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,33)];
    init_test(&cd_S2840C6, buf);
    S2840C6 *dp, &lv = *(dp=new (buf) S2840C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,128), "sizeof(S2840C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C6)");
    /*is_ambiguous_... S2840C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S2840C6");
    /*is_ambiguous_... S2840C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S2840C6");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(56,28), "S2840C6");
    /*is_ambiguous_... S2840C6::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(56,28), "S2840C6");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(72,40), "S2840C6");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(128,84), "S2840C6");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*)(S2840C10*), ABISELECT(128,84), "S2840C6");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(88,52), "S2840C6");
    check_base_class_offset(lv, (S2840C7*), ABISELECT(72,40), "S2840C6");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*)(S2840C10*), ABISELECT(72,40), "S2840C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C10*), ABISELECT(32,16), "S2840C6");
    check_base_class_offset(lv, (S2840C11*)(S2840C10*), 0, "S2840C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S2840C10*), ABISELECT(40,20), "S2840C6");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C10*), ABISELECT(160,112), "S2840C6");
    check_base_class_offset(lv, (S2840C10*), 0, "S2840C6");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(168,116), "S2840C6");
    test_class_info(&lv, &cd_S2840C6);
    dp->~S2840C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C6(Test_S2840C6, "S2840C6", ABISELECT(192,128));

#else // __cplusplus

extern void _ZN7S2840C6C1Ev();
extern void _ZN7S2840C6D1Ev();
Name_Map name_map_S2840C6[] = {
  NSPAIR(_ZN7S2840C6C1Ev),
  NSPAIR(_ZN7S2840C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C10;
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S2840C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S2840C11,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2840C10,    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_S20760C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C6[];
extern void _ZN7S2840C6D1Ev();
extern void _ZN7S2840C6D0Ev();
extern void ABISELECT(_ZThn40_N7S2840C6D1Ev,_ZThn20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2840C6D0Ev,_ZThn20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C6D1Ev,_ZThn28_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C6D0Ev,_ZThn28_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn72_N7S2840C6D1Ev,_ZThn40_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn72_N7S2840C6D0Ev,_ZThn40_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S2840C6D1Ev,_ZThn84_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S2840C6D0Ev,_ZThn84_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S2840C6D1Ev,_ZThn112_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S2840C6D0Ev,_ZThn112_N7S2840C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C6[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&_ZN7S2840C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C6D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2840C6D1Ev,_ZThn20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2840C6D0Ev,_ZThn20_N7S2840C6D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C6[];
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C10__7S2840C6[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
};
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn128_N8S2840C11D1Ev,_ZThn84_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn128_N8S2840C11D0Ev,_ZThn84_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn72_N8S2840C11D1Ev,_ZThn40_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn72_N8S2840C11D0Ev,_ZThn40_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S2840C11D1Ev,_ZThn28_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S2840C11D0Ev,_ZThn28_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C118S2840C10__7S2840C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S2840C10D1Ev,_ZThn84_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S2840C10D0Ev,_ZThn84_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C10__7S2840C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S2840C10D1Ev,_ZThn40_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S2840C10D0Ev,_ZThn40_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C10__7S2840C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C10__7S2840C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S2840C10D1Ev,_ZThn28_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S2840C10D0Ev,_ZThn28_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C10__7S2840C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S2840C10D1Ev,_ZThn112_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S2840C10D0Ev,_ZThn112_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C10__7S2840C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C6[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C6[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__7S2840C6[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__7S2840C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__7S2840C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C6[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__7S2840C6[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
static  VTT_ENTRY vtt_S2840C6[] = {
  {&(_ZTV7S2840C6[8]),  8,47},
  {&(_tg__ZTV8S2840C10__7S2840C6[6]),  6,8},
  {&(_tg__ZTV8S2840C118S2840C10__7S2840C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C118S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C118S2840C10__7S2840C6[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C118S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C118S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C10__7S2840C6[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C10__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C10__7S2840C6[4]),  4,6},
  {&(_ZTV7S2840C6[17]),  17,47},
  {&(_ZTV7S2840C6[24]),  24,47},
  {&(_ZTV7S2840C6[34]),  34,47},
  {&(_ZTV7S2840C6[29]),  29,47},
  {&(_ZTV7S2840C6[40]),  40,47},
  {&(_ZTV7S2840C6[45]),  45,47},
  {&(_tg__ZTV7S2840C7__7S2840C6[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__7S2840C6[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__7S2840C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2840C6[];
extern  VTBL_ENTRY _ZTV7S2840C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C6[];
static VTBL_ENTRY alt_thunk_names250[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2840C10D0Ev,_ZThn112_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2840C10D1Ev,_ZThn112_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C10D0Ev,_ZThn40_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C10D1Ev,_ZThn40_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C10D0Ev,_ZThn28_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C10D0Ev,_ZThn84_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C10D1Ev,_ZThn28_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C10D1Ev,_ZThn84_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C11D0Ev,_ZThn40_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2840C11D1Ev,_ZThn40_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C11D0Ev,_ZThn28_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C11D0Ev,_ZThn84_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2840C11D1Ev,_ZThn28_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2840C11D1Ev,_ZThn84_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2840C6D0Ev,_ZThn112_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2840C6D1Ev,_ZThn112_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C6D0Ev,_ZThn40_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2840C6D1Ev,_ZThn40_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2840C6D0Ev,_ZThn84_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C6D0Ev,_ZThn28_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2840C6D1Ev,_ZThn84_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C6D1Ev,_ZThn28_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C6 = {  "S2840C6", // class name
  bases_S2840C6, 12,
  &(vtc_S2840C6[0]), // expected_vtbl_contents
  &(vtt_S2840C6[0]), // expected_vtt_contents
  ABISELECT(192,128), // object size
  NSPAIRA(_ZTI7S2840C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2840C6),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C6),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names250,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C14  : virtual S20760C13 , S2840C7 , virtual S4161C4_nt {
  ::S2840C6 s2840c14f0;
  ~S2840C14(); // tgen
  S2840C14(); // tgen
};
//SIG(-1 S2840C14) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m FL}}}


S2840C14 ::~S2840C14(){ note_dtor("S2840C14", this);} // tgen
S2840C14 ::S2840C14(){ note_ctor("S2840C14", this);} // tgen

static void Test_S2840C14()
{
  extern Class_Descriptor cd_S2840C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,55)];
    init_test(&cd_S2840C14, buf);
    S2840C14 *dp, &lv = *(dp=new (buf) S2840C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,216), "sizeof(S2840C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,172), "S2840C14");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(256,172), "S2840C14");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), 0, "S2840C14");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(288,200), "S2840C14");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(16,12), "S2840C14");
    check_base_class_offset(lv, (S2840C7*), 0, "S2840C14");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,212), "S2840C14");
    check_field_offset(lv, s2840c14f0, ABISELECT(64,44), "S2840C14.s2840c14f0");
    test_class_info(&lv, &cd_S2840C14);
    dp->~S2840C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C14(Test_S2840C14, "S2840C14", ABISELECT(320,216));

#else // __cplusplus

extern void _ZN8S2840C14C1Ev();
extern void _ZN8S2840C14D1Ev();
Name_Map name_map_S2840C14[] = {
  NSPAIR(_ZN8S2840C14C1Ev),
  NSPAIR(_ZN8S2840C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S2840C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,172), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,200), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2840C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2840C14[];
extern void _ZN8S2840C14D1Ev();
extern void _ZN8S2840C14D0Ev();
extern void ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2840C14D1Ev,_ZThn172_N8S2840C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
extern void ABISELECT(_ZThn256_N8S2840C14D0Ev,_ZThn172_N8S2840C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn288_N8S2840C14D1Ev,_ZThn200_N8S2840C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
extern void ABISELECT(_ZThn288_N8S2840C14D0Ev,_ZThn200_N8S2840C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2840C14[] = {
  ABISELECT(304,212),
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&_ZN8S2840C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C14D0Ev,
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev),
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S2840C14[];
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C14[] = {
  ABISELECT(288,200),
  ABISELECT(256,172),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C14[] = {
  ABISELECT(272,188),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZThn272_N7S2840C9D1Ev,_ZThn188_N7S2840C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
extern void ABISELECT(_ZThn272_N7S2840C9D0Ev,_ZThn188_N7S2840C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C14[] = {
  ABISELECT(-272,-188),
  ABISELECT(-272,-188),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S2840C7D1Ev,_ZThn172_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S2840C7D0Ev,_ZThn172_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__8S2840C14[] = {
  ABISELECT(-256,-172),
  ABISELECT(-256,-172),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__8S2840C14[] = {
  ABISELECT(272,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn288_N7S2840C7D1Ev,_ZThn200_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn288_N7S2840C7D0Ev,_ZThn200_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__8S2840C14[] = {
  ABISELECT(-288,-200),
  ABISELECT(-288,-200),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
static  VTT_ENTRY vtt_S2840C14[] = {
  {&(_ZTV8S2840C14[5]),  5,22},
  {&(_tg__ZTV7S2840C7__8S2840C14[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__8S2840C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__8S2840C14[3]),  3,5},
  {&(_ZTV8S2840C14[15]),  15,22},
  {&(_ZTV8S2840C14[10]),  10,22},
  {&(_ZTV8S2840C14[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S2840C14[];
extern  VTBL_ENTRY _ZTV8S2840C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C14[];
static VTBL_ENTRY alt_thunk_names251[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2840C7D0Ev,_ZThn200_N7S2840C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2840C7D0Ev,_ZThn172_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2840C7D1Ev,_ZThn200_N7S2840C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2840C7D1Ev,_ZThn172_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2840C9D0Ev,_ZThn188_N7S2840C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2840C9D1Ev,_ZThn188_N7S2840C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2840C14D0Ev,_ZThn200_N8S2840C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2840C14D0Ev,_ZThn172_N8S2840C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2840C14D1Ev,_ZThn200_N8S2840C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2840C14D1Ev,_ZThn172_N8S2840C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C14 = {  "S2840C14", // class name
  bases_S2840C14, 6,
  &(vtc_S2840C14[0]), // expected_vtbl_contents
  &(vtt_S2840C14[0]), // expected_vtt_contents
  ABISELECT(320,216), // object size
  NSPAIRA(_ZTI8S2840C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2840C14),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2840C14),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names251,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2840C2  : S4228C37 , S20760C9 , virtual S4161C4_nt , S2840C6 , virtual S2840C14 {
  int s2840c2f0;
  virtual  ~S2840C2(); // _ZN7S2840C2D2Ev
  S2840C2(); // tgen
};
//SIG(-1 S2840C2) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m FL}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S2840C2 ::~S2840C2(){ note_dtor("S2840C2", this);}
S2840C2 ::S2840C2(){ note_ctor("S2840C2", this);} // tgen

static void Test_S2840C2()
{
  extern Class_Descriptor cd_S2840C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,80)];
    init_test(&cd_S2840C2, buf);
    S2840C2 *dp, &lv = *(dp=new (buf) S2840C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,316), "sizeof(S2840C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C2)");
    check_base_class_offset(lv, (S4228C37*), 0, "S2840C2");
    /*is_ambiguous_... S2840C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2840C2");
    /*is_ambiguous_... S2840C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S2840C2");
    /*is_ambiguous_... S2840C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2840C6*), ABISELECT(72,40), "S2840C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C14*), ABISELECT(72,40), "S2840C2");
    /*is_ambiguous_... S2840C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C6*), ABISELECT(80,44), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(80,44), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(80,44), "S2840C2");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(80,44), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(96,56), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(152,100), "S2840C2");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*)(S2840C10*)(S2840C6*), ABISELECT(152,100), "S2840C2");
    check_base_class_offset(lv, (S20760C13*)(S2840C14*), ABISELECT(152,100), "S2840C2");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*)(S2840C14*), ABISELECT(152,100), "S2840C2");
    /*is_ambiguous_... S2840C2::S2840C7 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(112,68), "S2840C2");
    check_base_class_offset(lv, (S2840C7*)(S2840C6*), ABISELECT(96,56), "S2840C2");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*)(S2840C10*)(S2840C6*), ABISELECT(96,56), "S2840C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C10*)(S2840C6*), ABISELECT(48,28), "S2840C2");
    check_base_class_offset(lv, (S2840C11*)(S2840C10*)(S2840C6*), ABISELECT(16,12), "S2840C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S2840C10*)(S2840C6*), ABISELECT(56,32), "S2840C2");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C10*)(S2840C6*), ABISELECT(184,128), "S2840C2");
    check_base_class_offset(lv, (S2840C10*)(S2840C6*), ABISELECT(16,12), "S2840C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S2840C6*), ABISELECT(192,132), "S2840C2");
    check_base_class_offset(lv, (S2840C6*), ABISELECT(16,12), "S2840C2");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*)(S2840C14*), ABISELECT(208,144), "S2840C2");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(224,156), "S2840C2");
    check_base_class_offset(lv, (S2840C7*)(S2840C14*), ABISELECT(208,144), "S2840C2");
    check_base_class_offset(lv, (S2840C14*), ABISELECT(208,144), "S2840C2");
    check_field_offset(lv, s2840c2f0, ABISELECT(64,36), "S2840C2.s2840c2f0");
    test_class_info(&lv, &cd_S2840C2);
    dp->~S2840C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C2(Test_S2840C2, "S2840C2", ABISELECT(464,316));

#else // __cplusplus

extern void _ZN7S2840C2C1Ev();
extern void _ZN7S2840C2D2Ev();
Name_Map name_map_S2840C2[] = {
  NSPAIR(_ZN7S2840C2C1Ev),
  NSPAIR(_ZN7S2840C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C10;
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S2840C6;
extern VTBL_ENTRY _ZTI7S2840C6[];
extern  VTBL_ENTRY _ZTV7S2840C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S2840C14;
extern VTBL_ENTRY _ZTI8S2840C14[];
extern  VTBL_ENTRY _ZTV8S2840C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C14[];
static Base_Class bases_S2840C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S2840C11,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2840C10,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2840C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(208,144), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2840C14,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C2[];
extern void _ZN7S2840C2D1Ev();
extern void _ZN7S2840C2D0Ev();
extern void ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C2D1Ev,_ZThn32_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C2D0Ev,_ZThn32_N7S2840C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn44_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn44_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn56_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn56_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn100_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn100_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn128_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn128_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn144_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn144_N7S2840C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev)();
static  VTBL_ENTRY vtc_S2840C2[] = {
  ABISELECT(208,144),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&_ZN7S2840C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C2D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C2D1Ev,_ZThn32_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C2D0Ev,_ZThn32_N7S2840C2D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C2[];
extern void _ZN7S2840C6D1Ev();
extern void _ZN7S2840C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C6__7S2840C2[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&_ZN7S2840C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C6D0Ev,
};
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
};
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn32_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn32_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn88_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn88_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn44_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn44_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn32_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn32_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn116_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn116_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C107S2840C6__7S2840C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn32_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn32_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C6__7S2840C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn44_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn44_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C6__7S2840C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn88_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn88_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C6__7S2840C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C6__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C6__7S2840C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S2840C6__7S2840C2[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C2[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C2[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__7S2840C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__7S2840C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__7S2840C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C2[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__7S2840C2[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void _ZN8S2840C14D1Ev();
extern void _ZN8S2840C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C14__7S2840C2[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&_ZN8S2840C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C14D0Ev,
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C2[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C2[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C14__7S2840C2[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C2[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C14__7S2840C2[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
static  VTT_ENTRY vtt_S2840C2[] = {
  {&(_ZTV7S2840C2[9]),  9,71},
  {&(_tg__ZTV7S2840C6__7S2840C2[8]),  8,10},
  {&(_tg__ZTV8S2840C107S2840C6__7S2840C2[6]),  6,8},
  {&(_tg__ZTV8S2840C118S2840C107S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C118S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C107S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C107S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C107S2840C6__7S2840C2[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C7__7S2840C6__7S2840C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C6__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C6__7S2840C2[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S2840C6__7S2840C2[3]),  3,5},
  {&(_ZTV7S2840C2[19]),  19,71},
  {&(_ZTV7S2840C2[28]),  28,71},
  {&(_ZTV7S2840C2[35]),  35,71},
  {&(_ZTV7S2840C2[45]),  45,71},
  {&(_ZTV7S2840C2[40]),  40,71},
  {&(_ZTV7S2840C2[51]),  51,71},
  {&(_ZTV7S2840C2[56]),  56,71},
  {&(_ZTV7S2840C2[64]),  64,71},
  {&(_ZTV7S2840C2[69]),  69,71},
  {&(_tg__ZTV7S2840C7__7S2840C2[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S2840C14__7S2840C2[5]),  5,7},
  {&(_tg__ZTV7S2840C78S2840C14__A1__7S2840C2[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C14__7S2840C2[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C14__7S2840C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2840C2[];
extern  VTBL_ENTRY _ZTV7S2840C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C2[];
static VTBL_ENTRY alt_thunk_names252[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn116_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn116_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn44_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn44_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn88_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn32_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn88_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn32_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn116_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn116_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn44_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn44_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn32_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn88_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn32_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn88_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn44_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn44_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn32_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn88_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn32_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn88_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn144_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn144_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn128_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn128_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn56_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn56_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn100_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn44_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn100_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn44_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C2 = {  "S2840C2", // class name
  bases_S2840C2, 19,
  &(vtc_S2840C2[0]), // expected_vtbl_contents
  &(vtt_S2840C2[0]), // expected_vtt_contents
  ABISELECT(464,316), // object size
  NSPAIRA(_ZTI7S2840C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2840C2),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C2),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names252,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

union  S2840C15_nt  {
  int s2840c15f0;
  void  mf2840c15(); // _ZN11S2840C15_nt9mf2840c15Ev
};
//SIG(1 S2840C15_nt) U1{ m Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S2840C1  : S2840C2 {
  ::S2840C15_nt s2840c1f0;
  ~S2840C1(); // tgen
  S2840C1(); // tgen
};
//SIG(1 S2840C1) C1{ BC2{ BC3{ m} BC4{ vd m FL} VBC5{ m Fp} BC6{ VBC5 VBC4 VBC7{ BC4 VBC8{ vd m Fi[6]} BC9{ VBC4 vd} FC8} BC10{ BC5 BC11{ VBC8 VBC7 FD} BC12{ vd m} VBC9 vd} VBC13{ vd m FL}} VBC14{ VBC8 BC7 VBC5 FC6} vd Fi} FU15{ m Fi}}


S2840C1 ::~S2840C1(){ note_dtor("S2840C1", this);} // tgen
S2840C1 ::S2840C1(){ note_ctor("S2840C1", this);} // tgen

static void Test_S2840C1()
{
  extern Class_Descriptor cd_S2840C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,81)];
    init_test(&cd_S2840C1, buf);
    S2840C1 *dp, &lv = *(dp=new (buf) S2840C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,320), "sizeof(S2840C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2840C1)");
    check_base_class_offset(lv, (S4228C37*)(S2840C2*), 0, "S2840C1");
    /*is_ambiguous_... S2840C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C2*), 0, "S2840C1");
    /*is_ambiguous_... S2840C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2840C2*), ABISELECT(72,44), "S2840C1");
    /*is_ambiguous_... S2840C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2840C6*)(S2840C2*), ABISELECT(72,44), "S2840C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C14*), ABISELECT(72,44), "S2840C1");
    /*is_ambiguous_... S2840C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C6*)(S2840C2*), ABISELECT(80,48), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*), ABISELECT(80,48), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C9*), ABISELECT(80,48), "S2840C1");
    check_base_class_offset(lv, (S20760C9*)(S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(80,48), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*), ABISELECT(96,60), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2840C7*), ABISELECT(152,104), "S2840C1");
    check_base_class_offset(lv, (S20760C13*)(S2840C11*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(152,104), "S2840C1");
    check_base_class_offset(lv, (S20760C13*)(S2840C14*), ABISELECT(152,104), "S2840C1");
    check_base_class_offset(lv, (S20760C13*)(S2840C7*)(S2840C14*), ABISELECT(152,104), "S2840C1");
    /*is_ambiguous_... S2840C1::S2840C7 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C7*), ABISELECT(112,72), "S2840C1");
    check_base_class_offset(lv, (S2840C7*)(S2840C6*)(S2840C2*), ABISELECT(96,60), "S2840C1");
    check_base_class_offset(lv, (S2840C7*)(S2840C11*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(96,60), "S2840C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(48,28), "S2840C1");
    check_base_class_offset(lv, (S2840C11*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(16,12), "S2840C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(56,32), "S2840C1");
    /*is_ambiguous_... S2840C10::S2840C9 */ AMB_check_base_class_offset(lv, (S2840C9*)(S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(184,132), "S2840C1");
    check_base_class_offset(lv, (S2840C10*)(S2840C6*)(S2840C2*), ABISELECT(16,12), "S2840C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S2840C6*)(S2840C2*), ABISELECT(192,136), "S2840C1");
    check_base_class_offset(lv, (S2840C6*)(S2840C2*), ABISELECT(16,12), "S2840C1");
    /*is_ambiguous_... S2840C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2840C7*)(S2840C14*), ABISELECT(208,148), "S2840C1");
    check_base_class_offset(lv, (S2840C9*)(S2840C7*)(S2840C14*), ABISELECT(224,160), "S2840C1");
    check_base_class_offset(lv, (S2840C7*)(S2840C14*), ABISELECT(208,148), "S2840C1");
    check_base_class_offset(lv, (S2840C14*)(S2840C2*), ABISELECT(208,148), "S2840C1");
    check_base_class_offset(lv, (S2840C2*), 0, "S2840C1");
    check_field_offset(lv, s2840c1f0, ABISELECT(68,40), "S2840C1.s2840c1f0");
    test_class_info(&lv, &cd_S2840C1);
    dp->~S2840C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2840C1(Test_S2840C1, "S2840C1", ABISELECT(464,320));

#else // __cplusplus

extern void _ZN7S2840C1C1Ev();
extern void _ZN7S2840C1D1Ev();
Name_Map name_map_S2840C1[] = {
  NSPAIR(_ZN7S2840C1C1Ev),
  NSPAIR(_ZN7S2840C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2840C11;
extern VTBL_ENTRY _ZTI8S2840C11[];
extern  VTBL_ENTRY _ZTV8S2840C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C10;
extern VTBL_ENTRY _ZTI8S2840C10[];
extern  VTBL_ENTRY _ZTV8S2840C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C10[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S2840C6;
extern VTBL_ENTRY _ZTI7S2840C6[];
extern  VTBL_ENTRY _ZTV7S2840C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2840C9;
extern VTBL_ENTRY _ZTI7S2840C9[];
extern  VTBL_ENTRY _ZTV7S2840C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C9[];
extern Class_Descriptor cd_S2840C7;
extern VTBL_ENTRY _ZTI7S2840C7[];
extern  VTBL_ENTRY _ZTV7S2840C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C7[];
extern Class_Descriptor cd_S2840C14;
extern VTBL_ENTRY _ZTI8S2840C14[];
extern  VTBL_ENTRY _ZTV8S2840C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2840C14[];
extern Class_Descriptor cd_S2840C2;
extern VTBL_ENTRY _ZTI7S2840C2[];
extern  VTBL_ENTRY _ZTV7S2840C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C2[];
static Base_Class bases_S2840C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S4161C4_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
    14, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    25, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,104), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2840C9,    ABISELECT(112,72), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(96,60), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S2840C11,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(184,132), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2840C10,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(192,136), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2840C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C9,    ABISELECT(224,160), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2840C7,    ABISELECT(208,148), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2840C14,    ABISELECT(208,148), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S2840C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2840C1[];
extern void _ZN7S2840C1D1Ev();
extern void _ZN7S2840C1D0Ev();
extern void ABISELECT(_ZThn16_N7S2840C1D1Ev,_ZThn12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C1D0Ev,_ZThn12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C1D1Ev,_ZThn32_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C1D0Ev,_ZThn32_N7S2840C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C1D1Ev,_ZThn48_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C1D0Ev,_ZThn48_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C1D1Ev,_ZTv0_n20_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S2840C1D1Ev,_ZThn60_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C1D0Ev,_ZTv0_n20_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S2840C1D0Ev,_ZThn60_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2840C1D1Ev,_ZTvn12_n20_N7S2840C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C1D0Ev,_ZTvn12_n20_N7S2840C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S2840C1D1Ev,_ZThn104_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S2840C1D0Ev,_ZThn104_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C1D1Ev,_ZTv0_n16_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S2840C1D1Ev,_ZThn132_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C1D0Ev,_ZTv0_n16_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S2840C1D0Ev,_ZThn132_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S2840C1D1Ev,_ZThn136_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S2840C1D0Ev,_ZThn136_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C1D1Ev,_ZTv0_n24_N7S2840C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S2840C1D1Ev,_ZThn148_N7S2840C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C1D0Ev,_ZTv0_n24_N7S2840C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S2840C1D0Ev,_ZThn148_N7S2840C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2840C1D1Ev,_ZTvn12_n24_N7S2840C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2840C1D0Ev,_ZTvn12_n24_N7S2840C1D0Ev)();
static  VTBL_ENTRY vtc_S2840C1[] = {
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&_ZN7S2840C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C1D0Ev,
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C1D1Ev,_ZThn12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C1D0Ev,_ZThn12_N7S2840C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C1D1Ev,_ZThn32_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2840C1D0Ev,_ZThn32_N7S2840C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C1D1Ev,_ZTv0_n20_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C1D0Ev,_ZTv0_n20_N7S2840C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C1D1Ev,_ZTvn12_n20_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C1D0Ev,_ZTvn12_n20_N7S2840C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C1D1Ev,_ZTv0_n16_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C1D0Ev,_ZTv0_n16_N7S2840C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev),
  ABISELECT(-208,-148),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C1D1Ev,_ZTv0_n24_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C1D0Ev,_ZTv0_n24_N7S2840C1D0Ev),
  ABISELECT(-144,-112),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S2840C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C1D1Ev,_ZTvn12_n24_N7S2840C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C1D0Ev,_ZTvn12_n24_N7S2840C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2840C1[];
extern void _ZN7S2840C2D1Ev();
extern void _ZN7S2840C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C2__7S2840C1[] = {
  ABISELECT(208,148),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&_ZN7S2840C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C2D0Ev,
};
extern void _ZN7S2840C6D1Ev();
extern void _ZN7S2840C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&_ZN7S2840C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C6D0Ev,
};
extern void _ZN8S2840C10D1Ev();
extern void _ZN8S2840C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&_ZN8S2840C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C10D0Ev,
};
extern void _ZN8S2840C11D1Ev();
extern void _ZN8S2840C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&_ZN8S2840C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn92_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn92_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn48_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn48_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D1Ev,_ZTvn12_n20_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C11D0Ev,_ZTvn12_n20_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn36_N8S2840C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn36_N8S2840C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2840C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn92_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn92_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn48_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn48_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D1Ev,_ZTvn12_n20_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2840C10D0Ev,_ZTvn12_n20_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn36_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn36_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn120_N8S2840C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn120_N8S2840C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S2840C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn36_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn36_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn48_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn48_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn92_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn92_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D1Ev,_ZTvn12_n20_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C6D0Ev,_ZTvn12_n20_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn124_N7S2840C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn124_N7S2840C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S2840C67S2840C2__7S2840C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI7S2840C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C6__7S2840C2__7S2840C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D1Ev,_ZThn12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C2D0Ev,_ZThn12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn48_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn48_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C2__7S2840C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn60_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn60_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C2__7S2840C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn104_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn104_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C2__7S2840C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C2__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D1Ev,_ZTvn12_n20_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2840C2D0Ev,_ZTvn12_n20_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C2__7S2840C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn136_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn136_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__7S2840C2__7S2840C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn148_N7S2840C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn148_N7S2840C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2840C14__7S2840C2__7S2840C1[] = {
  ABISELECT(-208,-148),
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2__7S2840C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-224,-160),
  (VTBL_ENTRY)&(_ZTI7S2840C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D1Ev,_ZTvn12_n24_N7S2840C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2840C2D0Ev,_ZTvn12_n24_N7S2840C2D0Ev),
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C7__7S2840C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__7S2840C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C7__7S2840C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C7__7S2840C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C7__7S2840C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C9__A1__7S2840C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C9__A1__7S2840C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void _ZN8S2840C14D1Ev();
extern void _ZN8S2840C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2840C14__7S2840C1[] = {
  ABISELECT(-136,-104),
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&_ZN8S2840C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2840C14D0Ev,
};
extern void _ZN7S2840C7D1Ev();
extern void _ZN7S2840C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(-128,-100),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&_ZN7S2840C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C7D0Ev,
};
extern void _ZN7S2840C9D1Ev();
extern void _ZN7S2840C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C1[] = {
  ABISELECT(-144,-112),
  0,
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&_ZN7S2840C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2840C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C1[] = {
  ABISELECT(144,112),
  ABISELECT(144,112),
  (VTBL_ENTRY)&(_ZTI7S2840C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D1Ev,_ZTv0_n12_N7S2840C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C9D0Ev,_ZTv0_n12_N7S2840C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D1Ev,_ZThn12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2840C7D0Ev,_ZThn12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI7S2840C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2840C14__7S2840C1[] = {
  ABISELECT(56,44),
  ABISELECT(56,44),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C1[] = {
  ABISELECT(-144,-112),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D1Ev,_ZThn12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2840C14D0Ev,_ZThn12_N8S2840C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2840C14__7S2840C1[] = {
  ABISELECT(128,100),
  ABISELECT(128,100),
  (VTBL_ENTRY)&(_ZTI8S2840C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D1Ev,_ZTv0_n12_N8S2840C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2840C14D0Ev,_ZTv0_n12_N8S2840C14D0Ev),
};
static  VTT_ENTRY vtt_S2840C1[] = {
  {&(_ZTV7S2840C1[9]),  9,71},
  {&(_tg__ZTV7S2840C2__7S2840C1[9]),  9,11},
  {&(_tg__ZTV7S2840C67S2840C2__7S2840C1[8]),  8,10},
  {&(_tg__ZTV8S2840C107S2840C67S2840C2__7S2840C1[6]),  6,8},
  {&(_tg__ZTV8S2840C118S2840C107S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C118S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__8S2840C107S2840C67S2840C2__7S2840C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__7S2840C67S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C67S2840C2__7S2840C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S2840C67S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C6__7S2840C2__7S2840C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C7__7S2840C2__7S2840C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C2__7S2840C1[4]),  4,6},
  {&(_tg__ZTV11S20760C5_nt__7S2840C2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S2840C14__7S2840C2__7S2840C1[6]),  6,8},
  {&(_tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C2__7S2840C1[3]),  3,5},
  {&(_ZTV7S2840C1[19]),  19,71},
  {&(_ZTV7S2840C1[28]),  28,71},
  {&(_ZTV7S2840C1[35]),  35,71},
  {&(_ZTV7S2840C1[45]),  45,71},
  {&(_ZTV7S2840C1[40]),  40,71},
  {&(_ZTV7S2840C1[51]),  51,71},
  {&(_ZTV7S2840C1[56]),  56,71},
  {&(_ZTV7S2840C1[64]),  64,71},
  {&(_ZTV7S2840C1[69]),  69,71},
  {&(_tg__ZTV7S2840C7__7S2840C1[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C7__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C9__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S2840C14__7S2840C1[5]),  5,7},
  {&(_tg__ZTV7S2840C78S2840C14__A1__7S2840C1[4]),  4,6},
  {&(_tg__ZTV7S2840C97S2840C78S2840C14__A2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2840C97S2840C78S2840C14__A2__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2840C78S2840C14__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C9__7S2840C78S2840C14__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2840C78S2840C14__A1__7S2840C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2840C14__7S2840C1[3]),  3,5},
  {&(_tg__ZTV7S2840C97S2840C7__8S2840C14__7S2840C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2840C14__7S2840C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2840C1[];
extern  VTBL_ENTRY _ZTV7S2840C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2840C1[];
static VTBL_ENTRY alt_thunk_names253[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D0Ev,_ZTv0_n12_N7S2840C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D0Ev,_ZThn44_N7S2840C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C7D1Ev,_ZTv0_n12_N7S2840C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2840C7D1Ev,_ZThn44_N7S2840C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D0Ev,_ZTv0_n24_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D0Ev,_ZThn148_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C2D1Ev,_ZTv0_n24_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C2D1Ev,_ZThn148_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D0Ev,_ZTv0_n16_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D0Ev,_ZThn132_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C2D1Ev,_ZTv0_n16_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C2D1Ev,_ZThn132_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D0Ev,_ZTv0_n20_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D0Ev,_ZThn60_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C2D1Ev,_ZTv0_n20_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C2D1Ev,_ZThn60_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D0Ev,_ZTv0_n12_N7S2840C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D0Ev,_ZThn136_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D0Ev,_ZThn104_N7S2840C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D0Ev,_ZThn48_N7S2840C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C2D1Ev,_ZTv0_n12_N7S2840C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C2D1Ev,_ZThn136_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C2D1Ev,_ZThn104_N7S2840C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C2D1Ev,_ZThn48_N7S2840C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D0Ev,_ZTv0_n16_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D0Ev,_ZThn120_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C6D1Ev,_ZTv0_n16_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2840C6D1Ev,_ZThn120_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D0Ev,_ZTv0_n20_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D0Ev,_ZThn48_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C6D1Ev,_ZTv0_n20_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C6D1Ev,_ZThn48_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D0Ev,_ZTv0_n12_N7S2840C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D0Ev,_ZThn124_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D0Ev,_ZThn92_N7S2840C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D0Ev,_ZThn36_N7S2840C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C6D1Ev,_ZTv0_n12_N7S2840C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2840C6D1Ev,_ZThn124_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2840C6D1Ev,_ZThn92_N7S2840C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2840C6D1Ev,_ZThn36_N7S2840C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D0Ev,_ZTv0_n16_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D0Ev,_ZThn120_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2840C10D1Ev,_ZTv0_n16_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2840C10D1Ev,_ZThn120_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D0Ev,_ZTv0_n20_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D0Ev,_ZThn48_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C10D1Ev,_ZTv0_n20_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C10D1Ev,_ZThn48_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D0Ev,_ZTv0_n12_N8S2840C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D0Ev,_ZThn36_N8S2840C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D0Ev,_ZThn92_N8S2840C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C10D1Ev,_ZTv0_n12_N8S2840C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C10D1Ev,_ZThn36_N8S2840C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C10D1Ev,_ZThn92_N8S2840C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D0Ev,_ZTv0_n20_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D0Ev,_ZThn48_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2840C11D1Ev,_ZTv0_n20_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2840C11D1Ev,_ZThn48_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D0Ev,_ZTv0_n12_N8S2840C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D0Ev,_ZThn36_N8S2840C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D0Ev,_ZThn92_N8S2840C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2840C11D1Ev,_ZTv0_n12_N8S2840C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2840C11D1Ev,_ZThn36_N8S2840C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2840C11D1Ev,_ZThn92_N8S2840C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C1D0Ev,_ZTv0_n24_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C1D0Ev,_ZThn148_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2840C1D1Ev,_ZTv0_n24_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2840C1D1Ev,_ZThn148_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C1D0Ev,_ZTv0_n16_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C1D0Ev,_ZThn132_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2840C1D1Ev,_ZTv0_n16_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2840C1D1Ev,_ZThn132_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C1D0Ev,_ZTv0_n20_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C1D0Ev,_ZThn60_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2840C1D1Ev,_ZTv0_n20_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2840C1D1Ev,_ZThn60_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C1D0Ev,_ZTv0_n12_N7S2840C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C1D0Ev,_ZThn136_N7S2840C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C1D0Ev,_ZThn104_N7S2840C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C1D0Ev,_ZThn48_N7S2840C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2840C1D1Ev,_ZTv0_n12_N7S2840C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2840C1D1Ev,_ZThn136_N7S2840C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2840C1D1Ev,_ZThn104_N7S2840C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2840C1D1Ev,_ZThn48_N7S2840C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2840C1 = {  "S2840C1", // class name
  bases_S2840C1, 20,
  &(vtc_S2840C1[0]), // expected_vtbl_contents
  &(vtt_S2840C1[0]), // expected_vtt_contents
  ABISELECT(464,320), // object size
  NSPAIRA(_ZTI7S2840C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2840C1),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2840C1),56, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names253,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C9  : virtual S20760C9 {
  virtual  ~S2839C9(); // _ZN7S2839C9D2Ev
  S2839C9(); // tgen
};
//SIG(-1 S2839C9) C1{ VBC2{ vd m FL} vd}


 S2839C9 ::~S2839C9(){ note_dtor("S2839C9", this);}
S2839C9 ::S2839C9(){ note_ctor("S2839C9", this);} // tgen

static void Test_S2839C9()
{
  extern Class_Descriptor cd_S2839C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2839C9, buf);
    S2839C9 *dp, &lv = *(dp=new (buf) S2839C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2839C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2839C9)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S2839C9");
    test_class_info(&lv, &cd_S2839C9);
    dp->~S2839C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C9(Test_S2839C9, "S2839C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2839C9C1Ev();
extern void _ZN7S2839C9D2Ev();
Name_Map name_map_S2839C9[] = {
  NSPAIR(_ZN7S2839C9C1Ev),
  NSPAIR(_ZN7S2839C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S2839C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C9[];
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S2839C9D1Ev,_ZThn4_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S2839C9D0Ev,_ZThn4_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C9[];
static  VTT_ENTRY vtt_S2839C9[] = {
  {&(_ZTV7S2839C9[3]),  3,10},
  {&(_ZTV7S2839C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
static VTBL_ENTRY alt_thunk_names254[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2839C9D0Ev,_ZThn4_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S2839C9D1Ev,_ZThn4_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C9 = {  "S2839C9", // class name
  bases_S2839C9, 1,
  &(vtc_S2839C9[0]), // expected_vtbl_contents
  &(vtt_S2839C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2839C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2839C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names254,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C7  : S20760C9 , virtual S20760C13 , S2839C9 {
  ::S20760C13 s2839c7f0;
  ~S2839C7(); // tgen
  S2839C7(); // tgen
};
//SIG(-1 S2839C7) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S2839C7 ::~S2839C7(){ note_dtor("S2839C7", this);} // tgen
S2839C7 ::S2839C7(){ note_ctor("S2839C7", this);} // tgen

static void Test_S2839C7()
{
  extern Class_Descriptor cd_S2839C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S2839C7, buf);
    S2839C7 *dp, &lv = *(dp=new (buf) S2839C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S2839C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2839C7)");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2839C7");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S2839C7");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(88,72), "S2839C7");
    check_base_class_offset(lv, (S2839C9*), ABISELECT(16,12), "S2839C7");
    check_field_offset(lv, s2839c7f0, ABISELECT(24,16), "S2839C7.s2839c7f0");
    test_class_info(&lv, &cd_S2839C7);
    dp->~S2839C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C7(Test_S2839C7, "S2839C7", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN7S2839C7C1Ev();
extern void _ZN7S2839C7D1Ev();
Name_Map name_map_S2839C7[] = {
  NSPAIR(_ZN7S2839C7C1Ev),
  NSPAIR(_ZN7S2839C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
static Base_Class bases_S2839C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C7[];
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S2839C7D1Ev,_ZThn72_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S2839C7D0Ev,_ZThn72_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C7[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C7[];
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S2839C9D1Ev,_ZThn60_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S2839C9D0Ev,_ZThn60_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__7S2839C7[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
static  VTT_ENTRY vtt_S2839C7[] = {
  {&(_ZTV7S2839C7[4]),  4,21},
  {&(_tg__ZTV7S2839C9__7S2839C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__7S2839C7[3]),  3,5},
  {&(_ZTV7S2839C7[14]),  14,21},
  {&(_ZTV7S2839C7[9]),  9,21},
  {&(_ZTV7S2839C7[19]),  19,21},
};
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
static VTBL_ENTRY alt_thunk_names255[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C9D0Ev,_ZThn60_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C9D1Ev,_ZThn60_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2839C7D0Ev,_ZThn72_N7S2839C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S2839C7D1Ev,_ZThn72_N7S2839C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C7 = {  "S2839C7", // class name
  bases_S2839C7, 4,
  &(vtc_S2839C7[0]), // expected_vtbl_contents
  &(vtt_S2839C7[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI7S2839C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2839C7),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C7),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names255,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C11  : virtual S20760C13 , virtual S2839C7 {
  long double s2839c11f0;
  ~S2839C11(); // tgen
  S2839C11(); // tgen
};
//SIG(-1 S2839C11) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S2839C11 ::~S2839C11(){ note_dtor("S2839C11", this);} // tgen
S2839C11 ::S2839C11(){ note_ctor("S2839C11", this);} // tgen

static void Test_S2839C11()
{
  extern Class_Descriptor cd_S2839C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S2839C11, buf);
    S2839C11 *dp, &lv = *(dp=new (buf) S2839C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S2839C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C11)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S2839C11");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(32,16), "S2839C11");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(64,44), "S2839C11");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(120,88), "S2839C11");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(80,56), "S2839C11");
    check_base_class_offset(lv, (S2839C7*), ABISELECT(64,44), "S2839C11");
    check_field_offset(lv, s2839c11f0, ABISELECT(16,4), "S2839C11.s2839c11f0");
    test_class_info(&lv, &cd_S2839C11);
    dp->~S2839C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C11(Test_S2839C11, "S2839C11", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S2839C11C1Ev();
extern void _ZN8S2839C11D1Ev();
Name_Map name_map_S2839C11[] = {
  NSPAIR(_ZN8S2839C11C1Ev),
  NSPAIR(_ZN8S2839C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
static Base_Class bases_S2839C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2839C11[];
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S2839C11D1Ev,_ZThn16_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S2839C11D0Ev,_ZThn16_N8S2839C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn120_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn120_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C11[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S2839C11[];
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C11[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C11[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C11[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__8S2839C11[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__8S2839C11[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__8S2839C11[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
static  VTT_ENTRY vtt_S2839C11[] = {
  {&(_ZTV8S2839C11[5]),  5,29},
  {&(_ZTV8S2839C11[10]),  10,29},
  {&(_ZTV8S2839C11[17]),  17,29},
  {&(_ZTV8S2839C11[22]),  22,29},
  {&(_ZTV8S2839C11[27]),  27,29},
  {&(_tg__ZTV7S2839C7__8S2839C11[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__8S2839C11[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__8S2839C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
static VTBL_ENTRY alt_thunk_names256[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2839C11D0Ev,_ZThn16_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S2839C11D1Ev,_ZThn16_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C11 = {  "S2839C11", // class name
  bases_S2839C11, 5,
  &(vtc_S2839C11[0]), // expected_vtbl_contents
  &(vtt_S2839C11[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S2839C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2839C11),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2839C11),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names256,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C10  : S4161C4_nt , S2839C11 , S20760C22_nt , virtual S2839C9 {
  virtual  ~S2839C10(); // _ZN8S2839C10D2Ev
  S2839C10(); // tgen
};
//SIG(-1 S2839C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S2839C10 ::~S2839C10(){ note_dtor("S2839C10", this);}
S2839C10 ::S2839C10(){ note_ctor("S2839C10", this);} // tgen

static void Test_S2839C10()
{
  extern Class_Descriptor cd_S2839C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S2839C10, buf);
    S2839C10 *dp, &lv = *(dp=new (buf) S2839C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S2839C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S2839C10");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*), ABISELECT(48,24), "S2839C10");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(48,24), "S2839C10");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(80,52), "S2839C10");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(136,96), "S2839C10");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(136,96), "S2839C10");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(96,64), "S2839C10");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*), ABISELECT(80,52), "S2839C10");
    check_base_class_offset(lv, (S2839C11*), 0, "S2839C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S2839C10");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*), ABISELECT(152,108), "S2839C10");
    test_class_info(&lv, &cd_S2839C10);
    dp->~S2839C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C10(Test_S2839C10, "S2839C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN8S2839C10C1Ev();
extern void _ZN8S2839C10D2Ev();
Name_Map name_map_S2839C10[] = {
  NSPAIR(_ZN8S2839C10C1Ev),
  NSPAIR(_ZN8S2839C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
static Base_Class bases_S2839C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2839C11,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2839C9,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2839C10[];
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
extern void ABISELECT(_ZThn40_N8S2839C10D1Ev,_ZThn20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn40_N8S2839C10D0Ev,_ZThn20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn48_N8S2839C10D1Ev,_ZThn24_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn48_N8S2839C10D0Ev,_ZThn24_N8S2839C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn52_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn52_N8S2839C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn96_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn96_N8S2839C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn152_N8S2839C10D1Ev,_ZThn108_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn152_N8S2839C10D0Ev,_ZThn108_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2839C10D1Ev,_ZThn20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S2839C10D0Ev,_ZThn20_N8S2839C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S2839C10[];
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C11__8S2839C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn48_N8S2839C11D1Ev,_ZThn24_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn48_N8S2839C11D0Ev,_ZThn24_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C11__8S2839C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn52_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn52_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C11__8S2839C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C11__8S2839C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn96_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn96_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C11__8S2839C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__8S2839C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__8S2839C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__8S2839C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__8S2839C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
static  VTT_ENTRY vtt_S2839C10[] = {
  {&(_ZTV8S2839C10[6]),  6,40},
  {&(_tg__ZTV8S2839C11__8S2839C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C11__8S2839C10[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C11__8S2839C10[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C11__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C11__8S2839C10[3]),  3,5},
  {&(_ZTV8S2839C10[15]),  15,40},
  {&(_ZTV8S2839C10[22]),  22,40},
  {&(_ZTV8S2839C10[27]),  27,40},
  {&(_ZTV8S2839C10[32]),  32,40},
  {&(_ZTV8S2839C10[38]),  38,40},
  {&(_tg__ZTV7S2839C7__8S2839C10[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__8S2839C10[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__8S2839C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
static VTBL_ENTRY alt_thunk_names257[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D0Ev,_ZThn32_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S2839C9D1Ev,_ZThn32_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn52_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn52_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn96_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C11D0Ev,_ZThn24_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn96_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C11D1Ev,_ZThn24_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2839C10D0Ev,_ZThn108_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S2839C10D1Ev,_ZThn108_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn52_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn52_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn96_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C10D0Ev,_ZThn24_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn96_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S2839C10D1Ev,_ZThn24_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C10 = {  "S2839C10", // class name
  bases_S2839C10, 9,
  &(vtc_S2839C10[0]), // expected_vtbl_contents
  &(vtt_S2839C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI8S2839C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2839C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2839C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names257,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C6  : virtual S4161C4_nt , virtual S20760C9 , virtual S2839C7 , S2839C10 , virtual S20759C5_nt {
  ~S2839C6(); // tgen
  S2839C6(); // tgen
};
//SIG(-1 S2839C6) C1{ VBC2{ m Fp} VBC3{ vd m FL} VBC4{ BC3 VBC5{ vd m Fi[6]} BC6{ VBC3 vd} FC5} BC7{ BC2 BC8{ VBC5 VBC4 FD} BC9{ vd m} VBC6 vd} VBC10{ vd m Fl}}


S2839C6 ::~S2839C6(){ note_dtor("S2839C6", this);} // tgen
S2839C6 ::S2839C6(){ note_ctor("S2839C6", this);} // tgen

static void Test_S2839C6()
{
  extern Class_Descriptor cd_S2839C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,32)];
    init_test(&cd_S2839C6, buf);
    S2839C6 *dp, &lv = *(dp=new (buf) S2839C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S2839C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C6)");
    /*is_ambiguous_... S2839C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(48,24), "S2839C6");
    /*is_ambiguous_... S2839C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), ABISELECT(56,28), "S2839C6");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(56,28), "S2839C6");
    /*is_ambiguous_... S2839C6::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(56,28), "S2839C6");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(72,40), "S2839C6");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(128,84), "S2839C6");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*)(S2839C10*), ABISELECT(128,84), "S2839C6");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(88,52), "S2839C6");
    check_base_class_offset(lv, (S2839C7*), ABISELECT(72,40), "S2839C6");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*)(S2839C10*), ABISELECT(72,40), "S2839C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C10*), ABISELECT(32,16), "S2839C6");
    check_base_class_offset(lv, (S2839C11*)(S2839C10*), 0, "S2839C6");
    check_base_class_offset(lv, (S20760C22_nt*)(S2839C10*), ABISELECT(40,20), "S2839C6");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C10*), ABISELECT(160,112), "S2839C6");
    check_base_class_offset(lv, (S2839C10*), 0, "S2839C6");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(168,116), "S2839C6");
    test_class_info(&lv, &cd_S2839C6);
    dp->~S2839C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C6(Test_S2839C6, "S2839C6", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN7S2839C6C1Ev();
extern void _ZN7S2839C6D1Ev();
Name_Map name_map_S2839C6[] = {
  NSPAIR(_ZN7S2839C6C1Ev),
  NSPAIR(_ZN7S2839C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C10;
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S2839C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_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
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(56,28), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(128,84), //bcp->offset
    31, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(72,40), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S2839C11,    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
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(160,112), //bcp->offset
    36, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S2839C10,    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_S20759C5_nt,    ABISELECT(168,116), //bcp->offset
    42, //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
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C6[];
extern void _ZN7S2839C6D1Ev();
extern void _ZN7S2839C6D0Ev();
extern void ABISELECT(_ZThn40_N7S2839C6D1Ev,_ZThn20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn40_N7S2839C6D0Ev,_ZThn20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C6D1Ev,_ZThn28_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C6D0Ev,_ZThn28_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn72_N7S2839C6D1Ev,_ZThn40_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn72_N7S2839C6D0Ev,_ZThn40_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S2839C6D1Ev,_ZThn84_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S2839C6D0Ev,_ZThn84_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S2839C6D1Ev,_ZThn112_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S2839C6D0Ev,_ZThn112_N7S2839C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C6[] = {
  ABISELECT(168,116),
  ABISELECT(48,24),
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&_ZN7S2839C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C6D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2839C6D1Ev,_ZThn20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S2839C6D0Ev,_ZThn20_N7S2839C6D0Ev),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev),
  ABISELECT(-168,-116),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C6[];
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C10__7S2839C6[] = {
  ABISELECT(160,112),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
};
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(128,84),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn128_N8S2839C11D1Ev,_ZThn84_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn128_N8S2839C11D0Ev,_ZThn84_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn72_N8S2839C11D1Ev,_ZThn40_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn72_N8S2839C11D0Ev,_ZThn40_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn56_N8S2839C11D1Ev,_ZThn28_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn56_N8S2839C11D0Ev,_ZThn28_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C118S2839C10__7S2839C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S2839C10D1Ev,_ZThn84_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S2839C10D0Ev,_ZThn84_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C10__7S2839C6[] = {
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn72_N8S2839C10D1Ev,_ZThn40_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn72_N8S2839C10D0Ev,_ZThn40_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C10__7S2839C6[] = {
  ABISELECT(-72,-40),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C10__7S2839C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S2839C10D1Ev,_ZThn28_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S2839C10D0Ev,_ZThn28_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C10__7S2839C6[] = {
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn160_N8S2839C10D1Ev,_ZThn112_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn160_N8S2839C10D0Ev,_ZThn112_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C10__7S2839C6[] = {
  ABISELECT(-160,-112),
  ABISELECT(-104,-84),
  ABISELECT(-160,-112),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C6[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C6[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C6[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__7S2839C6[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__7S2839C6[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__7S2839C6[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C6[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__7S2839C6[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
static  VTT_ENTRY vtt_S2839C6[] = {
  {&(_ZTV7S2839C6[8]),  8,47},
  {&(_tg__ZTV8S2839C10__7S2839C6[6]),  6,8},
  {&(_tg__ZTV8S2839C118S2839C10__7S2839C6[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C118S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C118S2839C10__7S2839C6[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C118S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C118S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C10__7S2839C6[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C10__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C10__7S2839C6[4]),  4,6},
  {&(_ZTV7S2839C6[17]),  17,47},
  {&(_ZTV7S2839C6[24]),  24,47},
  {&(_ZTV7S2839C6[34]),  34,47},
  {&(_ZTV7S2839C6[29]),  29,47},
  {&(_ZTV7S2839C6[40]),  40,47},
  {&(_ZTV7S2839C6[45]),  45,47},
  {&(_tg__ZTV7S2839C7__7S2839C6[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__7S2839C6[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__7S2839C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2839C6[];
extern  VTBL_ENTRY _ZTV7S2839C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C6[];
static VTBL_ENTRY alt_thunk_names258[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2839C10D0Ev,_ZThn112_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S2839C10D1Ev,_ZThn112_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C10D0Ev,_ZThn40_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C10D1Ev,_ZThn40_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C10D0Ev,_ZThn28_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C10D0Ev,_ZThn84_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C10D1Ev,_ZThn28_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C10D1Ev,_ZThn84_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C11D0Ev,_ZThn40_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S2839C11D1Ev,_ZThn40_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C11D0Ev,_ZThn28_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C11D0Ev,_ZThn84_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S2839C11D1Ev,_ZThn28_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S2839C11D1Ev,_ZThn84_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2839C6D0Ev,_ZThn112_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S2839C6D1Ev,_ZThn112_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C6D0Ev,_ZThn40_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S2839C6D1Ev,_ZThn40_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2839C6D0Ev,_ZThn84_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C6D0Ev,_ZThn28_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S2839C6D1Ev,_ZThn84_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C6D1Ev,_ZThn28_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C6 = {  "S2839C6", // class name
  bases_S2839C6, 12,
  &(vtc_S2839C6[0]), // expected_vtbl_contents
  &(vtt_S2839C6[0]), // expected_vtt_contents
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI7S2839C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2839C6),47, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C6),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names258,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C14  : virtual S20760C13 , S2839C7 , virtual S4161C4_nt {
  ::S2839C6 s2839c14f0;
  ~S2839C14(); // tgen
  S2839C14(); // tgen
};
//SIG(-1 S2839C14) C1{ VBC2{ vd m Fi[6]} BC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} VBC6{ m Fp} FC7{ VBC6 VBC4 VBC3 BC8{ BC6 BC9{ VBC2 VBC3 FD} BC10{ vd m} VBC5 vd} VBC11{ vd m Fl}}}


S2839C14 ::~S2839C14(){ note_dtor("S2839C14", this);} // tgen
S2839C14 ::S2839C14(){ note_ctor("S2839C14", this);} // tgen

static void Test_S2839C14()
{
  extern Class_Descriptor cd_S2839C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(21,54)];
    init_test(&cd_S2839C14, buf);
    S2839C14 *dp, &lv = *(dp=new (buf) S2839C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,212), "sizeof(S2839C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C14)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(256,168), "S2839C14");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(256,168), "S2839C14");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), 0, "S2839C14");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(288,196), "S2839C14");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(16,12), "S2839C14");
    check_base_class_offset(lv, (S2839C7*), 0, "S2839C14");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(304,208), "S2839C14");
    check_field_offset(lv, s2839c14f0, ABISELECT(64,44), "S2839C14.s2839c14f0");
    test_class_info(&lv, &cd_S2839C14);
    dp->~S2839C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C14(Test_S2839C14, "S2839C14", ABISELECT(320,212));

#else // __cplusplus

extern void _ZN8S2839C14C1Ev();
extern void _ZN8S2839C14D1Ev();
Name_Map name_map_S2839C14[] = {
  NSPAIR(_ZN8S2839C14C1Ev),
  NSPAIR(_ZN8S2839C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S2839C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(256,168), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(288,196), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2839C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(304,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2839C14[];
extern void _ZN8S2839C14D1Ev();
extern void _ZN8S2839C14D0Ev();
extern void ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn256_N8S2839C14D1Ev,_ZThn168_N8S2839C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
extern void ABISELECT(_ZThn256_N8S2839C14D0Ev,_ZThn168_N8S2839C14D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn288_N8S2839C14D1Ev,_ZThn196_N8S2839C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
extern void ABISELECT(_ZThn288_N8S2839C14D0Ev,_ZThn196_N8S2839C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S2839C14[] = {
  ABISELECT(304,208),
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&_ZN8S2839C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C14D0Ev,
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev),
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S2839C14[];
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C14[] = {
  ABISELECT(288,196),
  ABISELECT(256,168),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C14[] = {
  ABISELECT(272,184),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZThn272_N7S2839C9D1Ev,_ZThn184_N7S2839C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
extern void ABISELECT(_ZThn272_N7S2839C9D0Ev,_ZThn184_N7S2839C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C14[] = {
  ABISELECT(-272,-184),
  ABISELECT(-272,-184),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S2839C7D1Ev,_ZThn168_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S2839C7D0Ev,_ZThn168_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__8S2839C14[] = {
  ABISELECT(-256,-168),
  ABISELECT(-256,-168),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__8S2839C14[] = {
  ABISELECT(272,184),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn288_N7S2839C7D1Ev,_ZThn196_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn288_N7S2839C7D0Ev,_ZThn196_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__8S2839C14[] = {
  ABISELECT(-288,-196),
  ABISELECT(-288,-196),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
static  VTT_ENTRY vtt_S2839C14[] = {
  {&(_ZTV8S2839C14[5]),  5,22},
  {&(_tg__ZTV7S2839C7__8S2839C14[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__8S2839C14[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__8S2839C14[3]),  3,5},
  {&(_ZTV8S2839C14[15]),  15,22},
  {&(_ZTV8S2839C14[10]),  10,22},
  {&(_ZTV8S2839C14[20]),  20,22},
};
extern VTBL_ENTRY _ZTI8S2839C14[];
extern  VTBL_ENTRY _ZTV8S2839C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C14[];
static VTBL_ENTRY alt_thunk_names259[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2839C7D0Ev,_ZThn196_N7S2839C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2839C7D0Ev,_ZThn168_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S2839C7D1Ev,_ZThn196_N7S2839C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S2839C7D1Ev,_ZThn168_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2839C9D0Ev,_ZThn184_N7S2839C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S2839C9D1Ev,_ZThn184_N7S2839C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2839C14D0Ev,_ZThn196_N8S2839C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2839C14D0Ev,_ZThn168_N8S2839C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S2839C14D1Ev,_ZThn196_N8S2839C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S2839C14D1Ev,_ZThn168_N8S2839C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C14 = {  "S2839C14", // class name
  bases_S2839C14, 6,
  &(vtc_S2839C14[0]), // expected_vtbl_contents
  &(vtt_S2839C14[0]), // expected_vtt_contents
  ABISELECT(320,212), // object size
  NSPAIRA(_ZTI8S2839C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2839C14),22, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2839C14),10, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names259,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C2  : S4228C37 , S20760C9 , virtual S4161C4_nt , S2839C6 , virtual S2839C14 {
  int s2839c2f0;
  virtual  ~S2839C2(); // _ZN7S2839C2D2Ev
  S2839C2(); // tgen
};
//SIG(-1 S2839C2) C1{ BC2{ m} BC3{ vd m FL} VBC4{ m Fp} BC5{ VBC4 VBC3 VBC6{ BC3 VBC7{ vd m Fi[6]} BC8{ VBC3 vd} FC7} BC9{ BC4 BC10{ VBC7 VBC6 FD} BC11{ vd m} VBC8 vd} VBC12{ vd m Fl}} VBC13{ VBC7 BC6 VBC4 FC5} vd Fi}


 S2839C2 ::~S2839C2(){ note_dtor("S2839C2", this);}
S2839C2 ::S2839C2(){ note_ctor("S2839C2", this);} // tgen

static void Test_S2839C2()
{
  extern Class_Descriptor cd_S2839C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,78)];
    init_test(&cd_S2839C2, buf);
    S2839C2 *dp, &lv = *(dp=new (buf) S2839C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,308), "sizeof(S2839C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C2)");
    check_base_class_offset(lv, (S4228C37*), 0, "S2839C2");
    /*is_ambiguous_... S2839C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S2839C2");
    /*is_ambiguous_... S2839C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(72,40), "S2839C2");
    /*is_ambiguous_... S2839C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2839C6*), ABISELECT(72,40), "S2839C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C14*), ABISELECT(72,40), "S2839C2");
    /*is_ambiguous_... S2839C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C6*), ABISELECT(80,44), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(80,44), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(80,44), "S2839C2");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(80,44), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(96,56), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(152,100), "S2839C2");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*)(S2839C10*)(S2839C6*), ABISELECT(152,100), "S2839C2");
    check_base_class_offset(lv, (S20760C13*)(S2839C14*), ABISELECT(152,100), "S2839C2");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*)(S2839C14*), ABISELECT(152,100), "S2839C2");
    /*is_ambiguous_... S2839C2::S2839C7 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(112,68), "S2839C2");
    check_base_class_offset(lv, (S2839C7*)(S2839C6*), ABISELECT(96,56), "S2839C2");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*)(S2839C10*)(S2839C6*), ABISELECT(96,56), "S2839C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C10*)(S2839C6*), ABISELECT(48,28), "S2839C2");
    check_base_class_offset(lv, (S2839C11*)(S2839C10*)(S2839C6*), ABISELECT(16,12), "S2839C2");
    check_base_class_offset(lv, (S20760C22_nt*)(S2839C10*)(S2839C6*), ABISELECT(56,32), "S2839C2");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C10*)(S2839C6*), ABISELECT(184,128), "S2839C2");
    check_base_class_offset(lv, (S2839C10*)(S2839C6*), ABISELECT(16,12), "S2839C2");
    check_base_class_offset(lv, (S20759C5_nt*)(S2839C6*), ABISELECT(192,132), "S2839C2");
    check_base_class_offset(lv, (S2839C6*), ABISELECT(16,12), "S2839C2");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*)(S2839C14*), ABISELECT(208,140), "S2839C2");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(224,152), "S2839C2");
    check_base_class_offset(lv, (S2839C7*)(S2839C14*), ABISELECT(208,140), "S2839C2");
    check_base_class_offset(lv, (S2839C14*), ABISELECT(208,140), "S2839C2");
    check_field_offset(lv, s2839c2f0, ABISELECT(64,36), "S2839C2.s2839c2f0");
    test_class_info(&lv, &cd_S2839C2);
    dp->~S2839C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C2(Test_S2839C2, "S2839C2", ABISELECT(464,308));

#else // __cplusplus

extern void _ZN7S2839C2C1Ev();
extern void _ZN7S2839C2D2Ev();
Name_Map name_map_S2839C2[] = {
  NSPAIR(_ZN7S2839C2C1Ev),
  NSPAIR(_ZN7S2839C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C10;
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S2839C6;
extern VTBL_ENTRY _ZTI7S2839C6[];
extern  VTBL_ENTRY _ZTV7S2839C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S2839C14;
extern VTBL_ENTRY _ZTI8S2839C14[];
extern  VTBL_ENTRY _ZTV8S2839C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C14[];
static Base_Class bases_S2839C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4161C4_nt,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,100), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(112,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(96,56), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S2839C11,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(184,128), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2839C10,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,132), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2839C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(224,152), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(208,140), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2839C14,    ABISELECT(208,140), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C2[];
extern void _ZN7S2839C2D1Ev();
extern void _ZN7S2839C2D0Ev();
extern void ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C2D1Ev,_ZThn32_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C2D0Ev,_ZThn32_N7S2839C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn44_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn44_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn56_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn56_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn100_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn100_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn128_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn128_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn140_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn140_N7S2839C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev)();
static  VTBL_ENTRY vtc_S2839C2[] = {
  ABISELECT(208,140),
  ABISELECT(192,132),
  ABISELECT(184,128),
  ABISELECT(152,100),
  ABISELECT(96,56),
  ABISELECT(80,44),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&_ZN7S2839C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C2D0Ev,
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C2D1Ev,_ZThn32_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C2D0Ev,_ZThn32_N7S2839C2D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
  ABISELECT(-184,-128),
  ABISELECT(-104,-84),
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev),
  ABISELECT(-192,-132),
  ABISELECT(-192,-132),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
  ABISELECT(-208,-140),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-140),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C2[];
extern void _ZN7S2839C6D1Ev();
extern void _ZN7S2839C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C6__7S2839C2[] = {
  ABISELECT(176,120),
  ABISELECT(56,28),
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&_ZN7S2839C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C6D0Ev,
};
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(168,116),
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
};
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(64,32),
  ABISELECT(80,44),
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn32_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn32_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn88_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn88_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn44_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn44_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn32_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn32_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn116_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn116_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C107S2839C6__7S2839C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn32_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn32_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C6__7S2839C2[] = {
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn44_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn44_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C6__7S2839C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn88_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn88_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C6__7S2839C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C6__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C6__7S2839C2[] = {
  ABISELECT(-168,-116),
  ABISELECT(-104,-84),
  ABISELECT(-168,-116),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S2839C6__7S2839C2[] = {
  ABISELECT(-176,-120),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C2[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C2[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__7S2839C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__7S2839C2[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__7S2839C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C2[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__7S2839C2[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void _ZN8S2839C14D1Ev();
extern void _ZN8S2839C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C14__7S2839C2[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&_ZN8S2839C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C14D0Ev,
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C2[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C2[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C14__7S2839C2[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C2[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C14__7S2839C2[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
static  VTT_ENTRY vtt_S2839C2[] = {
  {&(_ZTV7S2839C2[9]),  9,71},
  {&(_tg__ZTV7S2839C6__7S2839C2[8]),  8,10},
  {&(_tg__ZTV8S2839C107S2839C6__7S2839C2[6]),  6,8},
  {&(_tg__ZTV8S2839C118S2839C107S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C118S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C107S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C107S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C107S2839C6__7S2839C2[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C7__7S2839C6__7S2839C2[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C6__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C6__7S2839C2[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S2839C6__7S2839C2[3]),  3,5},
  {&(_ZTV7S2839C2[19]),  19,71},
  {&(_ZTV7S2839C2[28]),  28,71},
  {&(_ZTV7S2839C2[35]),  35,71},
  {&(_ZTV7S2839C2[45]),  45,71},
  {&(_ZTV7S2839C2[40]),  40,71},
  {&(_ZTV7S2839C2[51]),  51,71},
  {&(_ZTV7S2839C2[56]),  56,71},
  {&(_ZTV7S2839C2[64]),  64,71},
  {&(_ZTV7S2839C2[69]),  69,71},
  {&(_tg__ZTV7S2839C7__7S2839C2[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S2839C14__7S2839C2[5]),  5,7},
  {&(_tg__ZTV7S2839C78S2839C14__A1__7S2839C2[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C14__7S2839C2[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C14__7S2839C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2839C2[];
extern  VTBL_ENTRY _ZTV7S2839C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C2[];
static VTBL_ENTRY alt_thunk_names260[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn116_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn116_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn44_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn44_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn88_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn32_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn88_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn32_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn116_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn116_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn44_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn44_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn32_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn88_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn32_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn88_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn44_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn44_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn32_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn88_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn32_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn88_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn140_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn140_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn128_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn128_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn56_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn56_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn100_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn44_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn100_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn44_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C2 = {  "S2839C2", // class name
  bases_S2839C2, 19,
  &(vtc_S2839C2[0]), // expected_vtbl_contents
  &(vtt_S2839C2[0]), // expected_vtt_contents
  ABISELECT(464,308), // object size
  NSPAIRA(_ZTI7S2839C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2839C2),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C2),46, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names260,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2839C1  : S2839C2 {
  ::S2840C15_nt s2839c1f0;
  ~S2839C1(); // tgen
  S2839C1(); // tgen
};
//SIG(1 S2839C1) C1{ BC2{ BC3{ m} BC4{ vd m FL} VBC5{ m Fp} BC6{ VBC5 VBC4 VBC7{ BC4 VBC8{ vd m Fi[6]} BC9{ VBC4 vd} FC8} BC10{ BC5 BC11{ VBC8 VBC7 FD} BC12{ vd m} VBC9 vd} VBC13{ vd m Fl}} VBC14{ VBC8 BC7 VBC5 FC6} vd Fi} FU15{ m Fi}}


S2839C1 ::~S2839C1(){ note_dtor("S2839C1", this);} // tgen
S2839C1 ::S2839C1(){ note_ctor("S2839C1", this);} // tgen

static void Test_S2839C1()
{
  extern Class_Descriptor cd_S2839C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,79)];
    init_test(&cd_S2839C1, buf);
    S2839C1 *dp, &lv = *(dp=new (buf) S2839C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,312), "sizeof(S2839C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S2839C1)");
    check_base_class_offset(lv, (S4228C37*)(S2839C2*), 0, "S2839C1");
    /*is_ambiguous_... S2839C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C2*), 0, "S2839C1");
    /*is_ambiguous_... S2839C2::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2839C2*), ABISELECT(72,44), "S2839C1");
    /*is_ambiguous_... S2839C6::S4161C4_nt */ AMB_check_base_class_offset(lv, (S4161C4_nt*)(S2839C6*)(S2839C2*), ABISELECT(72,44), "S2839C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C14*), ABISELECT(72,44), "S2839C1");
    /*is_ambiguous_... S2839C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C6*)(S2839C2*), ABISELECT(80,48), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*), ABISELECT(80,48), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C9*), ABISELECT(80,48), "S2839C1");
    check_base_class_offset(lv, (S20760C9*)(S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(80,48), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*), ABISELECT(96,60), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S20760C13*)(S2839C7*), ABISELECT(152,104), "S2839C1");
    check_base_class_offset(lv, (S20760C13*)(S2839C11*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(152,104), "S2839C1");
    check_base_class_offset(lv, (S20760C13*)(S2839C14*), ABISELECT(152,104), "S2839C1");
    check_base_class_offset(lv, (S20760C13*)(S2839C7*)(S2839C14*), ABISELECT(152,104), "S2839C1");
    /*is_ambiguous_... S2839C1::S2839C7 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C7*), ABISELECT(112,72), "S2839C1");
    check_base_class_offset(lv, (S2839C7*)(S2839C6*)(S2839C2*), ABISELECT(96,60), "S2839C1");
    check_base_class_offset(lv, (S2839C7*)(S2839C11*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(96,60), "S2839C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(48,28), "S2839C1");
    check_base_class_offset(lv, (S2839C11*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(16,12), "S2839C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(56,32), "S2839C1");
    /*is_ambiguous_... S2839C10::S2839C9 */ AMB_check_base_class_offset(lv, (S2839C9*)(S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(184,132), "S2839C1");
    check_base_class_offset(lv, (S2839C10*)(S2839C6*)(S2839C2*), ABISELECT(16,12), "S2839C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S2839C6*)(S2839C2*), ABISELECT(192,136), "S2839C1");
    check_base_class_offset(lv, (S2839C6*)(S2839C2*), ABISELECT(16,12), "S2839C1");
    /*is_ambiguous_... S2839C7::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S2839C7*)(S2839C14*), ABISELECT(208,144), "S2839C1");
    check_base_class_offset(lv, (S2839C9*)(S2839C7*)(S2839C14*), ABISELECT(224,156), "S2839C1");
    check_base_class_offset(lv, (S2839C7*)(S2839C14*), ABISELECT(208,144), "S2839C1");
    check_base_class_offset(lv, (S2839C14*)(S2839C2*), ABISELECT(208,144), "S2839C1");
    check_base_class_offset(lv, (S2839C2*), 0, "S2839C1");
    check_field_offset(lv, s2839c1f0, ABISELECT(68,40), "S2839C1.s2839c1f0");
    test_class_info(&lv, &cd_S2839C1);
    dp->~S2839C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2839C1(Test_S2839C1, "S2839C1", ABISELECT(464,312));

#else // __cplusplus

extern void _ZN7S2839C1C1Ev();
extern void _ZN7S2839C1D1Ev();
Name_Map name_map_S2839C1[] = {
  NSPAIR(_ZN7S2839C1C1Ev),
  NSPAIR(_ZN7S2839C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S2839C11;
extern VTBL_ENTRY _ZTI8S2839C11[];
extern  VTBL_ENTRY _ZTV8S2839C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C11[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C10;
extern VTBL_ENTRY _ZTI8S2839C10[];
extern  VTBL_ENTRY _ZTV8S2839C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C10[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S2839C6;
extern VTBL_ENTRY _ZTI7S2839C6[];
extern  VTBL_ENTRY _ZTV7S2839C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C6[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S2839C9;
extern VTBL_ENTRY _ZTI7S2839C9[];
extern  VTBL_ENTRY _ZTV7S2839C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C9[];
extern Class_Descriptor cd_S2839C7;
extern VTBL_ENTRY _ZTI7S2839C7[];
extern  VTBL_ENTRY _ZTV7S2839C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C7[];
extern Class_Descriptor cd_S2839C14;
extern VTBL_ENTRY _ZTI8S2839C14[];
extern  VTBL_ENTRY _ZTV8S2839C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2839C14[];
extern Class_Descriptor cd_S2839C2;
extern VTBL_ENTRY _ZTI7S2839C2[];
extern  VTBL_ENTRY _ZTV7S2839C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C2[];
static Base_Class bases_S2839C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    19, //immediately_derived
  0, 0},
  {&cd_S4161C4_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
    14, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,48), //bcp->offset
    25, //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(152,104), //bcp->offset
    42, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2839C9,    ABISELECT(112,72), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(96,60), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S2839C11,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //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
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(184,132), //bcp->offset
    47, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S2839C10,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(192,136), //bcp->offset
    53, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2839C6,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(208,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
    8, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C9,    ABISELECT(224,156), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S2839C7,    ABISELECT(208,144), //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
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S2839C14,    ABISELECT(208,144), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S2839C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2839C1[];
extern void _ZN7S2839C1D1Ev();
extern void _ZN7S2839C1D0Ev();
extern void ABISELECT(_ZThn16_N7S2839C1D1Ev,_ZThn12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C1D0Ev,_ZThn12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C1D1Ev,_ZThn32_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C1D0Ev,_ZThn32_N7S2839C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C1D1Ev,_ZThn48_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C1D0Ev,_ZThn48_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C1D1Ev,_ZTv0_n20_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S2839C1D1Ev,_ZThn60_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C1D0Ev,_ZTv0_n20_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S2839C1D0Ev,_ZThn60_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N7S2839C1D1Ev,_ZTvn12_n20_N7S2839C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C1D0Ev,_ZTvn12_n20_N7S2839C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S2839C1D1Ev,_ZThn104_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn152_N7S2839C1D0Ev,_ZThn104_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C1D1Ev,_ZTv0_n16_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn184_N7S2839C1D1Ev,_ZThn132_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C1D0Ev,_ZTv0_n16_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn184_N7S2839C1D0Ev,_ZThn132_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S2839C1D1Ev,_ZThn136_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S2839C1D0Ev,_ZThn136_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C1D1Ev,_ZTv0_n24_N7S2839C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S2839C1D1Ev,_ZThn144_N7S2839C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C1D0Ev,_ZTv0_n24_N7S2839C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S2839C1D0Ev,_ZThn144_N7S2839C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n48_N7S2839C1D1Ev,_ZTvn12_n24_N7S2839C1D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2839C1D0Ev,_ZTvn12_n24_N7S2839C1D0Ev)();
static  VTBL_ENTRY vtc_S2839C1[] = {
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&_ZN7S2839C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C1D0Ev,
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C1D1Ev,_ZThn12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C1D0Ev,_ZThn12_N7S2839C1D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C1D1Ev,_ZThn32_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2839C1D0Ev,_ZThn32_N7S2839C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev),
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C1D1Ev,_ZTv0_n20_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C1D0Ev,_ZTv0_n20_N7S2839C1D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C1D1Ev,_ZTvn12_n20_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C1D0Ev,_ZTvn12_n20_N7S2839C1D0Ev),
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C1D1Ev,_ZTv0_n16_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C1D0Ev,_ZTv0_n16_N7S2839C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C1D1Ev,_ZTv0_n24_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C1D0Ev,_ZTv0_n24_N7S2839C1D0Ev),
  ABISELECT(-144,-108),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S2839C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C1D1Ev,_ZTvn12_n24_N7S2839C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C1D0Ev,_ZTvn12_n24_N7S2839C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S2839C1[];
extern void _ZN7S2839C2D1Ev();
extern void _ZN7S2839C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C2__7S2839C1[] = {
  ABISELECT(208,144),
  ABISELECT(192,136),
  ABISELECT(184,132),
  ABISELECT(152,104),
  ABISELECT(96,60),
  ABISELECT(80,48),
  ABISELECT(72,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&_ZN7S2839C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C2D0Ev,
};
extern void _ZN7S2839C6D1Ev();
extern void _ZN7S2839C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&_ZN7S2839C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C6D0Ev,
};
extern void _ZN8S2839C10D1Ev();
extern void _ZN8S2839C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&_ZN8S2839C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C10D0Ev,
};
extern void _ZN8S2839C11D1Ev();
extern void _ZN8S2839C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&_ZN8S2839C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn92_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn92_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn48_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn48_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D1Ev,_ZTvn12_n20_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C11D0Ev,_ZTvn12_n20_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn36_N8S2839C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn36_N8S2839C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2839C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn92_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn92_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn48_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn48_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D1Ev,_ZTvn12_n20_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S2839C10D0Ev,_ZTvn12_n20_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn36_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn36_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn120_N8S2839C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev)();
extern void ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn120_N8S2839C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S2839C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn36_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn36_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn48_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn48_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn92_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn92_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D1Ev,_ZTvn12_n20_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C6D0Ev,_ZTvn12_n20_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-168,-120),
  ABISELECT(-104,-84),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn124_N7S2839C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev)();
extern void ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn124_N7S2839C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S2839C67S2839C2__7S2839C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-176,-124),
  (VTBL_ENTRY)&(_ZTI7S2839C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C6__7S2839C2__7S2839C1[] = {
  ABISELECT(176,124),
  ABISELECT(56,32),
  ABISELECT(168,120),
  ABISELECT(64,36),
  ABISELECT(80,48),
  ABISELECT(136,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D1Ev,_ZThn12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C2D0Ev,_ZThn12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn48_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn48_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C2__7S2839C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn60_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn60_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C2__7S2839C1[] = {
  ABISELECT(-96,-60),
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn104_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn104_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C2__7S2839C1[] = {
  ABISELECT(-152,-104),
  ABISELECT(-152,-104),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C2__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D1Ev,_ZTvn12_n20_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N7S2839C2D0Ev,_ZTvn12_n20_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C2__7S2839C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-104,-84),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn136_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn136_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__7S2839C2__7S2839C1[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn144_N7S2839C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev)();
extern void ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn144_N7S2839C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2839C14__7S2839C2__7S2839C1[] = {
  ABISELECT(-208,-144),
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev)();
extern void ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2__7S2839C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI7S2839C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D1Ev,_ZTvn12_n24_N7S2839C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n48_N7S2839C2D0Ev,_ZTvn12_n24_N7S2839C2D0Ev),
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C7__7S2839C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__7S2839C1[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C1[] = {
  ABISELECT(32,24),
  ABISELECT(32,24),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
extern void ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C7__7S2839C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C7__7S2839C1[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C7__7S2839C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C9__A1__7S2839C1[] = {
  ABISELECT(-104,-84),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C9__A1__7S2839C1[] = {
  ABISELECT(104,84),
  ABISELECT(104,84),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void _ZN8S2839C14D1Ev();
extern void _ZN8S2839C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2839C14__7S2839C1[] = {
  ABISELECT(-136,-100),
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&_ZN8S2839C14D1Ev,
  (VTBL_ENTRY)&_ZN8S2839C14D0Ev,
};
extern void _ZN7S2839C7D1Ev();
extern void _ZN7S2839C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(-128,-96),
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&_ZN7S2839C7D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C7D0Ev,
};
extern void _ZN7S2839C9D1Ev();
extern void _ZN7S2839C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C1[] = {
  ABISELECT(-144,-108),
  0,
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&_ZN7S2839C9D1Ev,
  (VTBL_ENTRY)&_ZN7S2839C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C1[] = {
  ABISELECT(144,108),
  ABISELECT(144,108),
  (VTBL_ENTRY)&(_ZTI7S2839C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D1Ev,_ZTv0_n12_N7S2839C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C9D0Ev,_ZTv0_n12_N7S2839C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D1Ev,_ZThn12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S2839C7D0Ev,_ZThn12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI7S2839C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S2839C14__7S2839C1[] = {
  ABISELECT(56,40),
  ABISELECT(56,40),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C1[] = {
  ABISELECT(-144,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D1Ev,_ZThn12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S2839C14D0Ev,_ZThn12_N8S2839C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S2839C14__7S2839C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S2839C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D1Ev,_ZTv0_n12_N8S2839C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S2839C14D0Ev,_ZTv0_n12_N8S2839C14D0Ev),
};
static  VTT_ENTRY vtt_S2839C1[] = {
  {&(_ZTV7S2839C1[9]),  9,71},
  {&(_tg__ZTV7S2839C2__7S2839C1[9]),  9,11},
  {&(_tg__ZTV7S2839C67S2839C2__7S2839C1[8]),  8,10},
  {&(_tg__ZTV8S2839C107S2839C67S2839C2__7S2839C1[6]),  6,8},
  {&(_tg__ZTV8S2839C118S2839C107S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C118S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__8S2839C107S2839C67S2839C2__7S2839C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__7S2839C67S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C67S2839C2__7S2839C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S2839C67S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C6__7S2839C2__7S2839C1[8]),  8,10},
  {&(_tg__ZTV8S20760C9__A1__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C7__7S2839C2__7S2839C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C2__7S2839C1[4]),  4,6},
  {&(_tg__ZTV11S20759C5_nt__7S2839C2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S2839C14__7S2839C2__7S2839C1[6]),  6,8},
  {&(_tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C2__7S2839C1[3]),  3,5},
  {&(_ZTV7S2839C1[19]),  19,71},
  {&(_ZTV7S2839C1[28]),  28,71},
  {&(_ZTV7S2839C1[35]),  35,71},
  {&(_ZTV7S2839C1[45]),  45,71},
  {&(_ZTV7S2839C1[40]),  40,71},
  {&(_ZTV7S2839C1[51]),  51,71},
  {&(_ZTV7S2839C1[56]),  56,71},
  {&(_ZTV7S2839C1[64]),  64,71},
  {&(_ZTV7S2839C1[69]),  69,71},
  {&(_tg__ZTV7S2839C7__7S2839C1[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C7__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C9__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S2839C14__7S2839C1[5]),  5,7},
  {&(_tg__ZTV7S2839C78S2839C14__A1__7S2839C1[4]),  4,6},
  {&(_tg__ZTV7S2839C97S2839C78S2839C14__A2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__7S2839C97S2839C78S2839C14__A2__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__7S2839C78S2839C14__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C9__7S2839C78S2839C14__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__7S2839C78S2839C14__A1__7S2839C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S2839C14__7S2839C1[3]),  3,5},
  {&(_tg__ZTV7S2839C97S2839C7__8S2839C14__7S2839C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S2839C14__7S2839C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S2839C1[];
extern  VTBL_ENTRY _ZTV7S2839C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2839C1[];
static VTBL_ENTRY alt_thunk_names261[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D0Ev,_ZTv0_n12_N7S2839C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D0Ev,_ZThn44_N7S2839C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C7D1Ev,_ZTv0_n12_N7S2839C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S2839C7D1Ev,_ZThn44_N7S2839C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D0Ev,_ZTv0_n24_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D0Ev,_ZThn144_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C2D1Ev,_ZTv0_n24_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C2D1Ev,_ZThn144_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D0Ev,_ZTv0_n16_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D0Ev,_ZThn132_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C2D1Ev,_ZTv0_n16_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C2D1Ev,_ZThn132_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D0Ev,_ZTv0_n20_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D0Ev,_ZThn60_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C2D1Ev,_ZTv0_n20_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C2D1Ev,_ZThn60_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D0Ev,_ZTv0_n12_N7S2839C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D0Ev,_ZThn136_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D0Ev,_ZThn104_N7S2839C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D0Ev,_ZThn48_N7S2839C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C2D1Ev,_ZTv0_n12_N7S2839C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C2D1Ev,_ZThn136_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C2D1Ev,_ZThn104_N7S2839C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C2D1Ev,_ZThn48_N7S2839C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D0Ev,_ZTv0_n16_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D0Ev,_ZThn120_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C6D1Ev,_ZTv0_n16_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N7S2839C6D1Ev,_ZThn120_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D0Ev,_ZTv0_n20_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D0Ev,_ZThn48_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C6D1Ev,_ZTv0_n20_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C6D1Ev,_ZThn48_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D0Ev,_ZTv0_n12_N7S2839C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D0Ev,_ZThn124_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D0Ev,_ZThn92_N7S2839C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D0Ev,_ZThn36_N7S2839C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C6D1Ev,_ZTv0_n12_N7S2839C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S2839C6D1Ev,_ZThn124_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S2839C6D1Ev,_ZThn92_N7S2839C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S2839C6D1Ev,_ZThn36_N7S2839C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D0Ev,_ZTv0_n16_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D0Ev,_ZThn120_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S2839C10D1Ev,_ZTv0_n16_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S2839C10D1Ev,_ZThn120_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D0Ev,_ZTv0_n20_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D0Ev,_ZThn48_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C10D1Ev,_ZTv0_n20_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C10D1Ev,_ZThn48_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D0Ev,_ZTv0_n12_N8S2839C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D0Ev,_ZThn36_N8S2839C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D0Ev,_ZThn92_N8S2839C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C10D1Ev,_ZTv0_n12_N8S2839C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C10D1Ev,_ZThn36_N8S2839C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C10D1Ev,_ZThn92_N8S2839C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D0Ev,_ZTv0_n20_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D0Ev,_ZThn48_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S2839C11D1Ev,_ZTv0_n20_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S2839C11D1Ev,_ZThn48_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D0Ev,_ZTv0_n12_N8S2839C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D0Ev,_ZThn36_N8S2839C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D0Ev,_ZThn92_N8S2839C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S2839C11D1Ev,_ZTv0_n12_N8S2839C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S2839C11D1Ev,_ZThn36_N8S2839C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S2839C11D1Ev,_ZThn92_N8S2839C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C1D0Ev,_ZTv0_n24_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C1D0Ev,_ZThn144_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2839C1D1Ev,_ZTv0_n24_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S2839C1D1Ev,_ZThn144_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C1D0Ev,_ZTv0_n16_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C1D0Ev,_ZThn132_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S2839C1D1Ev,_ZTv0_n16_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N7S2839C1D1Ev,_ZThn132_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C1D0Ev,_ZTv0_n20_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C1D0Ev,_ZThn60_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S2839C1D1Ev,_ZTv0_n20_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S2839C1D1Ev,_ZThn60_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C1D0Ev,_ZTv0_n12_N7S2839C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C1D0Ev,_ZThn136_N7S2839C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C1D0Ev,_ZThn104_N7S2839C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C1D0Ev,_ZThn48_N7S2839C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S2839C1D1Ev,_ZTv0_n12_N7S2839C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S2839C1D1Ev,_ZThn136_N7S2839C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S2839C1D1Ev,_ZThn104_N7S2839C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S2839C1D1Ev,_ZThn48_N7S2839C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2839C1 = {  "S2839C1", // class name
  bases_S2839C1, 20,
  &(vtc_S2839C1[0]), // expected_vtbl_contents
  &(vtt_S2839C1[0]), // expected_vtt_contents
  ABISELECT(464,312), // object size
  NSPAIRA(_ZTI7S2839C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2839C1),71, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2839C1),56, //virtual table table var
  17, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names261,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C6  : virtual S20760C9 {
  virtual  ~S19115C6(); // _ZN8S19115C6D2Ev
  S19115C6(); // tgen
};
//SIG(-1 S19115C6) C1{ VBC2{ vd m FL} vd}


 S19115C6 ::~S19115C6(){ note_dtor("S19115C6", this);}
S19115C6 ::S19115C6(){ note_ctor("S19115C6", this);} // tgen

static void Test_S19115C6()
{
  extern Class_Descriptor cd_S19115C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19115C6, buf);
    S19115C6 *dp, &lv = *(dp=new (buf) S19115C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19115C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19115C6");
    test_class_info(&lv, &cd_S19115C6);
    dp->~S19115C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C6(Test_S19115C6, "S19115C6", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19115C6C1Ev();
extern void _ZN8S19115C6D2Ev();
Name_Map name_map_S19115C6[] = {
  NSPAIR(_ZN8S19115C6C1Ev),
  NSPAIR(_ZN8S19115C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19115C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C6[];
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19115C6D1Ev,_ZThn4_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19115C6D0Ev,_ZThn4_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C6[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C6[];
static  VTT_ENTRY vtt_S19115C6[] = {
  {&(_ZTV8S19115C6[3]),  3,10},
  {&(_ZTV8S19115C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
static VTBL_ENTRY alt_thunk_names262[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19115C6D0Ev,_ZThn4_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19115C6D1Ev,_ZThn4_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C6 = {  "S19115C6", // class name
  bases_S19115C6, 1,
  &(vtc_S19115C6[0]), // expected_vtbl_contents
  &(vtt_S19115C6[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19115C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19115C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names262,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C3  : S20760C9 , virtual S20760C13 , S19115C6 {
  ::S20760C13 s19115c3f0;
  ~S19115C3(); // tgen
  S19115C3(); // tgen
};
//SIG(-1 S19115C3) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19115C3 ::~S19115C3(){ note_dtor("S19115C3", this);} // tgen
S19115C3 ::S19115C3(){ note_ctor("S19115C3", this);} // tgen

static void Test_S19115C3()
{
  extern Class_Descriptor cd_S19115C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19115C3, buf);
    S19115C3 *dp, &lv = *(dp=new (buf) S19115C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19115C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C3)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19115C3");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19115C3");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(88,72), "S19115C3");
    check_base_class_offset(lv, (S19115C6*), ABISELECT(16,12), "S19115C3");
    check_field_offset(lv, s19115c3f0, ABISELECT(24,16), "S19115C3.s19115c3f0");
    test_class_info(&lv, &cd_S19115C3);
    dp->~S19115C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C3(Test_S19115C3, "S19115C3", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19115C3C1Ev();
extern void _ZN8S19115C3D1Ev();
Name_Map name_map_S19115C3[] = {
  NSPAIR(_ZN8S19115C3C1Ev),
  NSPAIR(_ZN8S19115C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
static Base_Class bases_S19115C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19115C6,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C3[];
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C3D1Ev,_ZThn44_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn56_N8S19115C3D0Ev,_ZThn44_N8S19115C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn88_N8S19115C3D1Ev,_ZThn72_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn88_N8S19115C3D0Ev,_ZThn72_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C3[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C3[];
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C3[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn72_N8S19115C6D1Ev,_ZThn60_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn72_N8S19115C6D0Ev,_ZThn60_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__8S19115C3[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
static  VTT_ENTRY vtt_S19115C3[] = {
  {&(_ZTV8S19115C3[4]),  4,21},
  {&(_tg__ZTV8S19115C6__8S19115C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__8S19115C3[3]),  3,5},
  {&(_ZTV8S19115C3[14]),  14,21},
  {&(_ZTV8S19115C3[9]),  9,21},
  {&(_ZTV8S19115C3[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
static VTBL_ENTRY alt_thunk_names263[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19115C6D0Ev,_ZThn60_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19115C6D1Ev,_ZThn60_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19115C3D0Ev,_ZThn72_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19115C3D0Ev,_ZThn44_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19115C3D1Ev,_ZThn72_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19115C3D1Ev,_ZThn44_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C3 = {  "S19115C3", // class name
  bases_S19115C3, 4,
  &(vtc_S19115C3[0]), // expected_vtbl_contents
  &(vtt_S19115C3[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19115C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C3),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C3),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names263,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C7  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s19115c7f0;
  ~S19115C7(); // tgen
  S19115C7(); // tgen
};
//SIG(-1 S19115C7) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S19115C7 ::~S19115C7(){ note_dtor("S19115C7", this);} // tgen
S19115C7 ::S19115C7(){ note_ctor("S19115C7", this);} // tgen

static void Test_S19115C7()
{
  extern Class_Descriptor cd_S19115C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19115C7, buf);
    S19115C7 *dp, &lv = *(dp=new (buf) S19115C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S19115C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C7)");
    check_base_class_offset(lv, (S20760C13*), 0, "S19115C7");
    check_base_class_offset(lv, (S4228C37*), 0, "S19115C7");
    check_base_class_offset(lv, (S4228C27*), 0, "S19115C7");
    check_field_offset(lv, s19115c7f0, ABISELECT(32,28), "S19115C7.s19115c7f0");
    test_class_info(&lv, &cd_S19115C7);
    dp->~S19115C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C7(Test_S19115C7, "S19115C7", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN8S19115C7C1Ev();
extern void _ZN8S19115C7D1Ev();
Name_Map name_map_S19115C7[] = {
  NSPAIR(_ZN8S19115C7C1Ev),
  NSPAIR(_ZN8S19115C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S19115C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19115C7[];
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY vtc_S19115C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19115C7[];
static  VTT_ENTRY vtt_S19115C7[] = {
  {&(_ZTV8S19115C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
Class_Descriptor cd_S19115C7 = {  "S19115C7", // class name
  bases_S19115C7, 3,
  &(vtc_S19115C7[0]), // expected_vtbl_contents
  &(vtt_S19115C7[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI8S19115C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C7),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C7),1, //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  S19115C2  : S19115C3 , S19115C7 , virtual S19115C6 {
  virtual  ~S19115C2(); // _ZN8S19115C2D2Ev
  S19115C2(); // tgen
};
//SIG(-1 S19115C2) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S19115C2 ::~S19115C2(){ note_dtor("S19115C2", this);}
S19115C2 ::S19115C2(){ note_ctor("S19115C2", this);} // tgen

static void Test_S19115C2()
{
  extern Class_Descriptor cd_S19115C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S19115C2, buf);
    S19115C2 *dp, &lv = *(dp=new (buf) S19115C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S19115C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C2)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C3*), 0, "S19115C2");
    check_base_class_offset(lv, (S20760C13*)(S19115C3*), ABISELECT(96,76), "S19115C2");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*)(S19115C3*), ABISELECT(128,104), "S19115C2");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(128,104), "S19115C2");
    check_base_class_offset(lv, (S19115C6*)(S19115C3*), ABISELECT(16,12), "S19115C2");
    check_base_class_offset(lv, (S19115C3*), 0, "S19115C2");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*), ABISELECT(56,44), "S19115C2");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*), 0, "S19115C2");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*), 0, "S19115C2");
    check_base_class_offset(lv, (S19115C7*), ABISELECT(56,44), "S19115C2");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S19115C6*), ABISELECT(144,116), "S19115C2");
    test_class_info(&lv, &cd_S19115C2);
    dp->~S19115C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C2(Test_S19115C2, "S19115C2", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S19115C2C1Ev();
extern void _ZN8S19115C2D2Ev();
Name_Map name_map_S19115C2[] = {
  NSPAIR(_ZN8S19115C2C1Ev),
  NSPAIR(_ZN8S19115C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C3;
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
static Base_Class bases_S19115C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //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_S19115C6,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19115C3,    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_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19115C7,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C6,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C2[];
extern void _ZN8S19115C2D1Ev();
extern void _ZN8S19115C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn144_N8S19115C2D1Ev,_ZThn116_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn144_N8S19115C2D0Ev,_ZThn116_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C2[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&_ZN8S19115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C2D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C2[];
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C3__8S19115C2[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C3__8S19115C2[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C68S19115C3__8S19115C2[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C3__8S19115C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C3__8S19115C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C3__8S19115C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C7__8S19115C2[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C2[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__A1__8S19115C2[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
static  VTT_ENTRY vtt_S19115C2[] = {
  {&(_ZTV8S19115C2[7]),  7,36},
  {&(_tg__ZTV8S19115C3__8S19115C2[4]),  4,6},
  {&(_tg__ZTV8S19115C68S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C68S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S19115C6__8S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C3__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S19115C7__8S19115C2[4]),  4,6},
  {&(_ZTV8S19115C2[23]),  23,36},
  {&(_ZTV8S19115C2[12]),  12,36},
  {&(_ZTV8S19115C2[28]),  28,36},
  {&(_ZTV8S19115C2[18]),  18,36},
  {&(_ZTV8S19115C2[34]),  34,36},
  {&(_tg__ZTV8S19115C6__A1__8S19115C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__A1__8S19115C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19115C2[];
extern  VTBL_ENTRY _ZTV8S19115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C2[];
static VTBL_ENTRY alt_thunk_names264[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19115C2D0Ev,_ZThn116_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19115C2D1Ev,_ZThn116_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C2 = {  "S19115C2", // class name
  bases_S19115C2, 10,
  &(vtc_S19115C2[0]), // expected_vtbl_contents
  &(vtt_S19115C2[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S19115C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C2),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C2),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names264,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C12  {
  ::S20760C9 s19115c12f0[10];
  void  mf19115c12(); // _ZN9S19115C1210mf19115c12Ev
};
//SIG(-1 S19115C12) C1{ m FC2{ vd m FL}[10]}


void  S19115C12 ::mf19115c12(){}

static void Test_S19115C12()
{
  {
    init_simple_test("S19115C12");
    S19115C12 lv;
    check2(sizeof(lv), ABISELECT(160,120), "sizeof(S19115C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C12)");
    check_field_offset(lv, s19115c12f0, 0, "S19115C12.s19115c12f0");
  }
}
static Arrange_To_Call_Me vS19115C12(Test_S19115C12, "S19115C12", ABISELECT(160,120));

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S19115C12[];
VTBL_ENTRY *P__ZTI9S19115C12 = _ZTI9S19115C12; 
Class_Descriptor cd_S19115C12 = {  "S19115C12", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(160,120), // object size
  NSPAIRA(_ZTI9S19115C12),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  S19115C10  : virtual S19115C2 , S4161C4_nt , S19115C12 {
  int s19115c10f0;
  virtual  ~S19115C10(); // _ZN9S19115C10D2Ev
  S19115C10(); // tgen
};
//SIG(-1 S19115C10) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S19115C10 ::~S19115C10(){ note_dtor("S19115C10", this);}
S19115C10 ::S19115C10(){ note_ctor("S19115C10", this);} // tgen

static void Test_S19115C10()
{
  extern Class_Descriptor cd_S19115C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S19115C10, buf);
    S19115C10 *dp, &lv = *(dp=new (buf) S19115C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S19115C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C10)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C3*)(S19115C2*), ABISELECT(184,132), "S19115C10");
    check_base_class_offset(lv, (S20760C13*)(S19115C3*)(S19115C2*), ABISELECT(280,208), "S19115C10");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(312,236), "S19115C10");
    /*is_ambiguous_... S19115C10::S19115C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(312,236), "S19115C10");
    check_base_class_offset(lv, (S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(200,144), "S19115C10");
    check_base_class_offset(lv, (S19115C3*)(S19115C2*), ABISELECT(184,132), "S19115C10");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*)(S19115C2*), ABISELECT(240,176), "S19115C10");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*)(S19115C2*), 0, "S19115C10");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*)(S19115C2*), 0, "S19115C10");
    check_base_class_offset(lv, (S19115C7*)(S19115C2*), ABISELECT(240,176), "S19115C10");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S19115C6*)(S19115C2*), 0, "S19115C10");
    check_base_class_offset(lv, (S19115C2*), ABISELECT(184,132), "S19115C10");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S19115C10");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S19115C10");
    check_field_offset(lv, s19115c10f0, ABISELECT(176,128), "S19115C10.s19115c10f0");
    test_class_info(&lv, &cd_S19115C10);
    dp->~S19115C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C10(Test_S19115C10, "S19115C10", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN9S19115C10C1Ev();
extern void _ZN9S19115C10D2Ev();
Name_Map name_map_S19115C10[] = {
  NSPAIR(_ZN9S19115C10C1Ev),
  NSPAIR(_ZN9S19115C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C3;
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C2;
extern VTBL_ENTRY _ZTI8S19115C2[];
extern  VTBL_ENTRY _ZTV8S19115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C2[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S19115C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19115C6,    ABISELECT(200,144), //bcp->offset
    21, //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19115C3,    ABISELECT(184,132), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19115C7,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19115C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19115C2,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19115C10[];
extern void ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev)();
extern void _ZN9S19115C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev)();
extern void _ZN9S19115C10D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn184_N9S19115C10D1Ev,_ZThn132_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn184_N9S19115C10D0Ev,_ZThn132_N9S19115C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn280_N9S19115C10D1Ev,_ZThn208_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn280_N9S19115C10D0Ev,_ZThn208_N9S19115C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn312_N9S19115C10D1Ev,_ZThn236_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn312_N9S19115C10D0Ev,_ZThn236_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C10[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19115C10[];
extern void _ZN8S19115C2D1Ev();
extern void _ZN8S19115C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C2__9S19115C10[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&_ZN8S19115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C2D0Ev,
};
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C38S19115C2__9S19115C10[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C78S19115C2__9S19115C10[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C2__9S19115C10[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C3__8S19115C2__9S19115C10[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C2__9S19115C10[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C7__8S19115C2__9S19115C10[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C2__9S19115C10[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev),
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__9S19115C10[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn312_N8S19115C6D1Ev,_ZThn236_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn312_N8S19115C6D0Ev,_ZThn236_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__A1__9S19115C10[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
static  VTT_ENTRY vtt_S19115C10[] = {
  {&(_ZTV9S19115C10[9]),  9,42},
  {&(_ZTV9S19115C10[19]),  19,42},
  {&(_ZTV9S19115C10[35]),  35,42},
  {&(_ZTV9S19115C10[24]),  24,42},
  {&(_ZTV9S19115C10[40]),  40,42},
  {&(_ZTV9S19115C10[30]),  30,42},
  {&(_ZTV9S19115C10[9]),  9,42},
  {&(_tg__ZTV8S19115C2__9S19115C10[7]),  7,9},
  {&(_tg__ZTV8S19115C38S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C6__8S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C38S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C78S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C68S19115C3__8S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C2__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S19115C7__8S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__8S19115C2__9S19115C10[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__9S19115C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__A1__9S19115C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19115C10[];
extern  VTBL_ENTRY _ZTV9S19115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C10[];
static VTBL_ENTRY alt_thunk_names265[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19115C6D0Ev,_ZThn236_N8S19115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19115C6D1Ev,_ZThn236_N8S19115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19115C10D0Ev,_ZThn236_N9S19115C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19115C10D0Ev,_ZThn208_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19115C10D1Ev,_ZThn236_N9S19115C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S19115C10D1Ev,_ZThn208_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C10D0Ev,_ZThn132_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C10D1Ev,_ZThn132_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C10 = {  "S19115C10", // class name
  bases_S19115C10, 13,
  &(vtc_S19115C10[0]), // expected_vtbl_contents
  &(vtt_S19115C10[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI9S19115C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19115C10),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19115C10),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names265,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C14  : virtual S20760C9 {
  ::S4228C27 s19115c14f0;
  virtual  ~S19115C14(); // _ZN9S19115C14D2Ev
  S19115C14(); // tgen
};
//SIG(-1 S19115C14) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S19115C14 ::~S19115C14(){ note_dtor("S19115C14", this);}
S19115C14 ::S19115C14(){ note_ctor("S19115C14", this);} // tgen

static void Test_S19115C14()
{
  extern Class_Descriptor cd_S19115C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19115C14, buf);
    S19115C14 *dp, &lv = *(dp=new (buf) S19115C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19115C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C14)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S19115C14");
    check_field_offset(lv, s19115c14f0, ABISELECT(8,4), "S19115C14.s19115c14f0");
    test_class_info(&lv, &cd_S19115C14);
    dp->~S19115C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C14(Test_S19115C14, "S19115C14", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19115C14C1Ev();
extern void _ZN9S19115C14D2Ev();
Name_Map name_map_S19115C14[] = {
  NSPAIR(_ZN9S19115C14C1Ev),
  NSPAIR(_ZN9S19115C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19115C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI9S19115C14[];
extern void _ZN9S19115C14D1Ev();
extern void _ZN9S19115C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C14[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&_ZN9S19115C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C14D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19115C14[];
static  VTT_ENTRY vtt_S19115C14[] = {
  {&(_ZTV9S19115C14[3]),  3,10},
  {&(_ZTV9S19115C14[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19115C14[];
extern  VTBL_ENTRY _ZTV9S19115C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C14[];
static VTBL_ENTRY alt_thunk_names266[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C14 = {  "S19115C14", // class name
  bases_S19115C14, 1,
  &(vtc_S19115C14[0]), // expected_vtbl_contents
  &(vtt_S19115C14[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19115C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19115C14),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19115C14),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names266,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C13  : virtual S19115C14 , virtual S4228C23 , S19115C7 {
  int s19115c13f0;
  virtual  ~S19115C13(); // _ZN9S19115C13D2Ev
  S19115C13(); // tgen
};
//SIG(-1 S19115C13) C1{ VBC2{ VBC3{ vd m FL} vd FC4{ m}} VBC5{ m} BC6{ BC7{ vd m Fi[6]} VBC8{ m} VBC4 Fs} vd Fi}


 S19115C13 ::~S19115C13(){ note_dtor("S19115C13", this);}
S19115C13 ::S19115C13(){ note_ctor("S19115C13", this);} // tgen

static void Test_S19115C13()
{
  extern Class_Descriptor cd_S19115C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S19115C13, buf);
    S19115C13 *dp, &lv = *(dp=new (buf) S19115C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S19115C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C13)");
    check_base_class_offset(lv, (S20760C9*)(S19115C14*), ABISELECT(56,44), "S19115C13");
    check_base_class_offset(lv, (S19115C14*), ABISELECT(40,36), "S19115C13");
    check_base_class_offset(lv, (S4228C23*), 0, "S19115C13");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*), 0, "S19115C13");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*), 0, "S19115C13");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*), 0, "S19115C13");
    check_base_class_offset(lv, (S19115C7*), 0, "S19115C13");
    check_field_offset(lv, s19115c13f0, ABISELECT(36,32), "S19115C13.s19115c13f0");
    test_class_info(&lv, &cd_S19115C13);
    dp->~S19115C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C13(Test_S19115C13, "S19115C13", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN9S19115C13C1Ev();
extern void _ZN9S19115C13D2Ev();
Name_Map name_map_S19115C13[] = {
  NSPAIR(_ZN9S19115C13C1Ev),
  NSPAIR(_ZN9S19115C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C14;
extern VTBL_ENTRY _ZTI9S19115C14[];
extern  VTBL_ENTRY _ZTV9S19115C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C14[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
static Base_Class bases_S19115C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(56,44), //bcp->offset
    15, //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_S19115C14,    ABISELECT(40,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    4, //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},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19115C7,    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 _ZTI9S19115C13[];
extern void _ZN9S19115C13D1Ev();
extern void _ZN9S19115C13D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn40_N9S19115C13D1Ev,_ZThn36_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn40_N9S19115C13D0Ev,_ZThn36_N9S19115C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn56_N9S19115C13D1Ev,_ZThn44_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn56_N9S19115C13D0Ev,_ZThn44_N9S19115C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C13[] = {
  0,
  ABISELECT(56,44),
  ABISELECT(40,36),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&_ZN9S19115C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C13D0Ev,
  ABISELECT(-40,-36),
  ABISELECT(16,8),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19115C13[];
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C7__9S19115C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void _ZN9S19115C14D1Ev();
extern void _ZN9S19115C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19115C14__9S19115C13[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&_ZN9S19115C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19115C14__9S19115C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev),
};
static  VTT_ENTRY vtt_S19115C13[] = {
  {&(_ZTV9S19115C13[7]),  7,20},
  {&(_tg__ZTV8S19115C7__9S19115C13[4]),  4,6},
  {&(_ZTV9S19115C13[13]),  13,20},
  {&(_ZTV9S19115C13[18]),  18,20},
  {&(_tg__ZTV9S19115C14__9S19115C13[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19115C14__9S19115C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19115C13[];
extern  VTBL_ENTRY _ZTV9S19115C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C13[];
static VTBL_ENTRY alt_thunk_names267[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D0Ev,_ZThn8_N9S19115C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19115C14D1Ev,_ZThn8_N9S19115C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19115C13D0Ev,_ZThn44_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S19115C13D1Ev,_ZThn44_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19115C13D0Ev,_ZThn36_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19115C13D1Ev,_ZThn36_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C13 = {  "S19115C13", // class name
  bases_S19115C13, 7,
  &(vtc_S19115C13[0]), // expected_vtbl_contents
  &(vtt_S19115C13[0]), // expected_vtt_contents
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI9S19115C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19115C13),20, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19115C13),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names267,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19115C1  : virtual S19115C2 , S19115C10 , S19115C13 {
  ::S20759C5_nt s19115c1f0;
  ~S19115C1(); // tgen
  S19115C1(); // tgen
};
//SIG(1 S19115C1) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ VBC2 BC11{ m Fp} BC12{ m FC4[10]} vd Fi} BC13{ VBC14{ VBC4 vd FC9} VBC15{ m} BC7 vd Fi} FC16{ vd m Fl}}


S19115C1 ::~S19115C1(){ note_dtor("S19115C1", this);} // tgen
S19115C1 ::S19115C1(){ note_ctor("S19115C1", this);} // tgen

static void Test_S19115C1()
{
  extern Class_Descriptor cd_S19115C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,76)];
    init_test(&cd_S19115C1, buf);
    S19115C1 *dp, &lv = *(dp=new (buf) S19115C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,300), "sizeof(S19115C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19115C1)");
    /*is_ambiguous_... S19115C3::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C3*)(S19115C2*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S20760C13*)(S19115C3*)(S19115C2*), ABISELECT(336,252), "S19115C1");
    check_base_class_offset(lv, (S20760C9*)(S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(368,280), "S19115C1");
    /*is_ambiguous_... S19115C1::S19115C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19115C6*), ABISELECT(368,280), "S19115C1");
    check_base_class_offset(lv, (S20760C9*)(S19115C14*), ABISELECT(368,280), "S19115C1");
    check_base_class_offset(lv, (S19115C6*)(S19115C3*)(S19115C2*), ABISELECT(256,188), "S19115C1");
    check_base_class_offset(lv, (S19115C3*)(S19115C2*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*)(S19115C2*), ABISELECT(296,220), "S19115C1");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*)(S19115C2*), 0, "S19115C1");
    check_base_class_offset(lv, (S4228C37*)(S19115C7*)(S19115C13*), 0, "S19115C1");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*)(S19115C2*), 0, "S19115C1");
    check_base_class_offset(lv, (S4228C27*)(S19115C7*)(S19115C13*), 0, "S19115C1");
    check_base_class_offset(lv, (S19115C7*)(S19115C2*), ABISELECT(296,220), "S19115C1");
    /*is_ambiguous_... S19115C2::S19115C6 */ AMB_check_base_class_offset(lv, (S19115C6*)(S19115C2*), 0, "S19115C1");
    check_base_class_offset(lv, (S19115C2*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S19115C2*)(S19115C10*), ABISELECT(240,176), "S19115C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19115C10*), ABISELECT(8,4), "S19115C1");
    check_base_class_offset(lv, (S19115C12*)(S19115C10*), ABISELECT(16,8), "S19115C1");
    check_base_class_offset(lv, (S19115C10*), 0, "S19115C1");
    check_base_class_offset(lv, (S19115C14*)(S19115C13*), ABISELECT(384,292), "S19115C1");
    check_base_class_offset(lv, (S4228C23*)(S19115C13*), 0, "S19115C1");
    check_base_class_offset(lv, (S20760C13*)(S19115C7*)(S19115C13*), ABISELECT(184,132), "S19115C1");
    check_base_class_offset(lv, (S19115C7*)(S19115C13*), ABISELECT(184,132), "S19115C1");
    check_base_class_offset(lv, (S19115C13*), ABISELECT(184,132), "S19115C1");
    check_field_offset(lv, s19115c1f0, ABISELECT(224,168), "S19115C1.s19115c1f0");
    test_class_info(&lv, &cd_S19115C1);
    dp->~S19115C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19115C1(Test_S19115C1, "S19115C1", ABISELECT(400,300));

#else // __cplusplus

extern void _ZN8S19115C1C1Ev();
extern void _ZN8S19115C1D1Ev();
Name_Map name_map_S19115C1[] = {
  NSPAIR(_ZN8S19115C1C1Ev),
  NSPAIR(_ZN8S19115C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C3;
extern VTBL_ENTRY _ZTI8S19115C3[];
extern  VTBL_ENTRY _ZTV8S19115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C3[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C6;
extern VTBL_ENTRY _ZTI8S19115C6[];
extern  VTBL_ENTRY _ZTV8S19115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C6[];
extern Class_Descriptor cd_S19115C2;
extern VTBL_ENTRY _ZTI8S19115C2[];
extern  VTBL_ENTRY _ZTV8S19115C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C2[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19115C10;
extern VTBL_ENTRY _ZTI9S19115C10[];
extern  VTBL_ENTRY _ZTV9S19115C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C10[];
extern Class_Descriptor cd_S19115C14;
extern VTBL_ENTRY _ZTI9S19115C14[];
extern  VTBL_ENTRY _ZTV9S19115C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C14[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S19115C7;
extern VTBL_ENTRY _ZTI8S19115C7[];
extern  VTBL_ENTRY _ZTV8S19115C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C7[];
extern Class_Descriptor cd_S19115C13;
extern VTBL_ENTRY _ZTI9S19115C13[];
extern  VTBL_ENTRY _ZTV9S19115C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19115C13[];
static Base_Class bases_S19115C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(336,252), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(368,280), //bcp->offset
    48, //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_S19115C6,    ABISELECT(256,188), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19115C3,    ABISELECT(240,176), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(296,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19115C7,    ABISELECT(296,220), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19115C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19115C2,    ABISELECT(240,176), //bcp->offset
    22, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S19115C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19115C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19115C14,    ABISELECT(384,292), //bcp->offset
    53, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20760C13,    ABISELECT(184,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
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19115C7,    ABISELECT(184,132), //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
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19115C13,    ABISELECT(184,132), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19115C1[];
extern void ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev)();
extern void _ZN8S19115C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev)();
extern void _ZN8S19115C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn184_N8S19115C1D1Ev,_ZThn132_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn184_N8S19115C1D0Ev,_ZThn132_N8S19115C1D0Ev)();
extern void ABISELECT(_ZTv0_n64_N8S19115C1D1Ev,_ZTv0_n32_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19115C1D1Ev,_ZThn176_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19115C1D0Ev,_ZTv0_n32_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19115C1D0Ev,_ZThn176_N8S19115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19115C1D1Ev,_ZTvn12_n32_N8S19115C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19115C1D0Ev,_ZTvn12_n32_N8S19115C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19115C1D1Ev,_ZTvn44_n32_N8S19115C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19115C1D0Ev,_ZTvn44_n32_N8S19115C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19115C1D1Ev,_ZThn252_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S19115C1D0Ev,_ZThn252_N8S19115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S19115C1D1Ev,_ZThn280_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S19115C1D0Ev,_ZThn280_N8S19115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev)();
extern void ABISELECT(_ZThn384_N8S19115C1D1Ev,_ZThn292_N8S19115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev)();
extern void ABISELECT(_ZThn384_N8S19115C1D0Ev,_ZThn292_N8S19115C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19115C1[] = {
  0,
  ABISELECT(384,292),
  0,
  0,
  0,
  ABISELECT(336,252),
  ABISELECT(240,176),
  0,
  ABISELECT(368,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(184,148),
  ABISELECT(200,160),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S19115C1D1Ev,_ZThn132_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S19115C1D0Ev,_ZThn132_N8S19115C1D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19115C1D1Ev,_ZTv0_n32_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19115C1D0Ev,_ZTv0_n32_N8S19115C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19115C1D1Ev,_ZTvn12_n32_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19115C1D0Ev,_ZTvn12_n32_N8S19115C1D0Ev),
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19115C1D1Ev,_ZTvn44_n32_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19115C1D0Ev,_ZTvn44_n32_N8S19115C1D0Ev),
  ABISELECT(-336,-252),
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev),
  ABISELECT(-368,-280),
  ABISELECT(-368,-280),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev),
  ABISELECT(-384,-292),
  ABISELECT(-16,-12),
  ABISELECT(-384,-292),
  (VTBL_ENTRY)&(_ZTI8S19115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19115C1[];
extern void ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev)();
extern void _ZN9S19115C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev)();
extern void _ZN9S19115C10D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19115C10__8S19115C1[] = {
  0,
  0,
  0,
  ABISELECT(336,252),
  ABISELECT(240,176),
  0,
  ABISELECT(368,280),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn240_N9S19115C10D1Ev,_ZThn176_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn240_N9S19115C10D0Ev,_ZThn176_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19115C2__9S19115C10__8S19115C1[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn336_N9S19115C10D1Ev,_ZThn252_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn336_N9S19115C10D0Ev,_ZThn252_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19115C10__8S19115C1[] = {
  ABISELECT(-336,-252),
  ABISELECT(-336,-252),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10__8S19115C1[] = {
  ABISELECT(112,92),
  ABISELECT(-256,-188),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D1Ev,_ZTvn12_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N9S19115C10D0Ev,_ZTvn12_n32_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev)();
extern void ABISELECT(_ZThn368_N9S19115C10D1Ev,_ZThn280_N9S19115C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev)();
extern void ABISELECT(_ZThn368_N9S19115C10D0Ev,_ZThn280_N9S19115C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19115C10__8S19115C1[] = {
  ABISELECT(-368,-280),
  ABISELECT(-368,-280),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C78S19115C2__9S19115C10__8S19115C1[] = {
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  (VTBL_ENTRY)&(_ZTI9S19115C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D1Ev,_ZTvn44_n32_N9S19115C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N9S19115C10D0Ev,_ZTvn44_n32_N9S19115C10D0Ev),
};
extern void _ZN9S19115C13D1Ev();
extern void _ZN9S19115C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19115C13__8S19115C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(184,148),
  ABISELECT(200,160),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&_ZN9S19115C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C13D0Ev,
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C79S19115C13__A1__8S19115C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn200_N9S19115C13D1Ev,_ZThn160_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn200_N9S19115C13D0Ev,_ZThn160_N9S19115C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19115C14__9S19115C13__8S19115C1[] = {
  ABISELECT(-200,-160),
  ABISELECT(-16,-12),
  ABISELECT(-200,-160),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev)();
extern void ABISELECT(_ZThn184_N9S19115C13D1Ev,_ZThn148_N9S19115C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev)();
extern void ABISELECT(_ZThn184_N9S19115C13D0Ev,_ZThn148_N9S19115C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19115C13__8S19115C1[] = {
  ABISELECT(-184,-148),
  ABISELECT(-184,-148),
  (VTBL_ENTRY)&(_ZTI9S19115C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev),
};
extern void _ZN8S19115C2D1Ev();
extern void _ZN8S19115C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C2__8S19115C1[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&_ZN8S19115C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C2D0Ev,
};
extern void _ZN8S19115C3D1Ev();
extern void _ZN8S19115C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&_ZN8S19115C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C3D0Ev,
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D1Ev,_ZThn12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C3D0Ev,_ZThn12_N8S19115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C38S19115C2__8S19115C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev),
};
extern void _ZN8S19115C7D1Ev();
extern void _ZN8S19115C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C78S19115C2__8S19115C1[] = {
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C7[0]),
  (VTBL_ENTRY)&_ZN8S19115C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C7D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19115C2__8S19115C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C68S19115C3__8S19115C2__8S19115C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D1Ev,_ZThn12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19115C2D0Ev,_ZThn12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19115C2__8S19115C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C7__8S19115C2__8S19115C1[] = {
  ABISELECT(-296,-220),
  ABISELECT(-296,-220),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D1Ev,_ZThn44_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19115C2D0Ev,_ZThn44_N8S19115C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C2__8S19115C1[] = {
  ABISELECT(240,176),
  ABISELECT(368,280),
  ABISELECT(240,176),
  (VTBL_ENTRY)&(_ZTI8S19115C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D1Ev,_ZTv0_n16_N8S19115C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19115C2D0Ev,_ZTv0_n16_N8S19115C2D0Ev),
};
extern void _ZN8S19115C6D1Ev();
extern void _ZN8S19115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19115C6__A1__8S19115C1[] = {
  ABISELECT(368,280),
  0,
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&_ZN8S19115C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev)();
extern void ABISELECT(_ZThn368_N8S19115C6D1Ev,_ZThn280_N8S19115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev)();
extern void ABISELECT(_ZThn368_N8S19115C6D0Ev,_ZThn280_N8S19115C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19115C6__A1__8S19115C1[] = {
  ABISELECT(-368,-280),
  ABISELECT(-368,-280),
  (VTBL_ENTRY)&(_ZTI8S19115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev),
};
extern void _ZN9S19115C14D1Ev();
extern void _ZN9S19115C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19115C14__8S19115C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&_ZN9S19115C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19115C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19115C14__8S19115C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19115C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D1Ev,_ZTv0_n12_N9S19115C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19115C14D0Ev,_ZTv0_n12_N9S19115C14D0Ev),
};
static  VTT_ENTRY vtt_S19115C1[] = {
  {&(_ZTV8S19115C1[11]),  11,59},
  {&(_tg__ZTV9S19115C10__8S19115C1[9]),  9,11},
  {&(_tg__ZTV8S19115C2__9S19115C10__8S19115C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__9S19115C10__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C68S19115C38S19115C2__9S19115C10__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19115C10__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C78S19115C2__9S19115C10__8S19115C1[4]),  4,6},
  {&(_tg__ZTV9S19115C10__8S19115C1[9]),  9,11},
  {&(_tg__ZTV9S19115C13__8S19115C1[7]),  7,9},
  {&(_tg__ZTV8S19115C79S19115C13__A1__8S19115C1[4]),  4,6},
  {&(_tg__ZTV9S19115C14__9S19115C13__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S20760C9__9S19115C13__8S19115C1[3]),  3,5},
  {&(_ZTV8S19115C1[30]),  30,59},
  {&(_ZTV8S19115C1[46]),  46,59},
  {&(_ZTV8S19115C1[35]),  35,59},
  {&(_ZTV8S19115C1[51]),  51,59},
  {&(_ZTV8S19115C1[41]),  41,59},
  {&(_ZTV8S19115C1[11]),  11,59},
  {&(_ZTV8S19115C1[20]),  20,59},
  {&(_ZTV8S19115C1[57]),  57,59},
  {&(_tg__ZTV8S19115C2__8S19115C1[7]),  7,9},
  {&(_tg__ZTV8S19115C38S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S19115C68S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C68S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C6__8S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C38S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C78S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C68S19115C3__8S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19115C2__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S19115C7__8S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__8S19115C2__8S19115C1[4]),  4,6},
  {&(_tg__ZTV8S19115C6__A1__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19115C6__A1__8S19115C1[3]),  3,5},
  {&(_tg__ZTV9S19115C14__8S19115C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19115C14__8S19115C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19115C1[];
extern  VTBL_ENTRY _ZTV8S19115C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19115C1[];
static VTBL_ENTRY alt_thunk_names268[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D0Ev,_ZTv0_n12_N8S19115C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D0Ev,_ZThn104_N8S19115C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D0Ev,_ZThn76_N8S19115C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C2D1Ev,_ZTv0_n12_N8S19115C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C2D1Ev,_ZThn104_N8S19115C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C2D1Ev,_ZThn76_N8S19115C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D0Ev,_ZTv0_n12_N8S19115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D0Ev,_ZThn104_N8S19115C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D0Ev,_ZThn76_N8S19115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C3D1Ev,_ZTv0_n12_N8S19115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19115C3D1Ev,_ZThn104_N8S19115C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19115C3D1Ev,_ZThn76_N8S19115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D0Ev,_ZTv0_n12_N8S19115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C6D0Ev,_ZThn280_N8S19115C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D0Ev,_ZThn92_N8S19115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C6D1Ev,_ZTv0_n12_N8S19115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C6D1Ev,_ZThn280_N8S19115C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19115C6D1Ev,_ZThn92_N8S19115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D0Ev,_ZTv0_n12_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C13D0Ev,_ZThn148_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C13D1Ev,_ZTv0_n12_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19115C13D1Ev,_ZThn148_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D0Ev,_ZTv0_n16_N9S19115C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19115C13D0Ev,_ZThn160_N9S19115C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C13D1Ev,_ZTv0_n16_N9S19115C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S19115C13D1Ev,_ZThn160_N9S19115C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D0Ev,_ZTv0_n12_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19115C10D0Ev,_ZThn280_N9S19115C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19115C10D0Ev,_ZThn252_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19115C10D1Ev,_ZTv0_n12_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19115C10D1Ev,_ZThn280_N9S19115C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19115C10D1Ev,_ZThn252_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D0Ev,_ZTv0_n32_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19115C10D0Ev,_ZThn176_N9S19115C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19115C10D1Ev,_ZTv0_n32_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S19115C10D1Ev,_ZThn176_N9S19115C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D0Ev,_ZTv0_n16_N9S19115C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19115C10D1Ev,_ZTv0_n16_N9S19115C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S19115C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C1D0Ev,_ZTv0_n12_N8S19115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C1D0Ev,_ZThn280_N8S19115C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19115C1D0Ev,_ZThn252_N8S19115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19115C1D1Ev,_ZTv0_n12_N8S19115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19115C1D1Ev,_ZThn280_N8S19115C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19115C1D1Ev,_ZThn252_N8S19115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19115C1D0Ev,_ZTv0_n32_N8S19115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19115C1D0Ev,_ZThn176_N8S19115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19115C1D1Ev,_ZTv0_n32_N8S19115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19115C1D1Ev,_ZThn176_N8S19115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C1D0Ev,_ZTv0_n16_N8S19115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19115C1D0Ev,_ZThn292_N8S19115C1D0Ev),
  (VTBL_ENTRY)_ZN8S19115C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19115C1D1Ev,_ZTv0_n16_N8S19115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S19115C1D1Ev,_ZThn292_N8S19115C1D1Ev),
  (VTBL_ENTRY)_ZN8S19115C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19115C1 = {  "S19115C1", // class name
  bases_S19115C1, 19,
  &(vtc_S19115C1[0]), // expected_vtbl_contents
  &(vtt_S19115C1[0]), // expected_vtt_contents
  ABISELECT(400,300), // object size
  NSPAIRA(_ZTI8S19115C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19115C1),59, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19115C1),37, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names268,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5251C3  {
  char s5251c3f0;
  int s5251c3f1;
  void *s5251c3f2[3];
  char s5251c3f3[3];
  ::S4228C19_nt s5251c3f4;
  char s5251c3f5;
  void *s5251c3f6;
  int s5251c3f7[2];
  virtual  ~S5251C3(); // _ZN7S5251C3D1Ev
  virtual void  v5(); // _ZN7S5251C32v5Ev
  virtual void  v6(); // _ZN7S5251C32v6Ev
  virtual void  v7(); // _ZN7S5251C32v7Ev
  virtual void  v8(); // _ZN7S5251C32v8Ev
  virtual void  v9(); // _ZN7S5251C32v9Ev
  virtual void  v10(); // _ZN7S5251C33v10Ev
  virtual void  v11(); // _ZN7S5251C33v11Ev
  virtual void  v12(); // _ZN7S5251C33v12Ev
  virtual void  v13(); // _ZN7S5251C33v13Ev
  virtual void  v14(); // _ZN7S5251C33v14Ev
  virtual void  v15(); // _ZN7S5251C33v15Ev
  virtual void  v16(); // _ZN7S5251C33v16Ev
  virtual void  v17(); // _ZN7S5251C33v17Ev
  virtual void  v18(); // _ZN7S5251C33v18Ev
  S5251C3(); // tgen
};
//SIG(-1 S5251C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S5251C3 ::~S5251C3(){ note_dtor("S5251C3", this);}
void  S5251C3 ::v5(){vfunc_called(this, "_ZN7S5251C32v5Ev");}
void  S5251C3 ::v6(){vfunc_called(this, "_ZN7S5251C32v6Ev");}
void  S5251C3 ::v7(){vfunc_called(this, "_ZN7S5251C32v7Ev");}
void  S5251C3 ::v8(){vfunc_called(this, "_ZN7S5251C32v8Ev");}
void  S5251C3 ::v9(){vfunc_called(this, "_ZN7S5251C32v9Ev");}
void  S5251C3 ::v10(){vfunc_called(this, "_ZN7S5251C33v10Ev");}
void  S5251C3 ::v11(){vfunc_called(this, "_ZN7S5251C33v11Ev");}
void  S5251C3 ::v12(){vfunc_called(this, "_ZN7S5251C33v12Ev");}
void  S5251C3 ::v13(){vfunc_called(this, "_ZN7S5251C33v13Ev");}
void  S5251C3 ::v14(){vfunc_called(this, "_ZN7S5251C33v14Ev");}
void  S5251C3 ::v15(){vfunc_called(this, "_ZN7S5251C33v15Ev");}
void  S5251C3 ::v16(){vfunc_called(this, "_ZN7S5251C33v16Ev");}
void  S5251C3 ::v17(){vfunc_called(this, "_ZN7S5251C33v17Ev");}
void  S5251C3 ::v18(){vfunc_called(this, "_ZN7S5251C33v18Ev");}
S5251C3 ::S5251C3(){ note_ctor("S5251C3", this);} // tgen

static void Test_S5251C3()
{
  extern Class_Descriptor cd_S5251C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S5251C3, buf);
    S5251C3 *dp, &lv = *(dp=new (buf) S5251C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S5251C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5251C3)");
    check_field_offset(lv, s5251c3f0, ABISELECT(8,4), "S5251C3.s5251c3f0");
    check_field_offset(lv, s5251c3f1, ABISELECT(12,8), "S5251C3.s5251c3f1");
    check_field_offset(lv, s5251c3f2, ABISELECT(16,12), "S5251C3.s5251c3f2");
    check_field_offset(lv, s5251c3f3, ABISELECT(40,24), "S5251C3.s5251c3f3");
    check_field_offset(lv, s5251c3f4, ABISELECT(48,28), "S5251C3.s5251c3f4");
    check_field_offset(lv, s5251c3f5, ABISELECT(64,40), "S5251C3.s5251c3f5");
    check_field_offset(lv, s5251c3f6, ABISELECT(72,44), "S5251C3.s5251c3f6");
    check_field_offset(lv, s5251c3f7, ABISELECT(80,48), "S5251C3.s5251c3f7");
    test_class_info(&lv, &cd_S5251C3);
    dp->~S5251C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5251C3(Test_S5251C3, "S5251C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S5251C3C1Ev();
extern void _ZN7S5251C3D1Ev();
Name_Map name_map_S5251C3[] = {
  NSPAIR(_ZN7S5251C3C1Ev),
  NSPAIR(_ZN7S5251C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5251C3[];
extern void _ZN7S5251C3D1Ev();
extern void _ZN7S5251C3D0Ev();
extern void _ZN7S5251C32v5Ev();
extern void _ZN7S5251C32v6Ev();
extern void _ZN7S5251C32v7Ev();
extern void _ZN7S5251C32v8Ev();
extern void _ZN7S5251C32v9Ev();
extern void _ZN7S5251C33v10Ev();
extern void _ZN7S5251C33v11Ev();
extern void _ZN7S5251C33v12Ev();
extern void _ZN7S5251C33v13Ev();
extern void _ZN7S5251C33v14Ev();
extern void _ZN7S5251C33v15Ev();
extern void _ZN7S5251C33v16Ev();
extern void _ZN7S5251C33v17Ev();
extern void _ZN7S5251C33v18Ev();
static  VTBL_ENTRY vtc_S5251C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5251C3[0]),
  (VTBL_ENTRY)&_ZN7S5251C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5251C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v18Ev,
};
extern VTBL_ENTRY _ZTI7S5251C3[];
extern  VTBL_ENTRY _ZTV7S5251C3[];
Class_Descriptor cd_S5251C3 = {  "S5251C3", // class name
  0,0,//no base classes
  &(vtc_S5251C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S5251C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5251C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5251C2  : S5251C3 {
  char s5251c2f0;
  void *s5251c2f1[2];
  virtual  ~S5251C2(); // _ZN7S5251C2D1Ev
  virtual void  v19(); // _ZN7S5251C23v19Ev
  S5251C2(); // tgen
};
//SIG(-1 S5251C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S5251C2 ::~S5251C2(){ note_dtor("S5251C2", this);}
void  S5251C2 ::v19(){vfunc_called(this, "_ZN7S5251C23v19Ev");}
S5251C2 ::S5251C2(){ note_ctor("S5251C2", this);} // tgen

static void Test_S5251C2()
{
  extern Class_Descriptor cd_S5251C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S5251C2, buf);
    S5251C2 *dp, &lv = *(dp=new (buf) S5251C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S5251C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5251C2)");
    check_base_class_offset(lv, (S5251C3*), 0, "S5251C2");
    check_field_offset(lv, s5251c2f0, ABISELECT(88,56), "S5251C2.s5251c2f0");
    check_field_offset(lv, s5251c2f1, ABISELECT(96,60), "S5251C2.s5251c2f1");
    test_class_info(&lv, &cd_S5251C2);
    dp->~S5251C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5251C2(Test_S5251C2, "S5251C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S5251C2C1Ev();
extern void _ZN7S5251C2D1Ev();
Name_Map name_map_S5251C2[] = {
  NSPAIR(_ZN7S5251C2C1Ev),
  NSPAIR(_ZN7S5251C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5251C3;
extern VTBL_ENTRY _ZTI7S5251C3[];
extern  VTBL_ENTRY _ZTV7S5251C3[];
static Base_Class bases_S5251C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5251C2[];
extern void _ZN7S5251C2D1Ev();
extern void _ZN7S5251C2D0Ev();
extern void _ZN7S5251C32v5Ev();
extern void _ZN7S5251C32v6Ev();
extern void _ZN7S5251C32v7Ev();
extern void _ZN7S5251C32v8Ev();
extern void _ZN7S5251C32v9Ev();
extern void _ZN7S5251C33v10Ev();
extern void _ZN7S5251C33v11Ev();
extern void _ZN7S5251C33v12Ev();
extern void _ZN7S5251C33v13Ev();
extern void _ZN7S5251C33v14Ev();
extern void _ZN7S5251C33v15Ev();
extern void _ZN7S5251C33v16Ev();
extern void _ZN7S5251C33v17Ev();
extern void _ZN7S5251C33v18Ev();
extern void _ZN7S5251C23v19Ev();
static  VTBL_ENTRY vtc_S5251C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5251C2[0]),
  (VTBL_ENTRY)&_ZN7S5251C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5251C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5251C23v19Ev,
};
extern VTBL_ENTRY _ZTI7S5251C2[];
extern  VTBL_ENTRY _ZTV7S5251C2[];
Class_Descriptor cd_S5251C2 = {  "S5251C2", // class name
  bases_S5251C2, 1,
  &(vtc_S5251C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S5251C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5251C2),19, //virtual function table var
  2, // 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  S5251C1  : S5251C2 {
  void *s5251c1f0[4];
  ::S4228C44 s5251c1f1;
  ::S4228C19_nt s5251c1f2;
  ::S4228C19_nt s5251c1f3;
  ::S4228C19_nt s5251c1f4;
  virtual  ~S5251C1(); // _ZN7S5251C1D1Ev
  virtual void  v1(); // _ZN7S5251C12v1Ev
  virtual void  v2(); // _ZN7S5251C12v2Ev
  virtual void  v3(); // _ZN7S5251C12v3Ev
  virtual void  v4(); // _ZN7S5251C12v4Ev
  S5251C1(); // tgen
};
//SIG(1 S5251C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v19 Fc Fp[2]} vd v1 v2 v3 v4 Fp[4] FC6{ m Fp Fi[2] FC7{ m}} FC4 FC4 FC4}


 S5251C1 ::~S5251C1(){ note_dtor("S5251C1", this);}
void  S5251C1 ::v1(){vfunc_called(this, "_ZN7S5251C12v1Ev");}
void  S5251C1 ::v2(){vfunc_called(this, "_ZN7S5251C12v2Ev");}
void  S5251C1 ::v3(){vfunc_called(this, "_ZN7S5251C12v3Ev");}
void  S5251C1 ::v4(){vfunc_called(this, "_ZN7S5251C12v4Ev");}
S5251C1 ::S5251C1(){ note_ctor("S5251C1", this);} // tgen

static void Test_S5251C1()
{
  extern Class_Descriptor cd_S5251C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,35)];
    init_test(&cd_S5251C1, buf);
    S5251C1 *dp, &lv = *(dp=new (buf) S5251C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,136), "sizeof(S5251C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5251C1)");
    check_base_class_offset(lv, (S5251C3*)(S5251C2*), 0, "S5251C1");
    check_base_class_offset(lv, (S5251C2*), 0, "S5251C1");
    check_field_offset(lv, s5251c1f0, ABISELECT(112,68), "S5251C1.s5251c1f0");
    check_field_offset(lv, s5251c1f1, ABISELECT(144,84), "S5251C1.s5251c1f1");
    check_field_offset(lv, s5251c1f2, ABISELECT(168,100), "S5251C1.s5251c1f2");
    check_field_offset(lv, s5251c1f3, ABISELECT(184,112), "S5251C1.s5251c1f3");
    check_field_offset(lv, s5251c1f4, ABISELECT(200,124), "S5251C1.s5251c1f4");
    test_class_info(&lv, &cd_S5251C1);
    dp->~S5251C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5251C1(Test_S5251C1, "S5251C1", ABISELECT(216,136));

#else // __cplusplus

extern void _ZN7S5251C1C1Ev();
extern void _ZN7S5251C1D1Ev();
Name_Map name_map_S5251C1[] = {
  NSPAIR(_ZN7S5251C1C1Ev),
  NSPAIR(_ZN7S5251C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5251C3;
extern VTBL_ENTRY _ZTI7S5251C3[];
extern  VTBL_ENTRY _ZTV7S5251C3[];
extern Class_Descriptor cd_S5251C2;
extern VTBL_ENTRY _ZTI7S5251C2[];
extern  VTBL_ENTRY _ZTV7S5251C2[];
static Base_Class bases_S5251C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5251C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5251C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5251C1[];
extern void _ZN7S5251C1D1Ev();
extern void _ZN7S5251C1D0Ev();
extern void _ZN7S5251C32v5Ev();
extern void _ZN7S5251C32v6Ev();
extern void _ZN7S5251C32v7Ev();
extern void _ZN7S5251C32v8Ev();
extern void _ZN7S5251C32v9Ev();
extern void _ZN7S5251C33v10Ev();
extern void _ZN7S5251C33v11Ev();
extern void _ZN7S5251C33v12Ev();
extern void _ZN7S5251C33v13Ev();
extern void _ZN7S5251C33v14Ev();
extern void _ZN7S5251C33v15Ev();
extern void _ZN7S5251C33v16Ev();
extern void _ZN7S5251C33v17Ev();
extern void _ZN7S5251C33v18Ev();
extern void _ZN7S5251C23v19Ev();
extern void _ZN7S5251C12v1Ev();
extern void _ZN7S5251C12v2Ev();
extern void _ZN7S5251C12v3Ev();
extern void _ZN7S5251C12v4Ev();
static  VTBL_ENTRY vtc_S5251C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5251C1[0]),
  (VTBL_ENTRY)&_ZN7S5251C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5251C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5251C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5251C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5251C23v19Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5251C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S5251C1[];
extern  VTBL_ENTRY _ZTV7S5251C1[];
Class_Descriptor cd_S5251C1 = {  "S5251C1", // class name
  bases_S5251C1, 2,
  &(vtc_S5251C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,136), // object size
  NSPAIRA(_ZTI7S5251C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5251C1),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  S21162C2  : virtual S20759C5_nt {
  char s21162c2f0[2];
  virtual  ~S21162C2(); // _ZN8S21162C2D2Ev
  S21162C2(); // tgen
};
//SIG(-1 S21162C2) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S21162C2 ::~S21162C2(){ note_dtor("S21162C2", this);}
S21162C2 ::S21162C2(){ note_ctor("S21162C2", this);} // tgen

static void Test_S21162C2()
{
  extern Class_Descriptor cd_S21162C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21162C2, buf);
    S21162C2 *dp, &lv = *(dp=new (buf) S21162C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21162C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C2)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S21162C2");
    check_field_offset(lv, s21162c2f0, ABISELECT(8,4), "S21162C2.s21162c2f0");
    test_class_info(&lv, &cd_S21162C2);
    dp->~S21162C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C2(Test_S21162C2, "S21162C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S21162C2C1Ev();
extern void _ZN8S21162C2D2Ev();
Name_Map name_map_S21162C2[] = {
  NSPAIR(_ZN8S21162C2C1Ev),
  NSPAIR(_ZN8S21162C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S21162C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //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 _ZTI8S21162C2[];
extern void _ZN8S21162C2D1Ev();
extern void _ZN8S21162C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&_ZN8S21162C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C2[];
static  VTT_ENTRY vtt_S21162C2[] = {
  {&(_ZTV8S21162C2[3]),  3,10},
  {&(_ZTV8S21162C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21162C2[];
extern  VTBL_ENTRY _ZTV8S21162C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C2[];
static VTBL_ENTRY alt_thunk_names269[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C2 = {  "S21162C2", // class name
  bases_S21162C2, 1,
  &(vtc_S21162C2[0]), // expected_vtbl_contents
  &(vtt_S21162C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S21162C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21162C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names269,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C9  : virtual S20760C9 {
  virtual  ~S21162C9(); // _ZN8S21162C9D2Ev
  S21162C9(); // tgen
};
//SIG(-1 S21162C9) C1{ VBC2{ vd m FL} vd}


 S21162C9 ::~S21162C9(){ note_dtor("S21162C9", this);}
S21162C9 ::S21162C9(){ note_ctor("S21162C9", this);} // tgen

static void Test_S21162C9()
{
  extern Class_Descriptor cd_S21162C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21162C9, buf);
    S21162C9 *dp, &lv = *(dp=new (buf) S21162C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21162C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C9)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S21162C9");
    test_class_info(&lv, &cd_S21162C9);
    dp->~S21162C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C9(Test_S21162C9, "S21162C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21162C9C1Ev();
extern void _ZN8S21162C9D2Ev();
Name_Map name_map_S21162C9[] = {
  NSPAIR(_ZN8S21162C9C1Ev),
  NSPAIR(_ZN8S21162C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21162C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C9[];
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21162C9D1Ev,_ZThn4_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21162C9D0Ev,_ZThn4_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C9[];
static  VTT_ENTRY vtt_S21162C9[] = {
  {&(_ZTV8S21162C9[3]),  3,10},
  {&(_ZTV8S21162C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
static VTBL_ENTRY alt_thunk_names270[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21162C9D0Ev,_ZThn4_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21162C9D1Ev,_ZThn4_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C9 = {  "S21162C9", // class name
  bases_S21162C9, 1,
  &(vtc_S21162C9[0]), // expected_vtbl_contents
  &(vtt_S21162C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21162C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21162C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names270,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C6  : S20760C9 , virtual S20760C13 , S21162C9 {
  ::S20760C13 s21162c6f0;
  ~S21162C6(); // tgen
  S21162C6(); // tgen
};
//SIG(-1 S21162C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21162C6 ::~S21162C6(){ note_dtor("S21162C6", this);} // tgen
S21162C6 ::S21162C6(){ note_ctor("S21162C6", this);} // tgen

static void Test_S21162C6()
{
  extern Class_Descriptor cd_S21162C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21162C6, buf);
    S21162C6 *dp, &lv = *(dp=new (buf) S21162C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21162C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C6)");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S21162C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21162C6");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(88,72), "S21162C6");
    check_base_class_offset(lv, (S21162C9*), ABISELECT(16,12), "S21162C6");
    check_field_offset(lv, s21162c6f0, ABISELECT(24,16), "S21162C6.s21162c6f0");
    test_class_info(&lv, &cd_S21162C6);
    dp->~S21162C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C6(Test_S21162C6, "S21162C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21162C6C1Ev();
extern void _ZN8S21162C6D1Ev();
Name_Map name_map_S21162C6[] = {
  NSPAIR(_ZN8S21162C6C1Ev),
  NSPAIR(_ZN8S21162C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
static Base_Class bases_S21162C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C6[];
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S21162C6D1Ev,_ZThn72_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S21162C6D0Ev,_ZThn72_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C6[];
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S21162C9D1Ev,_ZThn60_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S21162C9D0Ev,_ZThn60_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__8S21162C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
static  VTT_ENTRY vtt_S21162C6[] = {
  {&(_ZTV8S21162C6[4]),  4,21},
  {&(_tg__ZTV8S21162C9__8S21162C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__8S21162C6[3]),  3,5},
  {&(_ZTV8S21162C6[14]),  14,21},
  {&(_ZTV8S21162C6[9]),  9,21},
  {&(_ZTV8S21162C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
static VTBL_ENTRY alt_thunk_names271[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21162C9D0Ev,_ZThn60_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21162C9D1Ev,_ZThn60_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21162C6D0Ev,_ZThn72_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21162C6D1Ev,_ZThn72_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C6 = {  "S21162C6", // class name
  bases_S21162C6, 4,
  &(vtc_S21162C6[0]), // expected_vtbl_contents
  &(vtt_S21162C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21162C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21162C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names271,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C10  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s21162c10f0;
  ~S21162C10(); // tgen
  S21162C10(); // tgen
};
//SIG(-1 S21162C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21162C10 ::~S21162C10(){ note_dtor("S21162C10", this);} // tgen
S21162C10 ::S21162C10(){ note_ctor("S21162C10", this);} // tgen

static void Test_S21162C10()
{
  extern Class_Descriptor cd_S21162C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21162C10, buf);
    S21162C10 *dp, &lv = *(dp=new (buf) S21162C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21162C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21162C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21162C10");
    check_base_class_offset(lv, (S4228C27*), 0, "S21162C10");
    check_field_offset(lv, s21162c10f0, ABISELECT(32,28), "S21162C10.s21162c10f0");
    test_class_info(&lv, &cd_S21162C10);
    dp->~S21162C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C10(Test_S21162C10, "S21162C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21162C10C1Ev();
extern void _ZN9S21162C10D1Ev();
Name_Map name_map_S21162C10[] = {
  NSPAIR(_ZN9S21162C10C1Ev),
  NSPAIR(_ZN9S21162C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S21162C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21162C10[];
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY vtc_S21162C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21162C10[];
static  VTT_ENTRY vtt_S21162C10[] = {
  {&(_ZTV9S21162C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
Class_Descriptor cd_S21162C10 = {  "S21162C10", // class name
  bases_S21162C10, 3,
  &(vtc_S21162C10[0]), // expected_vtbl_contents
  &(vtt_S21162C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21162C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21162C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21162C10),1, //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  S21162C5  : S21162C6 , S21162C10 , virtual S21162C9 {
  virtual  ~S21162C5(); // _ZN8S21162C5D2Ev
  S21162C5(); // tgen
};
//SIG(-1 S21162C5) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S21162C5 ::~S21162C5(){ note_dtor("S21162C5", this);}
S21162C5 ::S21162C5(){ note_ctor("S21162C5", this);} // tgen

static void Test_S21162C5()
{
  extern Class_Descriptor cd_S21162C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S21162C5, buf);
    S21162C5 *dp, &lv = *(dp=new (buf) S21162C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S21162C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C5)");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*), 0, "S21162C5");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*), ABISELECT(96,76), "S21162C5");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*), ABISELECT(128,104), "S21162C5");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(128,104), "S21162C5");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*), ABISELECT(16,12), "S21162C5");
    check_base_class_offset(lv, (S21162C6*), 0, "S21162C5");
    check_base_class_offset(lv, (S20760C13*)(S21162C10*), ABISELECT(56,44), "S21162C5");
    check_base_class_offset(lv, (S4228C37*)(S21162C10*), 0, "S21162C5");
    check_base_class_offset(lv, (S4228C27*)(S21162C10*), 0, "S21162C5");
    check_base_class_offset(lv, (S21162C10*), ABISELECT(56,44), "S21162C5");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S21162C9*), ABISELECT(144,116), "S21162C5");
    test_class_info(&lv, &cd_S21162C5);
    dp->~S21162C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C5(Test_S21162C5, "S21162C5", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S21162C5C1Ev();
extern void _ZN8S21162C5D2Ev();
Name_Map name_map_S21162C5[] = {
  NSPAIR(_ZN8S21162C5C1Ev),
  NSPAIR(_ZN8S21162C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21162C10;
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
static Base_Class bases_S21162C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //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_S21162C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21162C6,    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_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21162C10,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21162C9,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C5[];
extern void _ZN8S21162C5D1Ev();
extern void _ZN8S21162C5D0Ev();
extern void ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn144_N8S21162C5D1Ev,_ZThn116_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn144_N8S21162C5D0Ev,_ZThn116_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C5[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&_ZN8S21162C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C5D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C5[];
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C6__8S21162C5[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__8S21162C5[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C6__8S21162C5[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C6__8S21162C5[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6__8S21162C5[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C6__8S21162C5[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C10__8S21162C5[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C5[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__A1__8S21162C5[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
static  VTT_ENTRY vtt_S21162C5[] = {
  {&(_ZTV8S21162C5[7]),  7,36},
  {&(_tg__ZTV8S21162C6__8S21162C5[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C6__8S21162C5[3]),  3,5},
  {&(_tg__ZTV9S21162C10__8S21162C5[4]),  4,6},
  {&(_ZTV8S21162C5[23]),  23,36},
  {&(_ZTV8S21162C5[12]),  12,36},
  {&(_ZTV8S21162C5[28]),  28,36},
  {&(_ZTV8S21162C5[18]),  18,36},
  {&(_ZTV8S21162C5[34]),  34,36},
  {&(_tg__ZTV8S21162C9__A1__8S21162C5[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__A1__8S21162C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21162C5[];
extern  VTBL_ENTRY _ZTV8S21162C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C5[];
static VTBL_ENTRY alt_thunk_names272[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21162C5D0Ev,_ZThn116_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21162C5D1Ev,_ZThn116_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C5 = {  "S21162C5", // class name
  bases_S21162C5, 10,
  &(vtc_S21162C5[0]), // expected_vtbl_contents
  &(vtt_S21162C5[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S21162C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21162C5),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C5),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names272,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C4  : virtual S21162C5 , S4161C4_nt , S19115C12 {
  int s21162c4f0;
  virtual  ~S21162C4(); // _ZN8S21162C4D2Ev
  S21162C4(); // tgen
};
//SIG(-1 S21162C4) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S21162C4 ::~S21162C4(){ note_dtor("S21162C4", this);}
S21162C4 ::S21162C4(){ note_ctor("S21162C4", this);} // tgen

static void Test_S21162C4()
{
  extern Class_Descriptor cd_S21162C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S21162C4, buf);
    S21162C4 *dp, &lv = *(dp=new (buf) S21162C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S21162C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21162C4)");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*)(S21162C5*), ABISELECT(184,132), "S21162C4");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*)(S21162C5*), ABISELECT(280,208), "S21162C4");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(312,236), "S21162C4");
    /*is_ambiguous_... S21162C4::S21162C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(312,236), "S21162C4");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(200,144), "S21162C4");
    check_base_class_offset(lv, (S21162C6*)(S21162C5*), ABISELECT(184,132), "S21162C4");
    check_base_class_offset(lv, (S20760C13*)(S21162C10*)(S21162C5*), ABISELECT(240,176), "S21162C4");
    check_base_class_offset(lv, (S4228C37*)(S21162C10*)(S21162C5*), 0, "S21162C4");
    check_base_class_offset(lv, (S4228C27*)(S21162C10*)(S21162C5*), 0, "S21162C4");
    check_base_class_offset(lv, (S21162C10*)(S21162C5*), ABISELECT(240,176), "S21162C4");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S21162C9*)(S21162C5*), 0, "S21162C4");
    check_base_class_offset(lv, (S21162C5*), ABISELECT(184,132), "S21162C4");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S21162C4");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S21162C4");
    check_field_offset(lv, s21162c4f0, ABISELECT(176,128), "S21162C4.s21162c4f0");
    test_class_info(&lv, &cd_S21162C4);
    dp->~S21162C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C4(Test_S21162C4, "S21162C4", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S21162C4C1Ev();
extern void _ZN8S21162C4D2Ev();
Name_Map name_map_S21162C4[] = {
  NSPAIR(_ZN8S21162C4C1Ev),
  NSPAIR(_ZN8S21162C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21162C10;
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C5;
extern VTBL_ENTRY _ZTI8S21162C5[];
extern  VTBL_ENTRY _ZTV8S21162C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S21162C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(200,144), //bcp->offset
    21, //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(184,132), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21162C10,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21162C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21162C5,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C4[];
extern void ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev)();
extern void _ZN8S21162C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev)();
extern void _ZN8S21162C4D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn184_N8S21162C4D1Ev,_ZThn132_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn184_N8S21162C4D0Ev,_ZThn132_N8S21162C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn280_N8S21162C4D1Ev,_ZThn208_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn280_N8S21162C4D0Ev,_ZThn208_N8S21162C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn312_N8S21162C4D1Ev,_ZThn236_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn312_N8S21162C4D0Ev,_ZThn236_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C4[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C4[];
extern void _ZN8S21162C5D1Ev();
extern void _ZN8S21162C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C5__8S21162C4[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&_ZN8S21162C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C5D0Ev,
};
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C108S21162C5__8S21162C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C5__8S21162C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C5__8S21162C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21162C10__8S21162C5__8S21162C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C5__8S21162C4[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev),
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C4[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn312_N8S21162C9D1Ev,_ZThn236_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn312_N8S21162C9D0Ev,_ZThn236_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__A1__8S21162C4[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
static  VTT_ENTRY vtt_S21162C4[] = {
  {&(_ZTV8S21162C4[9]),  9,42},
  {&(_ZTV8S21162C4[19]),  19,42},
  {&(_ZTV8S21162C4[35]),  35,42},
  {&(_ZTV8S21162C4[24]),  24,42},
  {&(_ZTV8S21162C4[40]),  40,42},
  {&(_ZTV8S21162C4[30]),  30,42},
  {&(_ZTV8S21162C4[9]),  9,42},
  {&(_tg__ZTV8S21162C5__8S21162C4[7]),  7,9},
  {&(_tg__ZTV8S21162C68S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV9S21162C108S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C5__8S21162C4[3]),  3,5},
  {&(_tg__ZTV9S21162C10__8S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C5__8S21162C4[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__A1__8S21162C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21162C4[];
extern  VTBL_ENTRY _ZTV8S21162C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C4[];
static VTBL_ENTRY alt_thunk_names273[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C9D0Ev,_ZThn236_N8S21162C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C9D1Ev,_ZThn236_N8S21162C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C4D0Ev,_ZThn236_N8S21162C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21162C4D0Ev,_ZThn208_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21162C4D1Ev,_ZThn236_N8S21162C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21162C4D1Ev,_ZThn208_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21162C4D0Ev,_ZThn132_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21162C4D1Ev,_ZThn132_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C4 = {  "S21162C4", // class name
  bases_S21162C4, 13,
  &(vtc_S21162C4[0]), // expected_vtbl_contents
  &(vtt_S21162C4[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S21162C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21162C4),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C4),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names273,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C16  : virtual S20760C13 , virtual S21162C6 {
  long double s21162c16f0;
  ~S21162C16(); // tgen
  S21162C16(); // tgen
};
//SIG(-1 S21162C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21162C16 ::~S21162C16(){ note_dtor("S21162C16", this);} // tgen
S21162C16 ::S21162C16(){ note_ctor("S21162C16", this);} // tgen

static void Test_S21162C16()
{
  extern Class_Descriptor cd_S21162C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21162C16, buf);
    S21162C16 *dp, &lv = *(dp=new (buf) S21162C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21162C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21162C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21162C16");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*), ABISELECT(32,16), "S21162C16");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*), ABISELECT(64,44), "S21162C16");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*), ABISELECT(120,88), "S21162C16");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*), ABISELECT(80,56), "S21162C16");
    check_base_class_offset(lv, (S21162C6*), ABISELECT(64,44), "S21162C16");
    check_field_offset(lv, s21162c16f0, ABISELECT(16,4), "S21162C16.s21162c16f0");
    test_class_info(&lv, &cd_S21162C16);
    dp->~S21162C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C16(Test_S21162C16, "S21162C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21162C16C1Ev();
extern void _ZN9S21162C16D1Ev();
Name_Map name_map_S21162C16[] = {
  NSPAIR(_ZN9S21162C16C1Ev),
  NSPAIR(_ZN9S21162C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
static Base_Class bases_S21162C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21162C16[];
extern void _ZN9S21162C16D1Ev();
extern void _ZN9S21162C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S21162C16D1Ev,_ZThn44_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S21162C16D0Ev,_ZThn44_N9S21162C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21162C16D1Ev,_ZThn88_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21162C16D0Ev,_ZThn88_N9S21162C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21162C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&_ZN9S21162C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21162C16[];
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C6__9S21162C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__9S21162C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21162C9D1Ev,_ZThn32_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21162C9D0Ev,_ZThn32_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C6__9S21162C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C6__9S21162C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6__9S21162C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C6__9S21162C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
static  VTT_ENTRY vtt_S21162C16[] = {
  {&(_ZTV9S21162C16[5]),  5,29},
  {&(_ZTV9S21162C16[10]),  10,29},
  {&(_ZTV9S21162C16[17]),  17,29},
  {&(_ZTV9S21162C16[22]),  22,29},
  {&(_ZTV9S21162C16[27]),  27,29},
  {&(_tg__ZTV8S21162C6__9S21162C16[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C6__9S21162C16[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C6__9S21162C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21162C16[];
extern  VTBL_ENTRY _ZTV9S21162C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C16[];
static VTBL_ENTRY alt_thunk_names274[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D0Ev,_ZThn44_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21162C6D1Ev,_ZThn44_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21162C9D0Ev,_ZThn32_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21162C9D1Ev,_ZThn32_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21162C16D0Ev,_ZThn44_N9S21162C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21162C16D1Ev,_ZThn44_N9S21162C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21162C16D0Ev,_ZThn88_N9S21162C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21162C16D1Ev,_ZThn88_N9S21162C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C16 = {  "S21162C16", // class name
  bases_S21162C16, 5,
  &(vtc_S21162C16[0]), // expected_vtbl_contents
  &(vtt_S21162C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21162C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21162C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21162C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names274,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21162C1  : virtual S21162C2 , S21162C4 , S4228C23 , virtual S21162C16 {
  long s21162c1f0;
  ~S21162C1(); // tgen
  S21162C1(); // tgen
};
//SIG(1 S21162C1) C1{ VBC2{ VBC3{ vd m Fl} vd Fc[2]} BC4{ VBC5{ BC6{ BC7{ vd m FL} VBC8{ vd m Fi[6]} BC9{ VBC7 vd} FC8} BC10{ BC8 VBC11{ m} VBC12{ m} Fs} VBC9 vd} BC13{ m Fp} BC14{ m FC7[10]} vd Fi} BC15{ m} VBC16{ VBC8 VBC6 FD} Fl}


S21162C1 ::~S21162C1(){ note_dtor("S21162C1", this);} // tgen
S21162C1 ::S21162C1(){ note_ctor("S21162C1", this);} // tgen

static void Test_S21162C1()
{
  extern Class_Descriptor cd_S21162C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,83)];
    init_test(&cd_S21162C1, buf);
    S21162C1 *dp, &lv = *(dp=new (buf) S21162C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,328), "sizeof(S21162C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21162C1)");
    check_base_class_offset(lv, (S20759C5_nt*)(S21162C2*), ABISELECT(208,144), "S21162C1");
    check_base_class_offset(lv, (S21162C2*), ABISELECT(192,136), "S21162C1");
    /*is_ambiguous_... S21162C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*)(S21162C5*), ABISELECT(224,152), "S21162C1");
    check_base_class_offset(lv, (S20760C13*)(S21162C6*)(S21162C5*), ABISELECT(320,228), "S21162C1");
    check_base_class_offset(lv, (S20760C13*)(S21162C16*), ABISELECT(320,228), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21162C6*), ABISELECT(320,228), "S21162C1");
    check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(352,256), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*), ABISELECT(352,256), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C9*)(S21162C6*), ABISELECT(352,256), "S21162C1");
    check_base_class_offset(lv, (S21162C9*)(S21162C6*)(S21162C5*), ABISELECT(240,164), "S21162C1");
    check_base_class_offset(lv, (S21162C6*)(S21162C5*), ABISELECT(224,152), "S21162C1");
    check_base_class_offset(lv, (S20760C13*)(S21162C10*)(S21162C5*), ABISELECT(280,196), "S21162C1");
    check_base_class_offset(lv, (S4228C37*)(S21162C10*)(S21162C5*), 0, "S21162C1");
    check_base_class_offset(lv, (S4228C27*)(S21162C10*)(S21162C5*), 0, "S21162C1");
    check_base_class_offset(lv, (S21162C10*)(S21162C5*), ABISELECT(280,196), "S21162C1");
    /*is_ambiguous_... S21162C5::S21162C9 */ AMB_check_base_class_offset(lv, (S21162C9*)(S21162C5*), 0, "S21162C1");
    check_base_class_offset(lv, (S21162C5*)(S21162C4*), ABISELECT(224,152), "S21162C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21162C4*), ABISELECT(8,4), "S21162C1");
    check_base_class_offset(lv, (S19115C12*)(S21162C4*), ABISELECT(16,8), "S21162C1");
    check_base_class_offset(lv, (S21162C4*), 0, "S21162C1");
    check_base_class_offset(lv, (S4228C23*), 0, "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S20760C9*)(S21162C6*), ABISELECT(400,284), "S21162C1");
    /*is_ambiguous_... S21162C1::S21162C6 */ AMB_check_base_class_offset(lv, (S21162C9*)(S21162C6*), ABISELECT(416,296), "S21162C1");
    check_base_class_offset(lv, (S21162C6*)(S21162C16*), ABISELECT(400,284), "S21162C1");
    check_base_class_offset(lv, (S21162C16*), ABISELECT(368,268), "S21162C1");
    check_field_offset(lv, s21162c1f0, ABISELECT(184,132), "S21162C1.s21162c1f0");
    test_class_info(&lv, &cd_S21162C1);
    dp->~S21162C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21162C1(Test_S21162C1, "S21162C1", ABISELECT(464,328));

#else // __cplusplus

extern void _ZN8S21162C1C1Ev();
extern void _ZN8S21162C1D1Ev();
Name_Map name_map_S21162C1[] = {
  NSPAIR(_ZN8S21162C1C1Ev),
  NSPAIR(_ZN8S21162C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S21162C2;
extern VTBL_ENTRY _ZTI8S21162C2[];
extern  VTBL_ENTRY _ZTV8S21162C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C2[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21162C10;
extern VTBL_ENTRY _ZTI9S21162C10[];
extern  VTBL_ENTRY _ZTV9S21162C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C10[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C5;
extern VTBL_ENTRY _ZTI8S21162C5[];
extern  VTBL_ENTRY _ZTV8S21162C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S21162C4;
extern VTBL_ENTRY _ZTI8S21162C4[];
extern  VTBL_ENTRY _ZTV8S21162C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C4[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21162C9;
extern VTBL_ENTRY _ZTI8S21162C9[];
extern  VTBL_ENTRY _ZTV8S21162C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C9[];
extern Class_Descriptor cd_S21162C6;
extern VTBL_ENTRY _ZTI8S21162C6[];
extern  VTBL_ENTRY _ZTV8S21162C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C6[];
extern Class_Descriptor cd_S21162C16;
extern VTBL_ENTRY _ZTI9S21162C16[];
extern  VTBL_ENTRY _ZTV9S21162C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21162C16[];
static Base_Class bases_S21162C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(208,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21162C2,    ABISELECT(192,136), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(320,228), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(352,256), //bcp->offset
    52, //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
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21162C9,    ABISELECT(240,164), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21162C10,    ABISELECT(280,196), //bcp->offset
    41, //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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21162C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21162C5,    ABISELECT(224,152), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S19115C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S21162C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(400,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
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21162C9,    ABISELECT(416,296), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21162C6,    ABISELECT(400,284), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21162C16,    ABISELECT(368,268), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21162C1[];
extern void ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev)();
extern void _ZN8S21162C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev)();
extern void _ZN8S21162C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S21162C1D1Ev,_ZThn136_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S21162C1D0Ev,_ZThn136_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21162C1D1Ev,_ZThn144_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21162C1D0Ev,_ZThn144_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C1D1Ev,_ZTv0_n32_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21162C1D1Ev,_ZThn152_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C1D0Ev,_ZTv0_n32_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21162C1D0Ev,_ZThn152_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21162C1D1Ev,_ZTvn12_n32_N8S21162C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21162C1D0Ev,_ZTvn12_n32_N8S21162C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C1D1Ev,_ZTvn44_n32_N8S21162C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C1D0Ev,_ZTvn44_n32_N8S21162C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21162C1D1Ev,_ZThn228_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21162C1D0Ev,_ZThn228_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S21162C1D1Ev,_ZThn256_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S21162C1D0Ev,_ZThn256_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21162C1D1Ev,_ZTv0_n24_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S21162C1D1Ev,_ZThn268_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21162C1D0Ev,_ZTv0_n24_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S21162C1D0Ev,_ZThn268_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21162C1D1Ev,_ZTv0_n20_N8S21162C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S21162C1D1Ev,_ZThn284_N8S21162C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21162C1D0Ev,_ZTv0_n20_N8S21162C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S21162C1D0Ev,_ZThn284_N8S21162C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21162C1D1Ev,_ZTvn12_n20_N8S21162C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21162C1D0Ev,_ZTvn12_n20_N8S21162C1D0Ev)();
static  VTBL_ENTRY vtc_S21162C1[] = {
  ABISELECT(400,284),
  ABISELECT(368,268),
  ABISELECT(208,144),
  ABISELECT(192,136),
  0,
  0,
  0,
  ABISELECT(320,228),
  ABISELECT(224,152),
  0,
  ABISELECT(352,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(16,8),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C1D1Ev,_ZTv0_n32_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C1D0Ev,_ZTv0_n32_N8S21162C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C1D1Ev,_ZTvn12_n32_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C1D0Ev,_ZTvn12_n32_N8S21162C1D0Ev),
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C1D1Ev,_ZTvn44_n32_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C1D0Ev,_ZTvn44_n32_N8S21162C1D0Ev),
  ABISELECT(-320,-228),
  ABISELECT(-320,-228),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev),
  ABISELECT(-352,-256),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev),
  ABISELECT(-368,-268),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21162C1D1Ev,_ZTv0_n24_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21162C1D0Ev,_ZTv0_n24_N8S21162C1D0Ev),
  ABISELECT(-400,-284),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-400,-284),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21162C1D1Ev,_ZTv0_n20_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21162C1D0Ev,_ZTv0_n20_N8S21162C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-416,-296),
  (VTBL_ENTRY)&(_ZTI8S21162C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21162C1D1Ev,_ZTvn12_n20_N8S21162C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21162C1D0Ev,_ZTvn12_n20_N8S21162C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21162C1[];
extern void ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev)();
extern void _ZN8S21162C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev)();
extern void _ZN8S21162C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21162C4__8S21162C1[] = {
  0,
  0,
  0,
  ABISELECT(320,228),
  ABISELECT(224,152),
  0,
  ABISELECT(352,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21162C4D1Ev,_ZThn152_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21162C4D0Ev,_ZThn152_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21162C5__8S21162C4__8S21162C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S21162C4D1Ev,_ZThn228_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S21162C4D0Ev,_ZThn228_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C4__8S21162C1[] = {
  ABISELECT(-320,-228),
  ABISELECT(-320,-228),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4__8S21162C1[] = {
  ABISELECT(112,92),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D1Ev,_ZTvn12_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21162C4D0Ev,_ZTvn12_n32_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev)();
extern void ABISELECT(_ZThn352_N8S21162C4D1Ev,_ZThn256_N8S21162C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev)();
extern void ABISELECT(_ZThn352_N8S21162C4D0Ev,_ZThn256_N8S21162C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C4__8S21162C1[] = {
  ABISELECT(-352,-256),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21162C108S21162C5__8S21162C4__8S21162C1[] = {
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  (VTBL_ENTRY)&(_ZTI8S21162C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D1Ev,_ZTvn44_n32_N8S21162C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21162C4D0Ev,_ZTvn44_n32_N8S21162C4D0Ev),
};
extern void _ZN8S21162C2D1Ev();
extern void _ZN8S21162C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C2__8S21162C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&_ZN8S21162C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S21162C2__8S21162C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21162C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev),
};
extern void _ZN8S21162C5D1Ev();
extern void _ZN8S21162C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C5__8S21162C1[] = {
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(-224,-152),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&_ZN8S21162C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C5D0Ev,
};
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void _ZN9S21162C10D1Ev();
extern void _ZN9S21162C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C108S21162C5__8S21162C1[] = {
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C10[0]),
  (VTBL_ENTRY)&_ZN9S21162C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C5__8S21162C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D1Ev,_ZThn12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C5D0Ev,_ZThn12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C5__8S21162C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21162C10__8S21162C5__8S21162C1[] = {
  ABISELECT(-280,-196),
  ABISELECT(-280,-196),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D1Ev,_ZThn44_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21162C5D0Ev,_ZThn44_N8S21162C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C5__8S21162C1[] = {
  ABISELECT(224,152),
  ABISELECT(352,256),
  ABISELECT(224,152),
  (VTBL_ENTRY)&(_ZTI8S21162C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D1Ev,_ZTv0_n16_N8S21162C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21162C5D0Ev,_ZTv0_n16_N8S21162C5D0Ev),
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C9__A1__8S21162C1[] = {
  ABISELECT(352,256),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S21162C9D1Ev,_ZThn256_N8S21162C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S21162C9D0Ev,_ZThn256_N8S21162C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C9__A1__8S21162C1[] = {
  ABISELECT(-352,-256),
  ABISELECT(-352,-256),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void _ZN9S21162C16D1Ev();
extern void _ZN9S21162C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21162C16__8S21162C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&_ZN9S21162C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21162C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21162C16__8S21162C1[] = {
  ABISELECT(48,40),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21162C6__9S21162C16__8S21162C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__9S21162C16__8S21162C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D1Ev,_ZTvn12_n20_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21162C16D0Ev,_ZTvn12_n20_N9S21162C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S21162C16__8S21162C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21162C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D1Ev,_ZTv0_n12_N9S21162C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21162C16D0Ev,_ZTv0_n12_N9S21162C16D0Ev),
};
extern void _ZN8S21162C6D1Ev();
extern void _ZN8S21162C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C6__A1__8S21162C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&_ZN8S21162C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C6D0Ev,
};
extern void _ZN8S21162C9D1Ev();
extern void _ZN8S21162C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21162C98S21162C6__A2__8S21162C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&_ZN8S21162C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21162C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21162C98S21162C6__A2__8S21162C1[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S21162C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21162C6__A1__8S21162C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21162C9__8S21162C6__A1__8S21162C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D1Ev,_ZThn12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21162C6D0Ev,_ZThn12_N8S21162C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S21162C6__A1__8S21162C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21162C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev),
};
static  VTT_ENTRY vtt_S21162C1[] = {
  {&(_ZTV8S21162C1[13]),  13,77},
  {&(_tg__ZTV8S21162C4__8S21162C1[9]),  9,11},
  {&(_tg__ZTV8S21162C5__8S21162C4__8S21162C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S21162C4__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C98S21162C68S21162C5__8S21162C4__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C4__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C108S21162C5__8S21162C4__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C4__8S21162C1[9]),  9,11},
  {&(_ZTV8S21162C1[19]),  19,77},
  {&(_ZTV8S21162C1[24]),  24,77},
  {&(_ZTV8S21162C1[34]),  34,77},
  {&(_ZTV8S21162C1[50]),  50,77},
  {&(_ZTV8S21162C1[39]),  39,77},
  {&(_ZTV8S21162C1[55]),  55,77},
  {&(_ZTV8S21162C1[45]),  45,77},
  {&(_ZTV8S21162C1[13]),  13,77},
  {&(_ZTV8S21162C1[63]),  63,77},
  {&(_ZTV8S21162C1[70]),  70,77},
  {&(_ZTV8S21162C1[75]),  75,77},
  {&(_tg__ZTV8S21162C2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S21162C2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C5__8S21162C1[7]),  7,9},
  {&(_tg__ZTV8S21162C68S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C68S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C108S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C98S21162C6__8S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C5__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C10__8S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C5__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C9__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C9__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S21162C16__8S21162C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21162C16__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C6__9S21162C16__8S21162C1[5]),  5,7},
  {&(_tg__ZTV8S21162C98S21162C6__9S21162C16__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S21162C16__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C6__A1__8S21162C1[4]),  4,6},
  {&(_tg__ZTV8S21162C98S21162C6__A2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21162C98S21162C6__A2__8S21162C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21162C6__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S21162C9__8S21162C6__A1__8S21162C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S21162C6__A1__8S21162C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21162C1[];
extern  VTBL_ENTRY _ZTV8S21162C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21162C1[];
static VTBL_ENTRY alt_thunk_names275[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D0Ev,_ZTv0_n20_N9S21162C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D0Ev,_ZThn16_N9S21162C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21162C16D1Ev,_ZTv0_n20_N9S21162C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21162C16D1Ev,_ZThn16_N9S21162C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D0Ev,_ZTv0_n12_N8S21162C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D0Ev,_ZThn104_N8S21162C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D0Ev,_ZThn76_N8S21162C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C5D1Ev,_ZTv0_n12_N8S21162C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C5D1Ev,_ZThn104_N8S21162C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C5D1Ev,_ZThn76_N8S21162C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D0Ev,_ZTv0_n12_N8S21162C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D0Ev,_ZThn104_N8S21162C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D0Ev,_ZThn76_N8S21162C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C6D1Ev,_ZTv0_n12_N8S21162C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21162C6D1Ev,_ZThn104_N8S21162C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21162C6D1Ev,_ZThn76_N8S21162C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D0Ev,_ZTv0_n12_N8S21162C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C9D0Ev,_ZThn256_N8S21162C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D0Ev,_ZThn92_N8S21162C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C9D1Ev,_ZTv0_n12_N8S21162C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C9D1Ev,_ZThn256_N8S21162C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21162C9D1Ev,_ZThn92_N8S21162C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D0Ev,_ZTv0_n12_N8S21162C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D0Ev,_ZThn8_N8S21162C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C2D1Ev,_ZTv0_n12_N8S21162C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21162C2D1Ev,_ZThn8_N8S21162C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D0Ev,_ZTv0_n12_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C4D0Ev,_ZThn256_N8S21162C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C4D0Ev,_ZThn228_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C4D1Ev,_ZTv0_n12_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C4D1Ev,_ZThn256_N8S21162C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C4D1Ev,_ZThn228_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D0Ev,_ZTv0_n32_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C4D0Ev,_ZThn152_N8S21162C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C4D1Ev,_ZTv0_n32_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C4D1Ev,_ZThn152_N8S21162C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D0Ev,_ZTv0_n16_N8S21162C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C4D1Ev,_ZTv0_n16_N8S21162C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21162C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21162C1D0Ev,_ZTv0_n20_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21162C1D0Ev,_ZThn284_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21162C1D1Ev,_ZTv0_n20_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21162C1D1Ev,_ZThn284_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21162C1D0Ev,_ZTv0_n24_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21162C1D0Ev,_ZThn268_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21162C1D1Ev,_ZTv0_n24_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21162C1D1Ev,_ZThn268_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C1D0Ev,_ZTv0_n32_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C1D0Ev,_ZThn152_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21162C1D1Ev,_ZTv0_n32_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21162C1D1Ev,_ZThn152_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C1D0Ev,_ZTv0_n12_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C1D0Ev,_ZThn256_N8S21162C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C1D0Ev,_ZThn228_N8S21162C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21162C1D0Ev,_ZThn144_N8S21162C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21162C1D1Ev,_ZTv0_n12_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21162C1D1Ev,_ZThn256_N8S21162C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21162C1D1Ev,_ZThn228_N8S21162C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21162C1D1Ev,_ZThn144_N8S21162C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C1D0Ev,_ZTv0_n16_N8S21162C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21162C1D0Ev,_ZThn136_N8S21162C1D0Ev),
  (VTBL_ENTRY)_ZN8S21162C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21162C1D1Ev,_ZTv0_n16_N8S21162C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21162C1D1Ev,_ZThn136_N8S21162C1D1Ev),
  (VTBL_ENTRY)_ZN8S21162C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21162C1 = {  "S21162C1", // class name
  bases_S21162C1, 21,
  &(vtc_S21162C1[0]), // expected_vtbl_contents
  &(vtt_S21162C1[0]), // expected_vtt_contents
  ABISELECT(464,328), // object size
  NSPAIRA(_ZTI8S21162C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21162C1),77, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21162C1),47, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names275,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C2  : virtual S20760C9 {
  char s21163c2f0[2];
  virtual  ~S21163C2(); // _ZN8S21163C2D2Ev
  S21163C2(); // tgen
};
//SIG(-1 S21163C2) C1{ VBC2{ vd m FL} vd Fc[2]}


 S21163C2 ::~S21163C2(){ note_dtor("S21163C2", this);}
S21163C2 ::S21163C2(){ note_ctor("S21163C2", this);} // tgen

static void Test_S21163C2()
{
  extern Class_Descriptor cd_S21163C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21163C2, buf);
    S21163C2 *dp, &lv = *(dp=new (buf) S21163C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21163C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C2)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S21163C2");
    check_field_offset(lv, s21163c2f0, ABISELECT(8,4), "S21163C2.s21163c2f0");
    test_class_info(&lv, &cd_S21163C2);
    dp->~S21163C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C2(Test_S21163C2, "S21163C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21163C2C1Ev();
extern void _ZN8S21163C2D2Ev();
Name_Map name_map_S21163C2[] = {
  NSPAIR(_ZN8S21163C2C1Ev),
  NSPAIR(_ZN8S21163C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S21163C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI8S21163C2[];
extern void _ZN8S21163C2D1Ev();
extern void _ZN8S21163C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&_ZN8S21163C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C2[];
static  VTT_ENTRY vtt_S21163C2[] = {
  {&(_ZTV8S21163C2[3]),  3,10},
  {&(_ZTV8S21163C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21163C2[];
extern  VTBL_ENTRY _ZTV8S21163C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C2[];
static VTBL_ENTRY alt_thunk_names276[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C2 = {  "S21163C2", // class name
  bases_S21163C2, 1,
  &(vtc_S21163C2[0]), // expected_vtbl_contents
  &(vtt_S21163C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21163C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21163C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names276,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C9  : virtual S20760C5_nt {
  virtual  ~S21163C9(); // _ZN8S21163C9D2Ev
  S21163C9(); // tgen
};
//SIG(-1 S21163C9) C1{ VBC2{ vd m FL} vd}


 S21163C9 ::~S21163C9(){ note_dtor("S21163C9", this);}
S21163C9 ::S21163C9(){ note_ctor("S21163C9", this);} // tgen

static void Test_S21163C9()
{
  extern Class_Descriptor cd_S21163C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S21163C9, buf);
    S21163C9 *dp, &lv = *(dp=new (buf) S21163C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S21163C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C9)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(8,4), "S21163C9");
    test_class_info(&lv, &cd_S21163C9);
    dp->~S21163C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C9(Test_S21163C9, "S21163C9", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S21163C9C1Ev();
extern void _ZN8S21163C9D2Ev();
Name_Map name_map_S21163C9[] = {
  NSPAIR(_ZN8S21163C9C1Ev),
  NSPAIR(_ZN8S21163C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S21163C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C9[];
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn8_N8S21163C9D1Ev,_ZThn4_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn8_N8S21163C9D0Ev,_ZThn4_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C9[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C9[];
static  VTT_ENTRY vtt_S21163C9[] = {
  {&(_ZTV8S21163C9[3]),  3,10},
  {&(_ZTV8S21163C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
static VTBL_ENTRY alt_thunk_names277[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21163C9D0Ev,_ZThn4_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21163C9D1Ev,_ZThn4_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C9 = {  "S21163C9", // class name
  bases_S21163C9, 1,
  &(vtc_S21163C9[0]), // expected_vtbl_contents
  &(vtt_S21163C9[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S21163C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21163C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names277,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C6  : S20760C5_nt , virtual S20760C13 , S21163C9 {
  ::S20760C13 s21163c6f0;
  ~S21163C6(); // tgen
  S21163C6(); // tgen
};
//SIG(-1 S21163C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S21163C6 ::~S21163C6(){ note_dtor("S21163C6", this);} // tgen
S21163C6 ::S21163C6(){ note_ctor("S21163C6", this);} // tgen

static void Test_S21163C6()
{
  extern Class_Descriptor cd_S21163C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S21163C6, buf);
    S21163C6 *dp, &lv = *(dp=new (buf) S21163C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S21163C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C6)");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*), 0, "S21163C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S21163C6");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(88,72), "S21163C6");
    check_base_class_offset(lv, (S21163C9*), ABISELECT(16,12), "S21163C6");
    check_field_offset(lv, s21163c6f0, ABISELECT(24,16), "S21163C6.s21163c6f0");
    test_class_info(&lv, &cd_S21163C6);
    dp->~S21163C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C6(Test_S21163C6, "S21163C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S21163C6C1Ev();
extern void _ZN8S21163C6D1Ev();
Name_Map name_map_S21163C6[] = {
  NSPAIR(_ZN8S21163C6C1Ev),
  NSPAIR(_ZN8S21163C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
static Base_Class bases_S21163C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C6[];
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S21163C6D1Ev,_ZThn72_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S21163C6D0Ev,_ZThn72_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C6[];
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn72_N8S21163C9D1Ev,_ZThn60_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn72_N8S21163C9D0Ev,_ZThn60_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__8S21163C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
static  VTT_ENTRY vtt_S21163C6[] = {
  {&(_ZTV8S21163C6[4]),  4,21},
  {&(_tg__ZTV8S21163C9__8S21163C6[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__8S21163C6[3]),  3,5},
  {&(_ZTV8S21163C6[14]),  14,21},
  {&(_ZTV8S21163C6[9]),  9,21},
  {&(_ZTV8S21163C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
static VTBL_ENTRY alt_thunk_names278[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21163C9D0Ev,_ZThn60_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S21163C9D1Ev,_ZThn60_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21163C6D0Ev,_ZThn72_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S21163C6D1Ev,_ZThn72_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C6 = {  "S21163C6", // class name
  bases_S21163C6, 4,
  &(vtc_S21163C6[0]), // expected_vtbl_contents
  &(vtt_S21163C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S21163C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21163C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names278,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C10  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s21163c10f0;
  ~S21163C10(); // tgen
  S21163C10(); // tgen
};
//SIG(-1 S21163C10) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S21163C10 ::~S21163C10(){ note_dtor("S21163C10", this);} // tgen
S21163C10 ::S21163C10(){ note_ctor("S21163C10", this);} // tgen

static void Test_S21163C10()
{
  extern Class_Descriptor cd_S21163C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S21163C10, buf);
    S21163C10 *dp, &lv = *(dp=new (buf) S21163C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S21163C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C10)");
    check_base_class_offset(lv, (S20760C13*), 0, "S21163C10");
    check_base_class_offset(lv, (S4228C37*), 0, "S21163C10");
    check_base_class_offset(lv, (S4228C27*), 0, "S21163C10");
    check_field_offset(lv, s21163c10f0, ABISELECT(32,28), "S21163C10.s21163c10f0");
    test_class_info(&lv, &cd_S21163C10);
    dp->~S21163C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C10(Test_S21163C10, "S21163C10", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S21163C10C1Ev();
extern void _ZN9S21163C10D1Ev();
Name_Map name_map_S21163C10[] = {
  NSPAIR(_ZN9S21163C10C1Ev),
  NSPAIR(_ZN9S21163C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S21163C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21163C10[];
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY vtc_S21163C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S21163C10[];
static  VTT_ENTRY vtt_S21163C10[] = {
  {&(_ZTV9S21163C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
Class_Descriptor cd_S21163C10 = {  "S21163C10", // class name
  bases_S21163C10, 3,
  &(vtc_S21163C10[0]), // expected_vtbl_contents
  &(vtt_S21163C10[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S21163C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21163C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21163C10),1, //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  S21163C5  : S21163C6 , S21163C10 , virtual S21163C9 {
  virtual  ~S21163C5(); // _ZN8S21163C5D2Ev
  S21163C5(); // tgen
};
//SIG(-1 S21163C5) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S21163C5 ::~S21163C5(){ note_dtor("S21163C5", this);}
S21163C5 ::S21163C5(){ note_ctor("S21163C5", this);} // tgen

static void Test_S21163C5()
{
  extern Class_Descriptor cd_S21163C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S21163C5, buf);
    S21163C5 *dp, &lv = *(dp=new (buf) S21163C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S21163C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C5)");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*), 0, "S21163C5");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*), ABISELECT(96,76), "S21163C5");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*), ABISELECT(128,104), "S21163C5");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(128,104), "S21163C5");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*), ABISELECT(16,12), "S21163C5");
    check_base_class_offset(lv, (S21163C6*), 0, "S21163C5");
    check_base_class_offset(lv, (S20760C13*)(S21163C10*), ABISELECT(56,44), "S21163C5");
    check_base_class_offset(lv, (S4228C37*)(S21163C10*), 0, "S21163C5");
    check_base_class_offset(lv, (S4228C27*)(S21163C10*), 0, "S21163C5");
    check_base_class_offset(lv, (S21163C10*), ABISELECT(56,44), "S21163C5");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S21163C9*), ABISELECT(144,116), "S21163C5");
    test_class_info(&lv, &cd_S21163C5);
    dp->~S21163C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C5(Test_S21163C5, "S21163C5", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S21163C5C1Ev();
extern void _ZN8S21163C5D2Ev();
Name_Map name_map_S21163C5[] = {
  NSPAIR(_ZN8S21163C5C1Ev),
  NSPAIR(_ZN8S21163C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21163C10;
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
static Base_Class bases_S21163C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(128,104), //bcp->offset
    25, //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_S21163C9,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21163C6,    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_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21163C10,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21163C9,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C5[];
extern void _ZN8S21163C5D1Ev();
extern void _ZN8S21163C5D0Ev();
extern void ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn144_N8S21163C5D1Ev,_ZThn116_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn144_N8S21163C5D0Ev,_ZThn116_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C5[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&_ZN8S21163C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C5D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C5[];
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C6__8S21163C5[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__8S21163C5[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C6__8S21163C5[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C6__8S21163C5[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6__8S21163C5[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C6__8S21163C5[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C10__8S21163C5[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C5[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C5[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
static  VTT_ENTRY vtt_S21163C5[] = {
  {&(_ZTV8S21163C5[7]),  7,36},
  {&(_tg__ZTV8S21163C6__8S21163C5[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C6__8S21163C5[3]),  3,5},
  {&(_tg__ZTV9S21163C10__8S21163C5[4]),  4,6},
  {&(_ZTV8S21163C5[23]),  23,36},
  {&(_ZTV8S21163C5[12]),  12,36},
  {&(_ZTV8S21163C5[28]),  28,36},
  {&(_ZTV8S21163C5[18]),  18,36},
  {&(_ZTV8S21163C5[34]),  34,36},
  {&(_tg__ZTV8S21163C9__A1__8S21163C5[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21163C5[];
extern  VTBL_ENTRY _ZTV8S21163C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C5[];
static VTBL_ENTRY alt_thunk_names279[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21163C5D0Ev,_ZThn116_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21163C5D1Ev,_ZThn116_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C5 = {  "S21163C5", // class name
  bases_S21163C5, 10,
  &(vtc_S21163C5[0]), // expected_vtbl_contents
  &(vtt_S21163C5[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S21163C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21163C5),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C5),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names279,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C4  : virtual S21163C5 , S4161C4_nt , S19115C12 {
  int s21163c4f0;
  virtual  ~S21163C4(); // _ZN8S21163C4D2Ev
  S21163C4(); // tgen
};
//SIG(-1 S21163C4) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC12{ vd m FL}[10]} vd Fi}


 S21163C4 ::~S21163C4(){ note_dtor("S21163C4", this);}
S21163C4 ::S21163C4(){ note_ctor("S21163C4", this);} // tgen

static void Test_S21163C4()
{
  extern Class_Descriptor cd_S21163C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S21163C4, buf);
    S21163C4 *dp, &lv = *(dp=new (buf) S21163C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S21163C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21163C4)");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*)(S21163C5*), ABISELECT(184,132), "S21163C4");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*)(S21163C5*), ABISELECT(280,208), "S21163C4");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(312,236), "S21163C4");
    /*is_ambiguous_... S21163C4::S21163C9 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(312,236), "S21163C4");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(200,144), "S21163C4");
    check_base_class_offset(lv, (S21163C6*)(S21163C5*), ABISELECT(184,132), "S21163C4");
    check_base_class_offset(lv, (S20760C13*)(S21163C10*)(S21163C5*), ABISELECT(240,176), "S21163C4");
    check_base_class_offset(lv, (S4228C37*)(S21163C10*)(S21163C5*), 0, "S21163C4");
    check_base_class_offset(lv, (S4228C27*)(S21163C10*)(S21163C5*), 0, "S21163C4");
    check_base_class_offset(lv, (S21163C10*)(S21163C5*), ABISELECT(240,176), "S21163C4");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S21163C9*)(S21163C5*), 0, "S21163C4");
    check_base_class_offset(lv, (S21163C5*), ABISELECT(184,132), "S21163C4");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S21163C4");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S21163C4");
    check_field_offset(lv, s21163c4f0, ABISELECT(176,128), "S21163C4.s21163c4f0");
    test_class_info(&lv, &cd_S21163C4);
    dp->~S21163C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C4(Test_S21163C4, "S21163C4", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S21163C4C1Ev();
extern void _ZN8S21163C4D2Ev();
Name_Map name_map_S21163C4[] = {
  NSPAIR(_ZN8S21163C4C1Ev),
  NSPAIR(_ZN8S21163C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21163C10;
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C5;
extern VTBL_ENTRY _ZTI8S21163C5[];
extern  VTBL_ENTRY _ZTV8S21163C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S21163C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(200,144), //bcp->offset
    21, //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(184,132), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21163C10,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21163C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21163C5,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C4[];
extern void ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev)();
extern void _ZN8S21163C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev)();
extern void _ZN8S21163C4D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn184_N8S21163C4D1Ev,_ZThn132_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn184_N8S21163C4D0Ev,_ZThn132_N8S21163C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn280_N8S21163C4D1Ev,_ZThn208_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn280_N8S21163C4D0Ev,_ZThn208_N8S21163C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn312_N8S21163C4D1Ev,_ZThn236_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn312_N8S21163C4D0Ev,_ZThn236_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C4[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C4[];
extern void _ZN8S21163C5D1Ev();
extern void _ZN8S21163C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C5__8S21163C4[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&_ZN8S21163C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C5D0Ev,
};
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C108S21163C5__8S21163C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C5__8S21163C4[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C4[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C4[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21163C10__8S21163C5__8S21163C4[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C5__8S21163C4[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev),
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C4[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn312_N8S21163C9D1Ev,_ZThn236_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn312_N8S21163C9D0Ev,_ZThn236_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C4[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
static  VTT_ENTRY vtt_S21163C4[] = {
  {&(_ZTV8S21163C4[9]),  9,42},
  {&(_ZTV8S21163C4[19]),  19,42},
  {&(_ZTV8S21163C4[35]),  35,42},
  {&(_ZTV8S21163C4[24]),  24,42},
  {&(_ZTV8S21163C4[40]),  40,42},
  {&(_ZTV8S21163C4[30]),  30,42},
  {&(_ZTV8S21163C4[9]),  9,42},
  {&(_tg__ZTV8S21163C5__8S21163C4[7]),  7,9},
  {&(_tg__ZTV8S21163C68S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV9S21163C108S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C4[3]),  3,5},
  {&(_tg__ZTV9S21163C10__8S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C5__8S21163C4[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C4[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21163C4[];
extern  VTBL_ENTRY _ZTV8S21163C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C4[];
static VTBL_ENTRY alt_thunk_names280[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C9D0Ev,_ZThn236_N8S21163C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C9D1Ev,_ZThn236_N8S21163C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C4D0Ev,_ZThn236_N8S21163C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21163C4D0Ev,_ZThn208_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S21163C4D1Ev,_ZThn236_N8S21163C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S21163C4D1Ev,_ZThn208_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21163C4D0Ev,_ZThn132_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S21163C4D1Ev,_ZThn132_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C4 = {  "S21163C4", // class name
  bases_S21163C4, 13,
  &(vtc_S21163C4[0]), // expected_vtbl_contents
  &(vtt_S21163C4[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S21163C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21163C4),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C4),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names280,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C16  : virtual S20760C13 , virtual S21163C6 {
  long double s21163c16f0;
  ~S21163C16(); // tgen
  S21163C16(); // tgen
};
//SIG(-1 S21163C16) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S21163C16 ::~S21163C16(){ note_dtor("S21163C16", this);} // tgen
S21163C16 ::S21163C16(){ note_ctor("S21163C16", this);} // tgen

static void Test_S21163C16()
{
  extern Class_Descriptor cd_S21163C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S21163C16, buf);
    S21163C16 *dp, &lv = *(dp=new (buf) S21163C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S21163C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21163C16)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S21163C16");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*), ABISELECT(32,16), "S21163C16");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*), ABISELECT(64,44), "S21163C16");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*), ABISELECT(120,88), "S21163C16");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*), ABISELECT(80,56), "S21163C16");
    check_base_class_offset(lv, (S21163C6*), ABISELECT(64,44), "S21163C16");
    check_field_offset(lv, s21163c16f0, ABISELECT(16,4), "S21163C16.s21163c16f0");
    test_class_info(&lv, &cd_S21163C16);
    dp->~S21163C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C16(Test_S21163C16, "S21163C16", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN9S21163C16C1Ev();
extern void _ZN9S21163C16D1Ev();
Name_Map name_map_S21163C16[] = {
  NSPAIR(_ZN9S21163C16C1Ev),
  NSPAIR(_ZN9S21163C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
static Base_Class bases_S21163C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21163C16[];
extern void _ZN9S21163C16D1Ev();
extern void _ZN9S21163C16D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S21163C16D1Ev,_ZThn44_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S21163C16D0Ev,_ZThn44_N9S21163C16D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn120_N9S21163C16D1Ev,_ZThn88_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn120_N9S21163C16D0Ev,_ZThn88_N9S21163C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21163C16[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&_ZN9S21163C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C16D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21163C16[];
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C6__9S21163C16[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__9S21163C16[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S21163C9D1Ev,_ZThn32_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn40_N8S21163C9D0Ev,_ZThn32_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C6__9S21163C16[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C6__9S21163C16[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6__9S21163C16[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C6__9S21163C16[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
static  VTT_ENTRY vtt_S21163C16[] = {
  {&(_ZTV9S21163C16[5]),  5,29},
  {&(_ZTV9S21163C16[10]),  10,29},
  {&(_ZTV9S21163C16[17]),  17,29},
  {&(_ZTV9S21163C16[22]),  22,29},
  {&(_ZTV9S21163C16[27]),  27,29},
  {&(_tg__ZTV8S21163C6__9S21163C16[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C6__9S21163C16[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C6__9S21163C16[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21163C16[];
extern  VTBL_ENTRY _ZTV9S21163C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C16[];
static VTBL_ENTRY alt_thunk_names281[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D0Ev,_ZThn44_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S21163C6D1Ev,_ZThn44_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21163C9D0Ev,_ZThn32_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21163C9D1Ev,_ZThn32_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21163C16D0Ev,_ZThn44_N9S21163C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21163C16D1Ev,_ZThn44_N9S21163C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21163C16D0Ev,_ZThn88_N9S21163C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S21163C16D1Ev,_ZThn88_N9S21163C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C16 = {  "S21163C16", // class name
  bases_S21163C16, 5,
  &(vtc_S21163C16[0]), // expected_vtbl_contents
  &(vtt_S21163C16[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI9S21163C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21163C16),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21163C16),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names281,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21163C1  : virtual S21163C2 , S21163C4 , S4228C23 , virtual S21163C16 {
  long s21163c1f0;
  ~S21163C1(); // tgen
  S21163C1(); // tgen
};
//SIG(1 S21163C1) C1{ VBC2{ VBC3{ vd m FL} vd Fc[2]} BC4{ VBC5{ BC6{ BC7{ vd m FL} VBC8{ vd m Fi[6]} BC9{ VBC7 vd} FC8} BC10{ BC8 VBC11{ m} VBC12{ m} Fs} VBC9 vd} BC13{ m Fp} BC14{ m FC3[10]} vd Fi} BC15{ m} VBC16{ VBC8 VBC6 FD} Fl}


S21163C1 ::~S21163C1(){ note_dtor("S21163C1", this);} // tgen
S21163C1 ::S21163C1(){ note_ctor("S21163C1", this);} // tgen

static void Test_S21163C1()
{
  extern Class_Descriptor cd_S21163C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(30,84)];
    init_test(&cd_S21163C1, buf);
    S21163C1 *dp, &lv = *(dp=new (buf) S21163C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(464,332), "sizeof(S21163C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21163C1)");
    check_base_class_offset(lv, (S20760C9*)(S21163C2*), ABISELECT(208,144), "S21163C1");
    check_base_class_offset(lv, (S21163C2*), ABISELECT(192,136), "S21163C1");
    /*is_ambiguous_... S21163C6::S20760C5_nt */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*)(S21163C5*), ABISELECT(224,156), "S21163C1");
    check_base_class_offset(lv, (S20760C13*)(S21163C6*)(S21163C5*), ABISELECT(320,232), "S21163C1");
    check_base_class_offset(lv, (S20760C13*)(S21163C16*), ABISELECT(320,232), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S20760C13*)(S21163C6*), ABISELECT(320,232), "S21163C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(352,260), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C9 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*), ABISELECT(352,260), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C9*)(S21163C6*), ABISELECT(352,260), "S21163C1");
    check_base_class_offset(lv, (S21163C9*)(S21163C6*)(S21163C5*), ABISELECT(240,168), "S21163C1");
    check_base_class_offset(lv, (S21163C6*)(S21163C5*), ABISELECT(224,156), "S21163C1");
    check_base_class_offset(lv, (S20760C13*)(S21163C10*)(S21163C5*), ABISELECT(280,200), "S21163C1");
    check_base_class_offset(lv, (S4228C37*)(S21163C10*)(S21163C5*), 0, "S21163C1");
    check_base_class_offset(lv, (S4228C27*)(S21163C10*)(S21163C5*), 0, "S21163C1");
    check_base_class_offset(lv, (S21163C10*)(S21163C5*), ABISELECT(280,200), "S21163C1");
    /*is_ambiguous_... S21163C5::S21163C9 */ AMB_check_base_class_offset(lv, (S21163C9*)(S21163C5*), 0, "S21163C1");
    check_base_class_offset(lv, (S21163C5*)(S21163C4*), ABISELECT(224,156), "S21163C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S21163C4*), ABISELECT(8,4), "S21163C1");
    check_base_class_offset(lv, (S19115C12*)(S21163C4*), ABISELECT(16,8), "S21163C1");
    check_base_class_offset(lv, (S21163C4*), 0, "S21163C1");
    check_base_class_offset(lv, (S4228C23*), 0, "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S20760C5_nt*)(S21163C6*), ABISELECT(400,288), "S21163C1");
    /*is_ambiguous_... S21163C1::S21163C6 */ AMB_check_base_class_offset(lv, (S21163C9*)(S21163C6*), ABISELECT(416,300), "S21163C1");
    check_base_class_offset(lv, (S21163C6*)(S21163C16*), ABISELECT(400,288), "S21163C1");
    check_base_class_offset(lv, (S21163C16*), ABISELECT(368,272), "S21163C1");
    check_field_offset(lv, s21163c1f0, ABISELECT(184,132), "S21163C1.s21163c1f0");
    test_class_info(&lv, &cd_S21163C1);
    dp->~S21163C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21163C1(Test_S21163C1, "S21163C1", ABISELECT(464,332));

#else // __cplusplus

extern void _ZN8S21163C1C1Ev();
extern void _ZN8S21163C1D1Ev();
Name_Map name_map_S21163C1[] = {
  NSPAIR(_ZN8S21163C1C1Ev),
  NSPAIR(_ZN8S21163C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S21163C2;
extern VTBL_ENTRY _ZTI8S21163C2[];
extern  VTBL_ENTRY _ZTV8S21163C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C2[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S21163C10;
extern VTBL_ENTRY _ZTI9S21163C10[];
extern  VTBL_ENTRY _ZTV9S21163C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C10[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C5;
extern VTBL_ENTRY _ZTI8S21163C5[];
extern  VTBL_ENTRY _ZTV8S21163C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C5[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S21163C4;
extern VTBL_ENTRY _ZTI8S21163C4[];
extern  VTBL_ENTRY _ZTV8S21163C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C4[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S21163C9;
extern VTBL_ENTRY _ZTI8S21163C9[];
extern  VTBL_ENTRY _ZTV8S21163C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C9[];
extern Class_Descriptor cd_S21163C6;
extern VTBL_ENTRY _ZTI8S21163C6[];
extern  VTBL_ENTRY _ZTV8S21163C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C6[];
extern Class_Descriptor cd_S21163C16;
extern VTBL_ENTRY _ZTI9S21163C16[];
extern  VTBL_ENTRY _ZTV9S21163C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21163C16[];
static Base_Class bases_S21163C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(208,144), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21163C2,    ABISELECT(192,136), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C5_nt,    ABISELECT(224,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(320,232), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C5_nt,    ABISELECT(352,260), //bcp->offset
    52, //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
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S21163C9,    ABISELECT(240,168), //bcp->offset
    36, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(224,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C13,    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
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21163C10,    ABISELECT(280,200), //bcp->offset
    41, //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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21163C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21163C5,    ABISELECT(224,156), //bcp->offset
    26, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S19115C12,    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
    15, //immediately_derived
  0, 0},
  {&cd_S21163C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(400,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21163C9,    ABISELECT(416,300), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21163C6,    ABISELECT(400,288), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S21163C16,    ABISELECT(368,272), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21163C1[];
extern void ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev)();
extern void _ZN8S21163C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev)();
extern void _ZN8S21163C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S21163C1D1Ev,_ZThn136_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S21163C1D0Ev,_ZThn136_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S21163C1D1Ev,_ZThn144_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S21163C1D0Ev,_ZThn144_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C1D1Ev,_ZTv0_n32_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21163C1D1Ev,_ZThn156_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C1D0Ev,_ZTv0_n32_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21163C1D0Ev,_ZThn156_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S21163C1D1Ev,_ZTvn12_n32_N8S21163C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21163C1D0Ev,_ZTvn12_n32_N8S21163C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C1D1Ev,_ZTvn44_n32_N8S21163C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C1D0Ev,_ZTvn44_n32_N8S21163C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S21163C1D1Ev,_ZThn232_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S21163C1D0Ev,_ZThn232_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn352_N8S21163C1D1Ev,_ZThn260_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn352_N8S21163C1D0Ev,_ZThn260_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21163C1D1Ev,_ZTv0_n24_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn368_N8S21163C1D1Ev,_ZThn272_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21163C1D0Ev,_ZTv0_n24_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn368_N8S21163C1D0Ev,_ZThn272_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21163C1D1Ev,_ZTv0_n20_N8S21163C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S21163C1D1Ev,_ZThn288_N8S21163C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S21163C1D0Ev,_ZTv0_n20_N8S21163C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S21163C1D0Ev,_ZThn288_N8S21163C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S21163C1D1Ev,_ZTvn12_n20_N8S21163C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S21163C1D0Ev,_ZTvn12_n20_N8S21163C1D0Ev)();
static  VTBL_ENTRY vtc_S21163C1[] = {
  ABISELECT(400,288),
  ABISELECT(368,272),
  ABISELECT(208,144),
  ABISELECT(192,136),
  0,
  0,
  0,
  ABISELECT(320,232),
  ABISELECT(224,156),
  0,
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(16,8),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C1D1Ev,_ZTv0_n32_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C1D0Ev,_ZTv0_n32_N8S21163C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C1D1Ev,_ZTvn12_n32_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C1D0Ev,_ZTvn12_n32_N8S21163C1D0Ev),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C1D1Ev,_ZTvn44_n32_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C1D0Ev,_ZTvn44_n32_N8S21163C1D0Ev),
  ABISELECT(-320,-232),
  ABISELECT(-320,-232),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev),
  ABISELECT(-352,-260),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev),
  ABISELECT(-368,-272),
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21163C1D1Ev,_ZTv0_n24_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21163C1D0Ev,_ZTv0_n24_N8S21163C1D0Ev),
  ABISELECT(-400,-288),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-400,-288),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21163C1D1Ev,_ZTv0_n20_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S21163C1D0Ev,_ZTv0_n20_N8S21163C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-416,-300),
  (VTBL_ENTRY)&(_ZTI8S21163C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21163C1D1Ev,_ZTvn12_n20_N8S21163C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S21163C1D0Ev,_ZTvn12_n20_N8S21163C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21163C1[];
extern void ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev)();
extern void _ZN8S21163C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev)();
extern void _ZN8S21163C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21163C4__8S21163C1[] = {
  0,
  0,
  0,
  ABISELECT(320,232),
  ABISELECT(224,156),
  0,
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21163C4D1Ev,_ZThn156_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21163C4D0Ev,_ZThn156_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21163C5__8S21163C4__8S21163C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S21163C4D1Ev,_ZThn232_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S21163C4D0Ev,_ZThn232_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C4__8S21163C1[] = {
  ABISELECT(-320,-232),
  ABISELECT(-320,-232),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4__8S21163C1[] = {
  ABISELECT(112,92),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D1Ev,_ZTvn12_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S21163C4D0Ev,_ZTvn12_n32_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev)();
extern void ABISELECT(_ZThn352_N8S21163C4D1Ev,_ZThn260_N8S21163C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev)();
extern void ABISELECT(_ZThn352_N8S21163C4D0Ev,_ZThn260_N8S21163C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C4__8S21163C1[] = {
  ABISELECT(-352,-260),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21163C108S21163C5__8S21163C4__8S21163C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  (VTBL_ENTRY)&(_ZTI8S21163C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D1Ev,_ZTvn44_n32_N8S21163C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S21163C4D0Ev,_ZTvn44_n32_N8S21163C4D0Ev),
};
extern void _ZN8S21163C2D1Ev();
extern void _ZN8S21163C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C2__8S21163C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&_ZN8S21163C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S21163C2__8S21163C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21163C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev),
};
extern void _ZN8S21163C5D1Ev();
extern void _ZN8S21163C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C5__8S21163C1[] = {
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(-224,-156),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&_ZN8S21163C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C5D0Ev,
};
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void _ZN9S21163C10D1Ev();
extern void _ZN9S21163C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C108S21163C5__8S21163C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C10[0]),
  (VTBL_ENTRY)&_ZN9S21163C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C10D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C5__8S21163C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D1Ev,_ZThn12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C5D0Ev,_ZThn12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev)();
extern void ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21163C10__8S21163C5__8S21163C1[] = {
  ABISELECT(-280,-200),
  ABISELECT(-280,-200),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D1Ev,_ZThn44_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S21163C5D0Ev,_ZThn44_N8S21163C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C5__8S21163C1[] = {
  ABISELECT(224,156),
  ABISELECT(352,260),
  ABISELECT(224,156),
  (VTBL_ENTRY)&(_ZTI8S21163C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D1Ev,_ZTv0_n16_N8S21163C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21163C5D0Ev,_ZTv0_n16_N8S21163C5D0Ev),
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C9__A1__8S21163C1[] = {
  ABISELECT(352,260),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZThn352_N8S21163C9D1Ev,_ZThn260_N8S21163C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
extern void ABISELECT(_ZThn352_N8S21163C9D0Ev,_ZThn260_N8S21163C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C1[] = {
  ABISELECT(-352,-260),
  ABISELECT(-352,-260),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void _ZN9S21163C16D1Ev();
extern void _ZN9S21163C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21163C16__8S21163C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(32,16),
  ABISELECT(-48,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&_ZN9S21163C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21163C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S21163C16__8S21163C1[] = {
  ABISELECT(48,40),
  ABISELECT(48,40),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21163C6__9S21163C16__8S21163C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__9S21163C16__8S21163C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D1Ev,_ZTvn12_n20_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S21163C16D0Ev,_ZTvn12_n20_N9S21163C16D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__9S21163C16__8S21163C1[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S21163C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D1Ev,_ZTv0_n12_N9S21163C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21163C16D0Ev,_ZTv0_n12_N9S21163C16D0Ev),
};
extern void _ZN8S21163C6D1Ev();
extern void _ZN8S21163C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C6__A1__8S21163C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-80,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&_ZN8S21163C6D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C6D0Ev,
};
extern void _ZN8S21163C9D1Ev();
extern void _ZN8S21163C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21163C98S21163C6__A2__8S21163C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&_ZN8S21163C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21163C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S21163C98S21163C6__A2__8S21163C1[] = {
  ABISELECT(64,40),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S21163C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S21163C6__A1__8S21163C1[] = {
  ABISELECT(80,56),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21163C9__8S21163C6__A1__8S21163C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D1Ev,_ZThn12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S21163C6D0Ev,_ZThn12_N8S21163C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__A1__8S21163C6__A1__8S21163C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21163C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev),
};
static  VTT_ENTRY vtt_S21163C1[] = {
  {&(_ZTV8S21163C1[13]),  13,77},
  {&(_tg__ZTV8S21163C4__8S21163C1[9]),  9,11},
  {&(_tg__ZTV8S21163C5__8S21163C4__8S21163C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S21163C4__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C98S21163C68S21163C5__8S21163C4__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C4__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C108S21163C5__8S21163C4__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C4__8S21163C1[9]),  9,11},
  {&(_ZTV8S21163C1[19]),  19,77},
  {&(_ZTV8S21163C1[24]),  24,77},
  {&(_ZTV8S21163C1[34]),  34,77},
  {&(_ZTV8S21163C1[50]),  50,77},
  {&(_ZTV8S21163C1[39]),  39,77},
  {&(_ZTV8S21163C1[55]),  55,77},
  {&(_ZTV8S21163C1[45]),  45,77},
  {&(_ZTV8S21163C1[13]),  13,77},
  {&(_ZTV8S21163C1[63]),  63,77},
  {&(_ZTV8S21163C1[70]),  70,77},
  {&(_ZTV8S21163C1[75]),  75,77},
  {&(_tg__ZTV8S21163C2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S21163C2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C5__8S21163C1[7]),  7,9},
  {&(_tg__ZTV8S21163C68S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C68S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C108S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C98S21163C6__8S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C5__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C10__8S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C5__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C9__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C9__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S21163C16__8S21163C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__9S21163C16__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C6__9S21163C16__8S21163C1[5]),  5,7},
  {&(_tg__ZTV8S21163C98S21163C6__9S21163C16__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__9S21163C16__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C6__A1__8S21163C1[4]),  4,6},
  {&(_tg__ZTV8S21163C98S21163C6__A2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S21163C98S21163C6__A2__8S21163C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S21163C6__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV8S21163C9__8S21163C6__A1__8S21163C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__A1__8S21163C6__A1__8S21163C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21163C1[];
extern  VTBL_ENTRY _ZTV8S21163C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21163C1[];
static VTBL_ENTRY alt_thunk_names282[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D0Ev,_ZTv0_n20_N9S21163C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D0Ev,_ZThn16_N9S21163C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S21163C16D1Ev,_ZTv0_n20_N9S21163C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21163C16D1Ev,_ZThn16_N9S21163C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D0Ev,_ZTv0_n12_N8S21163C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D0Ev,_ZThn104_N8S21163C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D0Ev,_ZThn76_N8S21163C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C5D1Ev,_ZTv0_n12_N8S21163C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C5D1Ev,_ZThn104_N8S21163C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C5D1Ev,_ZThn76_N8S21163C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D0Ev,_ZTv0_n12_N8S21163C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D0Ev,_ZThn104_N8S21163C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D0Ev,_ZThn76_N8S21163C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C6D1Ev,_ZTv0_n12_N8S21163C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21163C6D1Ev,_ZThn104_N8S21163C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21163C6D1Ev,_ZThn76_N8S21163C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D0Ev,_ZTv0_n12_N8S21163C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C9D0Ev,_ZThn260_N8S21163C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D0Ev,_ZThn92_N8S21163C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C9D1Ev,_ZTv0_n12_N8S21163C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C9D1Ev,_ZThn260_N8S21163C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21163C9D1Ev,_ZThn92_N8S21163C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D0Ev,_ZTv0_n12_N8S21163C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D0Ev,_ZThn8_N8S21163C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C2D1Ev,_ZTv0_n12_N8S21163C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21163C2D1Ev,_ZThn8_N8S21163C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D0Ev,_ZTv0_n12_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C4D0Ev,_ZThn260_N8S21163C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C4D0Ev,_ZThn232_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C4D1Ev,_ZTv0_n12_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C4D1Ev,_ZThn260_N8S21163C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C4D1Ev,_ZThn232_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D0Ev,_ZTv0_n32_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C4D0Ev,_ZThn156_N8S21163C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C4D1Ev,_ZTv0_n32_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C4D1Ev,_ZThn156_N8S21163C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D0Ev,_ZTv0_n16_N8S21163C4D0Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C4D1Ev,_ZTv0_n16_N8S21163C4D1Ev), // 
  (VTBL_ENTRY)_ZN8S21163C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21163C1D0Ev,_ZTv0_n20_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21163C1D0Ev,_ZThn288_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S21163C1D1Ev,_ZTv0_n20_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S21163C1D1Ev,_ZThn288_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21163C1D0Ev,_ZTv0_n24_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21163C1D0Ev,_ZThn272_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21163C1D1Ev,_ZTv0_n24_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S21163C1D1Ev,_ZThn272_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C1D0Ev,_ZTv0_n32_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C1D0Ev,_ZThn156_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21163C1D1Ev,_ZTv0_n32_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21163C1D1Ev,_ZThn156_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C1D0Ev,_ZTv0_n12_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C1D0Ev,_ZThn260_N8S21163C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C1D0Ev,_ZThn232_N8S21163C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21163C1D0Ev,_ZThn144_N8S21163C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21163C1D1Ev,_ZTv0_n12_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N8S21163C1D1Ev,_ZThn260_N8S21163C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S21163C1D1Ev,_ZThn232_N8S21163C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21163C1D1Ev,_ZThn144_N8S21163C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C1D0Ev,_ZTv0_n16_N8S21163C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21163C1D0Ev,_ZThn136_N8S21163C1D0Ev),
  (VTBL_ENTRY)_ZN8S21163C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21163C1D1Ev,_ZTv0_n16_N8S21163C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21163C1D1Ev,_ZThn136_N8S21163C1D1Ev),
  (VTBL_ENTRY)_ZN8S21163C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21163C1 = {  "S21163C1", // class name
  bases_S21163C1, 21,
  &(vtc_S21163C1[0]), // expected_vtbl_contents
  &(vtt_S21163C1[0]), // expected_vtt_contents
  ABISELECT(464,332), // object size
  NSPAIRA(_ZTI8S21163C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21163C1),77, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21163C1),47, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names282,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C4  : virtual S20760C5_nt {
  char s19622c4f0[2];
  virtual  ~S19622C4(); // _ZN8S19622C4D2Ev
  S19622C4(); // tgen
};
//SIG(-1 S19622C4) C1{ VBC2{ vd m FL} vd Fc[2]}


 S19622C4 ::~S19622C4(){ note_dtor("S19622C4", this);}
S19622C4 ::S19622C4(){ note_ctor("S19622C4", this);} // tgen

static void Test_S19622C4()
{
  extern Class_Descriptor cd_S19622C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19622C4, buf);
    S19622C4 *dp, &lv = *(dp=new (buf) S19622C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19622C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C4)");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(16,8), "S19622C4");
    check_field_offset(lv, s19622c4f0, ABISELECT(8,4), "S19622C4.s19622c4f0");
    test_class_info(&lv, &cd_S19622C4);
    dp->~S19622C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C4(Test_S19622C4, "S19622C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19622C4C1Ev();
extern void _ZN8S19622C4D2Ev();
Name_Map name_map_S19622C4[] = {
  NSPAIR(_ZN8S19622C4C1Ev),
  NSPAIR(_ZN8S19622C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S19622C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C5_nt,    ABISELECT(16,8), //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 _ZTI8S19622C4[];
extern void _ZN8S19622C4D1Ev();
extern void _ZN8S19622C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&_ZN8S19622C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C4[];
static  VTT_ENTRY vtt_S19622C4[] = {
  {&(_ZTV8S19622C4[3]),  3,10},
  {&(_ZTV8S19622C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19622C4[];
extern  VTBL_ENTRY _ZTV8S19622C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C4[];
static VTBL_ENTRY alt_thunk_names283[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C4 = {  "S19622C4", // class name
  bases_S19622C4, 1,
  &(vtc_S19622C4[0]), // expected_vtbl_contents
  &(vtt_S19622C4[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19622C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19622C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names283,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C11  : virtual S20760C9 {
  virtual  ~S19622C11(); // _ZN9S19622C11D2Ev
  S19622C11(); // tgen
};
//SIG(-1 S19622C11) C1{ VBC2{ vd m FL} vd}


 S19622C11 ::~S19622C11(){ note_dtor("S19622C11", this);}
S19622C11 ::S19622C11(){ note_ctor("S19622C11", this);} // tgen

static void Test_S19622C11()
{
  extern Class_Descriptor cd_S19622C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19622C11, buf);
    S19622C11 *dp, &lv = *(dp=new (buf) S19622C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19622C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C11)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19622C11");
    test_class_info(&lv, &cd_S19622C11);
    dp->~S19622C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C11(Test_S19622C11, "S19622C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19622C11C1Ev();
extern void _ZN9S19622C11D2Ev();
Name_Map name_map_S19622C11[] = {
  NSPAIR(_ZN9S19622C11C1Ev),
  NSPAIR(_ZN9S19622C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19622C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19622C11[];
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19622C11D1Ev,_ZThn4_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19622C11D0Ev,_ZThn4_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19622C11[];
static  VTT_ENTRY vtt_S19622C11[] = {
  {&(_ZTV9S19622C11[3]),  3,10},
  {&(_ZTV9S19622C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
static VTBL_ENTRY alt_thunk_names284[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19622C11D0Ev,_ZThn4_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19622C11D1Ev,_ZThn4_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C11 = {  "S19622C11", // class name
  bases_S19622C11, 1,
  &(vtc_S19622C11[0]), // expected_vtbl_contents
  &(vtt_S19622C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19622C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19622C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19622C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names284,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C9  : S20760C9 , virtual S20760C13 , S19622C11 {
  ::S20760C13 s19622c9f0;
  ~S19622C9(); // tgen
  S19622C9(); // tgen
};
//SIG(-1 S19622C9) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19622C9 ::~S19622C9(){ note_dtor("S19622C9", this);} // tgen
S19622C9 ::S19622C9(){ note_ctor("S19622C9", this);} // tgen

static void Test_S19622C9()
{
  extern Class_Descriptor cd_S19622C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19622C9, buf);
    S19622C9 *dp, &lv = *(dp=new (buf) S19622C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19622C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C9)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19622C9");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19622C9");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(88,72), "S19622C9");
    check_base_class_offset(lv, (S19622C11*), ABISELECT(16,12), "S19622C9");
    check_field_offset(lv, s19622c9f0, ABISELECT(24,16), "S19622C9.s19622c9f0");
    test_class_info(&lv, &cd_S19622C9);
    dp->~S19622C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C9(Test_S19622C9, "S19622C9", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19622C9C1Ev();
extern void _ZN8S19622C9D1Ev();
Name_Map name_map_S19622C9[] = {
  NSPAIR(_ZN8S19622C9C1Ev),
  NSPAIR(_ZN8S19622C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
static Base_Class bases_S19622C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C9[];
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C9D1Ev,_ZThn44_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19622C9D0Ev,_ZThn44_N8S19622C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S19622C9D1Ev,_ZThn72_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S19622C9D0Ev,_ZThn72_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C9[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C9[];
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C9[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19622C11D1Ev,_ZThn60_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19622C11D0Ev,_ZThn60_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__8S19622C9[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C9[] = {
  {&(_ZTV8S19622C9[4]),  4,21},
  {&(_tg__ZTV9S19622C11__8S19622C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__8S19622C9[3]),  3,5},
  {&(_ZTV8S19622C9[14]),  14,21},
  {&(_ZTV8S19622C9[9]),  9,21},
  {&(_ZTV8S19622C9[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
static VTBL_ENTRY alt_thunk_names285[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19622C11D0Ev,_ZThn60_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19622C11D1Ev,_ZThn60_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19622C9D0Ev,_ZThn72_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C9D0Ev,_ZThn44_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19622C9D1Ev,_ZThn72_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C9D1Ev,_ZThn44_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C9 = {  "S19622C9", // class name
  bases_S19622C9, 4,
  &(vtc_S19622C9[0]), // expected_vtbl_contents
  &(vtt_S19622C9[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19622C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C9),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C9),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names285,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C12  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s19622c12f0;
  ~S19622C12(); // tgen
  S19622C12(); // tgen
};
//SIG(-1 S19622C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S19622C12 ::~S19622C12(){ note_dtor("S19622C12", this);} // tgen
S19622C12 ::S19622C12(){ note_ctor("S19622C12", this);} // tgen

static void Test_S19622C12()
{
  extern Class_Descriptor cd_S19622C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19622C12, buf);
    S19622C12 *dp, &lv = *(dp=new (buf) S19622C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S19622C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S19622C12");
    check_base_class_offset(lv, (S4228C37*), 0, "S19622C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S19622C12");
    check_field_offset(lv, s19622c12f0, ABISELECT(32,28), "S19622C12.s19622c12f0");
    test_class_info(&lv, &cd_S19622C12);
    dp->~S19622C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C12(Test_S19622C12, "S19622C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S19622C12C1Ev();
extern void _ZN9S19622C12D1Ev();
Name_Map name_map_S19622C12[] = {
  NSPAIR(_ZN9S19622C12C1Ev),
  NSPAIR(_ZN9S19622C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S19622C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19622C12[];
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY vtc_S19622C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19622C12[];
static  VTT_ENTRY vtt_S19622C12[] = {
  {&(_ZTV9S19622C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
Class_Descriptor cd_S19622C12 = {  "S19622C12", // class name
  bases_S19622C12, 3,
  &(vtc_S19622C12[0]), // expected_vtbl_contents
  &(vtt_S19622C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S19622C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19622C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19622C12),1, //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  S19622C8  : S19622C9 , S19622C12 , virtual S19622C11 {
  virtual  ~S19622C8(); // _ZN8S19622C8D2Ev
  S19622C8(); // tgen
};
//SIG(-1 S19622C8) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S19622C8 ::~S19622C8(){ note_dtor("S19622C8", this);}
S19622C8 ::S19622C8(){ note_ctor("S19622C8", this);} // tgen

static void Test_S19622C8()
{
  extern Class_Descriptor cd_S19622C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S19622C8, buf);
    S19622C8 *dp, &lv = *(dp=new (buf) S19622C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S19622C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C8)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*), 0, "S19622C8");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*), ABISELECT(96,76), "S19622C8");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*), ABISELECT(128,104), "S19622C8");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(128,104), "S19622C8");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*), ABISELECT(16,12), "S19622C8");
    check_base_class_offset(lv, (S19622C9*), 0, "S19622C8");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*), ABISELECT(56,44), "S19622C8");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*), 0, "S19622C8");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*), 0, "S19622C8");
    check_base_class_offset(lv, (S19622C12*), ABISELECT(56,44), "S19622C8");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*), ABISELECT(144,116), "S19622C8");
    test_class_info(&lv, &cd_S19622C8);
    dp->~S19622C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C8(Test_S19622C8, "S19622C8", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S19622C8C1Ev();
extern void _ZN8S19622C8D2Ev();
Name_Map name_map_S19622C8[] = {
  NSPAIR(_ZN8S19622C8C1Ev),
  NSPAIR(_ZN8S19622C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
static Base_Class bases_S19622C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //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_S19622C11,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19622C9,    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_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19622C12,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19622C11,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C8[];
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19622C8D1Ev,_ZThn116_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn144_N8S19622C8D0Ev,_ZThn116_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C8[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C8[];
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C9__8S19622C8[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C9__8S19622C8[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C9__8S19622C8[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C9__8S19622C8[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C9__8S19622C8[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C8[] = {
  {&(_ZTV8S19622C8[7]),  7,36},
  {&(_tg__ZTV8S19622C9__8S19622C8[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C9__8S19622C8[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8[4]),  4,6},
  {&(_ZTV8S19622C8[23]),  23,36},
  {&(_ZTV8S19622C8[12]),  12,36},
  {&(_ZTV8S19622C8[28]),  28,36},
  {&(_ZTV8S19622C8[18]),  18,36},
  {&(_ZTV8S19622C8[34]),  34,36},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
static VTBL_ENTRY alt_thunk_names286[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19622C8D0Ev,_ZThn116_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19622C8D1Ev,_ZThn116_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C8 = {  "S19622C8", // class name
  bases_S19622C8, 10,
  &(vtc_S19622C8[0]), // expected_vtbl_contents
  &(vtt_S19622C8[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S19622C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C8),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C8),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names286,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C7  : virtual S19622C8 , S4161C4_nt , S19115C12 {
  int s19622c7f0;
  virtual  ~S19622C7(); // _ZN8S19622C7D2Ev
  S19622C7(); // tgen
};
//SIG(-1 S19622C7) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S19622C7 ::~S19622C7(){ note_dtor("S19622C7", this);}
S19622C7 ::S19622C7(){ note_ctor("S19622C7", this);} // tgen

static void Test_S19622C7()
{
  extern Class_Descriptor cd_S19622C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S19622C7, buf);
    S19622C7 *dp, &lv = *(dp=new (buf) S19622C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S19622C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C7)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(184,132), "S19622C7");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(280,208), "S19622C7");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(312,236), "S19622C7");
    /*is_ambiguous_... S19622C7::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(312,236), "S19622C7");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(200,144), "S19622C7");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(184,132), "S19622C7");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(240,176), "S19622C7");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C7");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C7");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(240,176), "S19622C7");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), 0, "S19622C7");
    check_base_class_offset(lv, (S19622C8*), ABISELECT(184,132), "S19622C7");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S19622C7");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S19622C7");
    check_field_offset(lv, s19622c7f0, ABISELECT(176,128), "S19622C7.s19622c7f0");
    test_class_info(&lv, &cd_S19622C7);
    dp->~S19622C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C7(Test_S19622C7, "S19622C7", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S19622C7C1Ev();
extern void _ZN8S19622C7D2Ev();
Name_Map name_map_S19622C7[] = {
  NSPAIR(_ZN8S19622C7C1Ev),
  NSPAIR(_ZN8S19622C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S19622C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(200,144), //bcp->offset
    21, //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(184,132), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19622C12,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19622C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C7[];
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C7[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C7[];
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C7[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn312_N9S19622C11D1Ev,_ZThn236_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn312_N9S19622C11D0Ev,_ZThn236_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C7[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C7[] = {
  {&(_ZTV8S19622C7[9]),  9,42},
  {&(_ZTV8S19622C7[19]),  19,42},
  {&(_ZTV8S19622C7[35]),  35,42},
  {&(_ZTV8S19622C7[24]),  24,42},
  {&(_ZTV8S19622C7[40]),  40,42},
  {&(_ZTV8S19622C7[30]),  30,42},
  {&(_ZTV8S19622C7[9]),  9,42},
  {&(_tg__ZTV8S19622C8__8S19622C7[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C7[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C7[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
static VTBL_ENTRY alt_thunk_names287[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19622C11D0Ev,_ZThn236_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19622C11D1Ev,_ZThn236_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C7 = {  "S19622C7", // class name
  bases_S19622C7, 13,
  &(vtc_S19622C7[0]), // expected_vtbl_contents
  &(vtt_S19622C7[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S19622C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C7),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C7),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names287,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C6  : virtual S19622C7 {
  virtual  ~S19622C6(); // _ZN8S19622C6D2Ev
  S19622C6(); // tgen
};
//SIG(-1 S19622C6) C1{ VBC2{ VBC3{ BC4{ BC5{ vd m FL} VBC6{ vd m Fi[6]} BC7{ VBC5 vd} FC6} BC8{ BC6 VBC9{ m} VBC10{ m} Fs} VBC7 vd} BC11{ m Fp} BC12{ m FC5[10]} vd Fi} vd}


 S19622C6 ::~S19622C6(){ note_dtor("S19622C6", this);}
S19622C6 ::S19622C6(){ note_ctor("S19622C6", this);} // tgen

static void Test_S19622C6()
{
  extern Class_Descriptor cd_S19622C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,64)];
    init_test(&cd_S19622C6, buf);
    S19622C6 *dp, &lv = *(dp=new (buf) S19622C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,252), "sizeof(S19622C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C6)");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(192,136), "S19622C6");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(288,212), "S19622C6");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(320,240), "S19622C6");
    /*is_ambiguous_... S19622C6::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(320,240), "S19622C6");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(208,148), "S19622C6");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(192,136), "S19622C6");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(248,180), "S19622C6");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C6");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C6");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(248,180), "S19622C6");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), 0, "S19622C6");
    check_base_class_offset(lv, (S19622C8*)(S19622C7*), ABISELECT(192,136), "S19622C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S19622C7*), ABISELECT(16,8), "S19622C6");
    check_base_class_offset(lv, (S19115C12*)(S19622C7*), ABISELECT(24,12), "S19622C6");
    check_base_class_offset(lv, (S19622C7*), ABISELECT(8,4), "S19622C6");
    test_class_info(&lv, &cd_S19622C6);
    dp->~S19622C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C6(Test_S19622C6, "S19622C6", ABISELECT(336,252));

#else // __cplusplus

extern void _ZN8S19622C6C1Ev();
extern void _ZN8S19622C6D2Ev();
Name_Map name_map_S19622C6[] = {
  NSPAIR(_ZN8S19622C6C1Ev),
  NSPAIR(_ZN8S19622C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19622C7;
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
static Base_Class bases_S19622C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(192,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(288,212), //bcp->offset
    44, //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
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(320,240), //bcp->offset
    49, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(208,148), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(192,136), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(248,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19622C12,    ABISELECT(248,180), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19622C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(192,136), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S4161C4_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
    13, //immediately_derived
  0, 0},
  {&cd_S19115C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19622C7,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C6[];
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void _ZN8S19622C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void _ZN8S19622C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C6[] = {
  0,
  0,
  0,
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev),
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev),
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C6[];
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7__8S19622C6[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C7__8S19622C6[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C6[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C7__8S19622C6[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7__8S19622C6[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C6[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C6[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C6[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C6[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C6[] = {
  {&(_ZTV8S19622C6[10]),  10,54},
  {&(_ZTV8S19622C6[21]),  21,54},
  {&(_ZTV8S19622C6[31]),  31,54},
  {&(_ZTV8S19622C6[47]),  47,54},
  {&(_ZTV8S19622C6[36]),  36,54},
  {&(_ZTV8S19622C6[52]),  52,54},
  {&(_ZTV8S19622C6[42]),  42,54},
  {&(_ZTV8S19622C6[10]),  10,54},
  {&(_tg__ZTV8S19622C7__8S19622C6[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C7__8S19622C6[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C7__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C7__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7__8S19622C6[4]),  4,6},
  {&(_tg__ZTV8S19622C8__8S19622C6[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C6[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C6[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C6[];
extern  VTBL_ENTRY _ZTV8S19622C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C6[];
static VTBL_ENTRY alt_thunk_names288[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev),
  (VTBL_ENTRY)_ZN8S19622C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev),
  (VTBL_ENTRY)_ZN8S19622C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C6 = {  "S19622C6", // class name
  bases_S19622C6, 14,
  &(vtc_S19622C6[0]), // expected_vtbl_contents
  &(vtt_S19622C6[0]), // expected_vtt_contents
  ABISELECT(336,252), // object size
  NSPAIRA(_ZTI8S19622C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19622C6),54, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C6),30, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names288,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C2  : S20760C9 , S19622C4 , virtual S19622C6 {
  ~S19622C2(); // tgen
  S19622C2(); // tgen
};
//SIG(-1 S19622C2) C1{ BC2{ vd m FL} BC3{ VBC4{ vd m FL} vd Fc[2]} VBC5{ VBC6{ VBC7{ BC8{ BC2 VBC9{ vd m Fi[6]} BC10{ VBC2 vd} FC9} BC11{ BC9 VBC12{ m} VBC13{ m} Fs} VBC10 vd} BC14{ m Fp} BC15{ m FC2[10]} vd Fi} vd}}


S19622C2 ::~S19622C2(){ note_dtor("S19622C2", this);} // tgen
S19622C2 ::S19622C2(){ note_ctor("S19622C2", this);} // tgen

static void Test_S19622C2()
{
  extern Class_Descriptor cd_S19622C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,72)];
    init_test(&cd_S19622C2, buf);
    S19622C2 *dp, &lv = *(dp=new (buf) S19622C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,284), "sizeof(S19622C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C2)");
    /*is_ambiguous_... S19622C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19622C2");
    check_base_class_offset(lv, (S20760C5_nt*)(S19622C4*), ABISELECT(32,20), "S19622C2");
    check_base_class_offset(lv, (S19622C4*), ABISELECT(16,12), "S19622C2");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(240,168), "S19622C2");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(336,244), "S19622C2");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(368,272), "S19622C2");
    /*is_ambiguous_... S19622C2::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(368,272), "S19622C2");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(256,180), "S19622C2");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(240,168), "S19622C2");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(296,212), "S19622C2");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C2");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C2");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(296,212), "S19622C2");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), ABISELECT(48,32), "S19622C2");
    check_base_class_offset(lv, (S19622C8*)(S19622C7*), ABISELECT(240,168), "S19622C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S19622C7*), ABISELECT(64,40), "S19622C2");
    check_base_class_offset(lv, (S19115C12*)(S19622C7*), ABISELECT(72,44), "S19622C2");
    check_base_class_offset(lv, (S19622C7*)(S19622C6*), ABISELECT(56,36), "S19622C2");
    check_base_class_offset(lv, (S19622C6*), ABISELECT(48,32), "S19622C2");
    test_class_info(&lv, &cd_S19622C2);
    dp->~S19622C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C2(Test_S19622C2, "S19622C2", ABISELECT(384,284));

#else // __cplusplus

extern void _ZN8S19622C2C1Ev();
extern void _ZN8S19622C2D1Ev();
Name_Map name_map_S19622C2[] = {
  NSPAIR(_ZN8S19622C2C1Ev),
  NSPAIR(_ZN8S19622C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S19622C4;
extern VTBL_ENTRY _ZTI8S19622C4[];
extern  VTBL_ENTRY _ZTV8S19622C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19622C7;
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
extern Class_Descriptor cd_S19622C6;
extern VTBL_ENTRY _ZTI8S19622C6[];
extern  VTBL_ENTRY _ZTV8S19622C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C6[];
static Base_Class bases_S19622C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20760C5_nt,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19622C4,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(240,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(336,244), //bcp->offset
    67, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(368,272), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(256,180), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(240,168), //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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(296,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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(296,212), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19622C11,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(240,168), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_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
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19115C12,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19622C7,    ABISELECT(56,36), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19622C6,    ABISELECT(48,32), //bcp->offset
    23, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C2[];
extern void _ZN8S19622C2D1Ev();
extern void _ZN8S19622C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C2D1Ev,_ZThn36_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19622C2D0Ev,_ZThn36_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S19622C2D1Ev,_ZThn168_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S19622C2D0Ev,_ZThn168_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S19622C2D1Ev,_ZThn244_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S19622C2D0Ev,_ZThn244_N8S19622C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S19622C2D1Ev,_ZThn272_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S19622C2D0Ev,_ZThn272_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C2[] = {
  ABISELECT(48,32),
  0,
  0,
  ABISELECT(368,272),
  ABISELECT(336,244),
  ABISELECT(240,168),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&_ZN8S19622C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C2D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  ABISELECT(-48,-32),
  ABISELECT(320,240),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-56,-36),
  ABISELECT(312,236),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
  ABISELECT(-240,-168),
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-168),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev),
  ABISELECT(112,92),
  ABISELECT(-256,-180),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev),
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev),
  ABISELECT(-336,-244),
  ABISELECT(-336,-244),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
  ABISELECT(-368,-272),
  ABISELECT(-368,-272),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C2[];
extern void _ZN8S19622C4D1Ev();
extern void _ZN8S19622C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C4__8S19622C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&_ZN8S19622C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19622C4__8S19622C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void _ZN8S19622C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void _ZN8S19622C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C6__8S19622C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C6__8S19622C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C6__8S19622C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C6__8S19622C2[] = {
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C6__8S19622C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7__8S19622C2[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C7__8S19622C2[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C7__8S19622C2[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7__8S19622C2[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-240,-168),
  ABISELECT(-240,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C2[] = {
  ABISELECT(-296,-212),
  ABISELECT(-296,-212),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C2[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C2[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C2[] = {
  {&(_ZTV8S19622C2[11]),  11,77},
  {&(_tg__ZTV8S19622C4__8S19622C2[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S19622C4__8S19622C2[3]),  3,5},
  {&(_ZTV8S19622C2[16]),  16,77},
  {&(_ZTV8S19622C2[21]),  21,77},
  {&(_ZTV8S19622C2[33]),  33,77},
  {&(_ZTV8S19622C2[44]),  44,77},
  {&(_ZTV8S19622C2[54]),  54,77},
  {&(_ZTV8S19622C2[70]),  70,77},
  {&(_ZTV8S19622C2[59]),  59,77},
  {&(_ZTV8S19622C2[75]),  75,77},
  {&(_ZTV8S19622C2[65]),  65,77},
  {&(_ZTV8S19622C2[33]),  33,77},
  {&(_tg__ZTV8S19622C6__8S19622C2[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C6__8S19622C2[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C6__8S19622C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C6__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C6__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C2[4]),  4,6},
  {&(_tg__ZTV8S19622C6__8S19622C2[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C2[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C7__8S19622C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C7__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C7__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7__8S19622C2[4]),  4,6},
  {&(_tg__ZTV8S19622C8__8S19622C2[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C2[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C2[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C2[];
extern  VTBL_ENTRY _ZTV8S19622C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C2[];
static VTBL_ENTRY alt_thunk_names289[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D0Ev,_ZThn240_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19622C11D1Ev,_ZThn240_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D0Ev,_ZThn240_N8S19622C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D0Ev,_ZThn212_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19622C6D1Ev,_ZThn240_N8S19622C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19622C6D1Ev,_ZThn212_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D0Ev,_ZThn136_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19622C6D1Ev,_ZThn136_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D0Ev,_ZThn4_N8S19622C6D0Ev),
  (VTBL_ENTRY)_ZN8S19622C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19622C6D1Ev,_ZThn4_N8S19622C6D1Ev),
  (VTBL_ENTRY)_ZN8S19622C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19622C2D0Ev,_ZThn168_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19622C2D1Ev,_ZThn168_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C2D0Ev,_ZThn36_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19622C2D1Ev,_ZThn36_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19622C2D0Ev,_ZThn272_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19622C2D0Ev,_ZThn244_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19622C2D1Ev,_ZThn272_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19622C2D1Ev,_ZThn244_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C2 = {  "S19622C2", // class name
  bases_S19622C2, 18,
  &(vtc_S19622C2[0]), // expected_vtbl_contents
  &(vtt_S19622C2[0]), // expected_vtt_contents
  ABISELECT(384,284), // object size
  NSPAIRA(_ZTI8S19622C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19622C2),77, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C2),43, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names289,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19622C1  : virtual S19622C2 {
  void *s19622c1f0;
  ~S19622C1(); // tgen
  S19622C1(); // tgen
};
//SIG(1 S19622C1) C1{ VBC2{ BC3{ vd m FL} BC4{ VBC5{ vd m FL} vd Fc[2]} VBC6{ VBC7{ VBC8{ BC9{ BC3 VBC10{ vd m Fi[6]} BC11{ VBC3 vd} FC10} BC12{ BC10 VBC13{ m} VBC14{ m} Fs} VBC11 vd} BC15{ m Fp} BC16{ m FC3[10]} vd Fi} vd}} Fp}


S19622C1 ::~S19622C1(){ note_dtor("S19622C1", this);} // tgen
S19622C1 ::S19622C1(){ note_ctor("S19622C1", this);} // tgen

static void Test_S19622C1()
{
  extern Class_Descriptor cd_S19622C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,73)];
    init_test(&cd_S19622C1, buf);
    S19622C1 *dp, &lv = *(dp=new (buf) S19622C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,288), "sizeof(S19622C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19622C1)");
    /*is_ambiguous_... S19622C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C2*), ABISELECT(16,8), "S19622C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S19622C4*)(S19622C2*), ABISELECT(48,28), "S19622C1");
    check_base_class_offset(lv, (S19622C4*)(S19622C2*), ABISELECT(32,20), "S19622C1");
    /*is_ambiguous_... S19622C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C9*)(S19622C8*), ABISELECT(248,172), "S19622C1");
    check_base_class_offset(lv, (S20760C13*)(S19622C9*)(S19622C8*), ABISELECT(344,248), "S19622C1");
    check_base_class_offset(lv, (S20760C9*)(S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(376,276), "S19622C1");
    /*is_ambiguous_... S19622C1::S19622C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19622C11*), ABISELECT(376,276), "S19622C1");
    check_base_class_offset(lv, (S19622C11*)(S19622C9*)(S19622C8*), ABISELECT(264,184), "S19622C1");
    check_base_class_offset(lv, (S19622C9*)(S19622C8*), ABISELECT(248,172), "S19622C1");
    check_base_class_offset(lv, (S20760C13*)(S19622C12*)(S19622C8*), ABISELECT(304,216), "S19622C1");
    check_base_class_offset(lv, (S4228C37*)(S19622C12*)(S19622C8*), 0, "S19622C1");
    check_base_class_offset(lv, (S4228C27*)(S19622C12*)(S19622C8*), 0, "S19622C1");
    check_base_class_offset(lv, (S19622C12*)(S19622C8*), ABISELECT(304,216), "S19622C1");
    /*is_ambiguous_... S19622C8::S19622C11 */ AMB_check_base_class_offset(lv, (S19622C11*)(S19622C8*), 0, "S19622C1");
    check_base_class_offset(lv, (S19622C8*)(S19622C7*), ABISELECT(248,172), "S19622C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19622C7*), ABISELECT(72,44), "S19622C1");
    check_base_class_offset(lv, (S19115C12*)(S19622C7*), ABISELECT(80,48), "S19622C1");
    check_base_class_offset(lv, (S19622C7*)(S19622C6*), ABISELECT(64,40), "S19622C1");
    check_base_class_offset(lv, (S19622C6*)(S19622C2*), 0, "S19622C1");
    check_base_class_offset(lv, (S19622C2*), ABISELECT(16,8), "S19622C1");
    check_field_offset(lv, s19622c1f0, ABISELECT(8,4), "S19622C1.s19622c1f0");
    test_class_info(&lv, &cd_S19622C1);
    dp->~S19622C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19622C1(Test_S19622C1, "S19622C1", ABISELECT(392,288));

#else // __cplusplus

extern void _ZN8S19622C1C1Ev();
extern void _ZN8S19622C1D1Ev();
Name_Map name_map_S19622C1[] = {
  NSPAIR(_ZN8S19622C1C1Ev),
  NSPAIR(_ZN8S19622C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S19622C4;
extern VTBL_ENTRY _ZTI8S19622C4[];
extern  VTBL_ENTRY _ZTV8S19622C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C9;
extern VTBL_ENTRY _ZTI8S19622C9[];
extern  VTBL_ENTRY _ZTV8S19622C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19622C12;
extern VTBL_ENTRY _ZTI9S19622C12[];
extern  VTBL_ENTRY _ZTV9S19622C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C12[];
extern Class_Descriptor cd_S19622C11;
extern VTBL_ENTRY _ZTI9S19622C11[];
extern  VTBL_ENTRY _ZTV9S19622C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19622C11[];
extern Class_Descriptor cd_S19622C8;
extern VTBL_ENTRY _ZTI8S19622C8[];
extern  VTBL_ENTRY _ZTV8S19622C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19622C7;
extern VTBL_ENTRY _ZTI8S19622C7[];
extern  VTBL_ENTRY _ZTV8S19622C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C7[];
extern Class_Descriptor cd_S19622C6;
extern VTBL_ENTRY _ZTI8S19622C6[];
extern  VTBL_ENTRY _ZTV8S19622C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C6[];
extern Class_Descriptor cd_S19622C2;
extern VTBL_ENTRY _ZTI8S19622C2[];
extern  VTBL_ENTRY _ZTV8S19622C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C2[];
static Base_Class bases_S19622C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    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
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C5_nt,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19622C4,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(248,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(344,248), //bcp->offset
    71, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(376,276), //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19622C11,    ABISELECT(264,184), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19622C9,    ABISELECT(248,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(304,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19622C12,    ABISELECT(304,216), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19622C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19622C8,    ABISELECT(248,172), //bcp->offset
    50, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_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
    16, //immediately_derived
  0, 0},
  {&cd_S19115C12,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19622C7,    ABISELECT(64,40), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19622C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19622C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19622C1[];
extern void ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev)();
extern void _ZN8S19622C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev)();
extern void _ZN8S19622C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19622C1D1Ev,_ZTv0_n48_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C1D1Ev,_ZThn8_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19622C1D0Ev,_ZTv0_n48_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C1D0Ev,_ZThn8_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N8S19622C1D1Ev,_ZTvn12_n48_N8S19622C1D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N8S19622C1D0Ev,_ZTvn12_n48_N8S19622C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19622C1D1Ev,_ZThn28_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19622C1D0Ev,_ZThn28_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19622C1D1Ev,_ZThn40_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19622C1D0Ev,_ZThn40_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C1D1Ev,_ZTv0_n32_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S19622C1D1Ev,_ZThn172_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C1D0Ev,_ZTv0_n32_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S19622C1D0Ev,_ZThn172_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19622C1D1Ev,_ZTvn12_n32_N8S19622C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C1D0Ev,_ZTvn12_n32_N8S19622C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C1D1Ev,_ZTvn44_n32_N8S19622C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C1D0Ev,_ZTvn44_n32_N8S19622C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S19622C1D1Ev,_ZThn248_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S19622C1D0Ev,_ZThn248_N8S19622C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S19622C1D1Ev,_ZThn276_N8S19622C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S19622C1D0Ev,_ZThn276_N8S19622C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19622C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(344,248),
  ABISELECT(248,172),
  ABISELECT(64,40),
  0,
  ABISELECT(376,276),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,268),
  ABISELECT(328,240),
  ABISELECT(232,164),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19622C1D1Ev,_ZTv0_n48_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19622C1D0Ev,_ZTv0_n48_N8S19622C1D0Ev),
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19622C1D1Ev,_ZTvn12_n48_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19622C1D0Ev,_ZTvn12_n48_N8S19622C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-40),
  ABISELECT(312,236),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-172),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C1D1Ev,_ZTv0_n32_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C1D0Ev,_ZTv0_n32_N8S19622C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C1D1Ev,_ZTvn12_n32_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C1D0Ev,_ZTvn12_n32_N8S19622C1D0Ev),
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C1D1Ev,_ZTvn44_n32_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C1D0Ev,_ZTvn44_n32_N8S19622C1D0Ev),
  ABISELECT(-344,-248),
  ABISELECT(-344,-248),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev),
  ABISELECT(-376,-276),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19622C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19622C1[];
extern void _ZN8S19622C2D1Ev();
extern void _ZN8S19622C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C2__8S19622C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,268),
  ABISELECT(328,240),
  ABISELECT(232,164),
  ABISELECT(48,32),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&_ZN8S19622C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C2D0Ev,
};
extern void _ZN8S19622C4D1Ev();
extern void _ZN8S19622C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C48S19622C2__8S19622C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&_ZN8S19622C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19622C48S19622C2__8S19622C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19622C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19622C4__8S19622C2__8S19622C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D1Ev,_ZThn12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C2D0Ev,_ZThn12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19622C2__8S19622C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19622C6__8S19622C2__8S19622C1[] = {
  0,
  0,
  0,
  ABISELECT(344,248),
  ABISELECT(248,172),
  ABISELECT(64,40),
  ABISELECT(16,8),
  ABISELECT(376,276),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C2__8S19622C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-48,-32),
  ABISELECT(312,236),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S19622C2D1Ev,_ZThn164_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S19622C2D0Ev,_ZThn164_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C2__8S19622C1[] = {
  ABISELECT(-232,-164),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-232,-164),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S19622C2D1Ev,_ZThn240_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S19622C2D0Ev,_ZThn240_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C2__8S19622C1[] = {
  ABISELECT(-328,-240),
  ABISELECT(-328,-240),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-248,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D1Ev,_ZTvn12_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C2D0Ev,_ZTvn12_n32_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev)();
extern void ABISELECT(_ZThn360_N8S19622C2D1Ev,_ZThn268_N8S19622C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev)();
extern void ABISELECT(_ZThn360_N8S19622C2D0Ev,_ZThn268_N8S19622C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19622C2__8S19622C1[] = {
  ABISELECT(-360,-268),
  ABISELECT(-360,-268),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C2__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-288,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D1Ev,_ZTvn44_n32_N8S19622C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C2D0Ev,_ZTvn44_n32_N8S19622C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void _ZN8S19622C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void _ZN8S19622C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C6__8S19622C1[] = {
  0,
  0,
  0,
  ABISELECT(344,248),
  ABISELECT(248,172),
  ABISELECT(64,40),
  0,
  ABISELECT(376,276),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19622C6D1Ev,_ZThn40_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19622C6D0Ev,_ZThn40_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C6__8S19622C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-40),
  ABISELECT(312,236),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn248_N8S19622C6D1Ev,_ZThn172_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn248_N8S19622C6D0Ev,_ZThn172_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C6__8S19622C1[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-172),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn344_N8S19622C6D1Ev,_ZThn248_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn344_N8S19622C6D0Ev,_ZThn248_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C6__8S19622C1[] = {
  ABISELECT(-344,-248),
  ABISELECT(-344,-248),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-264,-184),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D1Ev,_ZTvn12_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C6D0Ev,_ZTvn12_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev)();
extern void ABISELECT(_ZThn376_N8S19622C6D1Ev,_ZThn276_N8S19622C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev)();
extern void ABISELECT(_ZThn376_N8S19622C6D0Ev,_ZThn276_N8S19622C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C6__8S19622C1[] = {
  ABISELECT(-376,-276),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  (VTBL_ENTRY)&(_ZTI8S19622C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D1Ev,_ZTvn44_n32_N8S19622C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C6D0Ev,_ZTvn44_n32_N8S19622C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void _ZN8S19622C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
extern void _ZN8S19622C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C7__8S19622C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C7__8S19622C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C7__8S19622C1[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D1Ev,_ZTvn12_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19622C7D0Ev,_ZTvn12_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C7__8S19622C1[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D1Ev,_ZTvn44_n32_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19622C7D0Ev,_ZTvn44_n32_N8S19622C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C7__8S19622C1[] = {
  ABISELECT(64,40),
  ABISELECT(376,276),
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI8S19622C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev),
};
extern void _ZN8S19622C8D1Ev();
extern void _ZN8S19622C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C8__8S19622C1[] = {
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(-248,-172),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&_ZN8S19622C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C8D0Ev,
};
extern void _ZN8S19622C9D1Ev();
extern void _ZN8S19622C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&_ZN8S19622C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19622C9D0Ev,
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D1Ev,_ZThn12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C9D0Ev,_ZThn12_N8S19622C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev),
};
extern void _ZN9S19622C12D1Ev();
extern void _ZN9S19622C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C128S19622C8__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C12[0]),
  (VTBL_ENTRY)&_ZN9S19622C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19622C8__8S19622C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D1Ev,_ZThn12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19622C8D0Ev,_ZThn12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19622C8__8S19622C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C12__8S19622C8__8S19622C1[] = {
  ABISELECT(-304,-216),
  ABISELECT(-304,-216),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D1Ev,_ZThn44_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19622C8D0Ev,_ZThn44_N8S19622C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C8__8S19622C1[] = {
  ABISELECT(248,172),
  ABISELECT(376,276),
  ABISELECT(248,172),
  (VTBL_ENTRY)&(_ZTI8S19622C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D1Ev,_ZTv0_n16_N8S19622C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19622C8D0Ev,_ZTv0_n16_N8S19622C8D0Ev),
};
extern void _ZN9S19622C11D1Ev();
extern void _ZN9S19622C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19622C11__A1__8S19622C1[] = {
  ABISELECT(376,276),
  0,
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&_ZN9S19622C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19622C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev)();
extern void ABISELECT(_ZThn376_N9S19622C11D1Ev,_ZThn276_N9S19622C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev)();
extern void ABISELECT(_ZThn376_N9S19622C11D0Ev,_ZThn276_N9S19622C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19622C11__A1__8S19622C1[] = {
  ABISELECT(-376,-276),
  ABISELECT(-376,-276),
  (VTBL_ENTRY)&(_ZTI9S19622C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev),
};
static  VTT_ENTRY vtt_S19622C1[] = {
  {&(_ZTV8S19622C1[13]),  13,81},
  {&(_ZTV8S19622C1[27]),  27,81},
  {&(_ZTV8S19622C1[32]),  32,81},
  {&(_ZTV8S19622C1[37]),  37,81},
  {&(_ZTV8S19622C1[13]),  13,81},
  {&(_ZTV8S19622C1[48]),  48,81},
  {&(_ZTV8S19622C1[58]),  58,81},
  {&(_ZTV8S19622C1[74]),  74,81},
  {&(_ZTV8S19622C1[63]),  63,81},
  {&(_ZTV8S19622C1[79]),  79,81},
  {&(_ZTV8S19622C1[69]),  69,81},
  {&(_ZTV8S19622C1[13]),  13,81},
  {&(_tg__ZTV8S19622C2__8S19622C1[11]),  11,13},
  {&(_tg__ZTV8S19622C48S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S19622C48S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S19622C4__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV11S20760C5_nt__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S19622C6__8S19622C2__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C2__8S19622C1[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C2__8S19622C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19622C2__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C2__8S19622C1[4]),  4,6},
  {&(_tg__ZTV8S19622C6__8S19622C2__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C6__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C6__8S19622C1[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C6__8S19622C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C6__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C6__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C6__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C6__8S19622C1[4]),  4,6},
  {&(_tg__ZTV8S19622C6__8S19622C1[10]),  10,12},
  {&(_tg__ZTV8S19622C7__8S19622C1[9]),  9,11},
  {&(_tg__ZTV8S19622C8__8S19622C7__8S19622C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19622C7__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C7__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C7__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C7__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C7__8S19622C1[4]),  4,6},
  {&(_tg__ZTV8S19622C8__8S19622C1[7]),  7,9},
  {&(_tg__ZTV8S19622C98S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C118S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C118S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C11__8S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C98S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C128S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C118S19622C9__8S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19622C8__8S19622C1[3]),  3,5},
  {&(_tg__ZTV9S19622C12__8S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C8__8S19622C1[4]),  4,6},
  {&(_tg__ZTV9S19622C11__A1__8S19622C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19622C11__A1__8S19622C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19622C1[];
extern  VTBL_ENTRY _ZTV8S19622C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19622C1[];
static VTBL_ENTRY alt_thunk_names290[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D0Ev,_ZTv0_n12_N8S19622C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D0Ev,_ZThn104_N8S19622C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D0Ev,_ZThn76_N8S19622C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C8D1Ev,_ZTv0_n12_N8S19622C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C8D1Ev,_ZThn104_N8S19622C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C8D1Ev,_ZThn76_N8S19622C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D0Ev,_ZTv0_n12_N8S19622C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D0Ev,_ZThn104_N8S19622C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D0Ev,_ZThn76_N8S19622C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C9D1Ev,_ZTv0_n12_N8S19622C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19622C9D1Ev,_ZThn104_N8S19622C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19622C9D1Ev,_ZThn76_N8S19622C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D0Ev,_ZTv0_n12_N9S19622C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19622C11D0Ev,_ZThn276_N9S19622C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D0Ev,_ZThn92_N9S19622C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19622C11D1Ev,_ZTv0_n12_N9S19622C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19622C11D1Ev,_ZThn276_N9S19622C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19622C11D1Ev,_ZThn92_N9S19622C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D0Ev,_ZTv0_n12_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D0Ev,_ZThn236_N8S19622C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D0Ev,_ZThn208_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C7D1Ev,_ZTv0_n12_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19622C7D1Ev,_ZThn236_N8S19622C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19622C7D1Ev,_ZThn208_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D0Ev,_ZTv0_n32_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D0Ev,_ZThn132_N8S19622C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C7D1Ev,_ZTv0_n32_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19622C7D1Ev,_ZThn132_N8S19622C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D0Ev,_ZTv0_n16_N8S19622C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C7D1Ev,_ZTv0_n16_N8S19622C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19622C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D0Ev,_ZTv0_n12_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C6D0Ev,_ZThn276_N8S19622C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C6D0Ev,_ZThn248_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C6D1Ev,_ZTv0_n12_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C6D1Ev,_ZThn276_N8S19622C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C6D1Ev,_ZThn248_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D0Ev,_ZTv0_n32_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C6D0Ev,_ZThn172_N8S19622C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C6D1Ev,_ZTv0_n32_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C6D1Ev,_ZThn172_N8S19622C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D0Ev,_ZTv0_n16_N8S19622C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C6D0Ev,_ZThn40_N8S19622C6D0Ev),
  (VTBL_ENTRY)_ZN8S19622C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C6D1Ev,_ZTv0_n16_N8S19622C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C6D1Ev,_ZThn40_N8S19622C6D1Ev),
  (VTBL_ENTRY)_ZN8S19622C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D0Ev,_ZTv0_n32_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19622C2D0Ev,_ZThn164_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C2D1Ev,_ZTv0_n32_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19622C2D1Ev,_ZThn164_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D0Ev,_ZTv0_n16_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D0Ev,_ZThn32_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C2D1Ev,_ZTv0_n16_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C2D1Ev,_ZThn32_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D0Ev,_ZTv0_n12_N8S19622C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19622C2D0Ev,_ZThn268_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19622C2D0Ev,_ZThn240_N8S19622C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D0Ev,_ZThn20_N8S19622C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C2D1Ev,_ZTv0_n12_N8S19622C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19622C2D1Ev,_ZThn268_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19622C2D1Ev,_ZThn240_N8S19622C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19622C2D1Ev,_ZThn20_N8S19622C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D0Ev,_ZTv0_n12_N8S19622C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D0Ev,_ZThn8_N8S19622C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C4D1Ev,_ZTv0_n12_N8S19622C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C4D1Ev,_ZThn8_N8S19622C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C1D0Ev,_ZTv0_n32_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C1D0Ev,_ZThn172_N8S19622C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19622C1D1Ev,_ZTv0_n32_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19622C1D1Ev,_ZThn172_N8S19622C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C1D0Ev,_ZTv0_n12_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C1D0Ev,_ZThn276_N8S19622C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C1D0Ev,_ZThn248_N8S19622C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C1D0Ev,_ZThn28_N8S19622C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19622C1D1Ev,_ZTv0_n12_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19622C1D1Ev,_ZThn276_N8S19622C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19622C1D1Ev,_ZThn248_N8S19622C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19622C1D1Ev,_ZThn28_N8S19622C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19622C1D0Ev,_ZTv0_n48_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C1D0Ev,_ZThn8_N8S19622C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19622C1D1Ev,_ZTv0_n48_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19622C1D1Ev,_ZThn8_N8S19622C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C1D0Ev,_ZTv0_n16_N8S19622C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C1D0Ev,_ZThn40_N8S19622C1D0Ev),
  (VTBL_ENTRY)_ZN8S19622C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19622C1D1Ev,_ZTv0_n16_N8S19622C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19622C1D1Ev,_ZThn40_N8S19622C1D1Ev),
  (VTBL_ENTRY)_ZN8S19622C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19622C1 = {  "S19622C1", // class name
  bases_S19622C1, 19,
  &(vtc_S19622C1[0]), // expected_vtbl_contents
  &(vtt_S19622C1[0]), // expected_vtt_contents
  ABISELECT(392,288), // object size
  NSPAIRA(_ZTI8S19622C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19622C1),81, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19622C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names290,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C4  : virtual S20759C5_nt {
  char s19621c4f0[2];
  virtual  ~S19621C4(); // _ZN8S19621C4D2Ev
  S19621C4(); // tgen
};
//SIG(-1 S19621C4) C1{ VBC2{ vd m Fl} vd Fc[2]}


 S19621C4 ::~S19621C4(){ note_dtor("S19621C4", this);}
S19621C4 ::S19621C4(){ note_ctor("S19621C4", this);} // tgen

static void Test_S19621C4()
{
  extern Class_Descriptor cd_S19621C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19621C4, buf);
    S19621C4 *dp, &lv = *(dp=new (buf) S19621C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19621C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C4)");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(16,8), "S19621C4");
    check_field_offset(lv, s19621c4f0, ABISELECT(8,4), "S19621C4.s19621c4f0");
    test_class_info(&lv, &cd_S19621C4);
    dp->~S19621C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C4(Test_S19621C4, "S19621C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19621C4C1Ev();
extern void _ZN8S19621C4D2Ev();
Name_Map name_map_S19621C4[] = {
  NSPAIR(_ZN8S19621C4C1Ev),
  NSPAIR(_ZN8S19621C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S19621C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20759C5_nt,    ABISELECT(16,8), //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 _ZTI8S19621C4[];
extern void _ZN8S19621C4D1Ev();
extern void _ZN8S19621C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C4[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&_ZN8S19621C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C4D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C4[];
static  VTT_ENTRY vtt_S19621C4[] = {
  {&(_ZTV8S19621C4[3]),  3,10},
  {&(_ZTV8S19621C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19621C4[];
extern  VTBL_ENTRY _ZTV8S19621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C4[];
static VTBL_ENTRY alt_thunk_names291[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C4 = {  "S19621C4", // class name
  bases_S19621C4, 1,
  &(vtc_S19621C4[0]), // expected_vtbl_contents
  &(vtt_S19621C4[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19621C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19621C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names291,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C11  : virtual S20760C9 {
  virtual  ~S19621C11(); // _ZN9S19621C11D2Ev
  S19621C11(); // tgen
};
//SIG(-1 S19621C11) C1{ VBC2{ vd m FL} vd}


 S19621C11 ::~S19621C11(){ note_dtor("S19621C11", this);}
S19621C11 ::S19621C11(){ note_ctor("S19621C11", this);} // tgen

static void Test_S19621C11()
{
  extern Class_Descriptor cd_S19621C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19621C11, buf);
    S19621C11 *dp, &lv = *(dp=new (buf) S19621C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19621C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C11)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19621C11");
    test_class_info(&lv, &cd_S19621C11);
    dp->~S19621C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C11(Test_S19621C11, "S19621C11", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19621C11C1Ev();
extern void _ZN9S19621C11D2Ev();
Name_Map name_map_S19621C11[] = {
  NSPAIR(_ZN9S19621C11C1Ev),
  NSPAIR(_ZN9S19621C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19621C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19621C11[];
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S19621C11D1Ev,_ZThn4_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S19621C11D0Ev,_ZThn4_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C11[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S19621C11[];
static  VTT_ENTRY vtt_S19621C11[] = {
  {&(_ZTV9S19621C11[3]),  3,10},
  {&(_ZTV9S19621C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
static VTBL_ENTRY alt_thunk_names292[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19621C11D0Ev,_ZThn4_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19621C11D1Ev,_ZThn4_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C11 = {  "S19621C11", // class name
  bases_S19621C11, 1,
  &(vtc_S19621C11[0]), // expected_vtbl_contents
  &(vtt_S19621C11[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19621C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19621C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19621C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names292,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C9  : S20760C9 , virtual S20760C13 , S19621C11 {
  ::S20760C13 s19621c9f0;
  ~S19621C9(); // tgen
  S19621C9(); // tgen
};
//SIG(-1 S19621C9) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19621C9 ::~S19621C9(){ note_dtor("S19621C9", this);} // tgen
S19621C9 ::S19621C9(){ note_ctor("S19621C9", this);} // tgen

static void Test_S19621C9()
{
  extern Class_Descriptor cd_S19621C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19621C9, buf);
    S19621C9 *dp, &lv = *(dp=new (buf) S19621C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19621C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C9)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19621C9");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19621C9");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(88,72), "S19621C9");
    check_base_class_offset(lv, (S19621C11*), ABISELECT(16,12), "S19621C9");
    check_field_offset(lv, s19621c9f0, ABISELECT(24,16), "S19621C9.s19621c9f0");
    test_class_info(&lv, &cd_S19621C9);
    dp->~S19621C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C9(Test_S19621C9, "S19621C9", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19621C9C1Ev();
extern void _ZN8S19621C9D1Ev();
Name_Map name_map_S19621C9[] = {
  NSPAIR(_ZN8S19621C9C1Ev),
  NSPAIR(_ZN8S19621C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
static Base_Class bases_S19621C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C9[];
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C9D1Ev,_ZThn44_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19621C9D0Ev,_ZThn44_N8S19621C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn88_N8S19621C9D1Ev,_ZThn72_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn88_N8S19621C9D0Ev,_ZThn72_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C9[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C9[];
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C9[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn72_N9S19621C11D1Ev,_ZThn60_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn72_N9S19621C11D0Ev,_ZThn60_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__8S19621C9[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C9[] = {
  {&(_ZTV8S19621C9[4]),  4,21},
  {&(_tg__ZTV9S19621C11__8S19621C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__8S19621C9[3]),  3,5},
  {&(_ZTV8S19621C9[14]),  14,21},
  {&(_ZTV8S19621C9[9]),  9,21},
  {&(_ZTV8S19621C9[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
static VTBL_ENTRY alt_thunk_names293[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19621C11D0Ev,_ZThn60_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19621C11D1Ev,_ZThn60_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19621C9D0Ev,_ZThn72_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C9D0Ev,_ZThn44_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19621C9D1Ev,_ZThn72_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C9D1Ev,_ZThn44_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C9 = {  "S19621C9", // class name
  bases_S19621C9, 4,
  &(vtc_S19621C9[0]), // expected_vtbl_contents
  &(vtt_S19621C9[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19621C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C9),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C9),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names293,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C12  : S20760C13 , virtual S4228C37 , virtual S4228C27 {
  short s19621c12f0;
  ~S19621C12(); // tgen
  S19621C12(); // tgen
};
//SIG(-1 S19621C12) C1{ BC2{ vd m Fi[6]} VBC3{ m} VBC4{ m} Fs}


S19621C12 ::~S19621C12(){ note_dtor("S19621C12", this);} // tgen
S19621C12 ::S19621C12(){ note_ctor("S19621C12", this);} // tgen

static void Test_S19621C12()
{
  extern Class_Descriptor cd_S19621C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19621C12, buf);
    S19621C12 *dp, &lv = *(dp=new (buf) S19621C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S19621C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C12)");
    check_base_class_offset(lv, (S20760C13*), 0, "S19621C12");
    check_base_class_offset(lv, (S4228C37*), 0, "S19621C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S19621C12");
    check_field_offset(lv, s19621c12f0, ABISELECT(32,28), "S19621C12.s19621c12f0");
    test_class_info(&lv, &cd_S19621C12);
    dp->~S19621C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C12(Test_S19621C12, "S19621C12", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN9S19621C12C1Ev();
extern void _ZN9S19621C12D1Ev();
Name_Map name_map_S19621C12[] = {
  NSPAIR(_ZN9S19621C12C1Ev),
  NSPAIR(_ZN9S19621C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S19621C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19621C12[];
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY vtc_S19621C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19621C12[];
static  VTT_ENTRY vtt_S19621C12[] = {
  {&(_ZTV9S19621C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
Class_Descriptor cd_S19621C12 = {  "S19621C12", // class name
  bases_S19621C12, 3,
  &(vtc_S19621C12[0]), // expected_vtbl_contents
  &(vtt_S19621C12[0]), // expected_vtt_contents
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI9S19621C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19621C12),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19621C12),1, //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  S19621C8  : S19621C9 , S19621C12 , virtual S19621C11 {
  virtual  ~S19621C8(); // _ZN8S19621C8D2Ev
  S19621C8(); // tgen
};
//SIG(-1 S19621C8) C1{ BC2{ BC3{ vd m FL} VBC4{ vd m Fi[6]} BC5{ VBC3 vd} FC4} BC6{ BC4 VBC7{ m} VBC8{ m} Fs} VBC5 vd}


 S19621C8 ::~S19621C8(){ note_dtor("S19621C8", this);}
S19621C8 ::S19621C8(){ note_ctor("S19621C8", this);} // tgen

static void Test_S19621C8()
{
  extern Class_Descriptor cd_S19621C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,31)];
    init_test(&cd_S19621C8, buf);
    S19621C8 *dp, &lv = *(dp=new (buf) S19621C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,120), "sizeof(S19621C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C8)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*), 0, "S19621C8");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*), ABISELECT(96,76), "S19621C8");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*), ABISELECT(128,104), "S19621C8");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(128,104), "S19621C8");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*), ABISELECT(16,12), "S19621C8");
    check_base_class_offset(lv, (S19621C9*), 0, "S19621C8");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*), ABISELECT(56,44), "S19621C8");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*), 0, "S19621C8");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*), 0, "S19621C8");
    check_base_class_offset(lv, (S19621C12*), ABISELECT(56,44), "S19621C8");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*), ABISELECT(144,116), "S19621C8");
    test_class_info(&lv, &cd_S19621C8);
    dp->~S19621C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C8(Test_S19621C8, "S19621C8", ABISELECT(152,120));

#else // __cplusplus

extern void _ZN8S19621C8C1Ev();
extern void _ZN8S19621C8D2Ev();
Name_Map name_map_S19621C8[] = {
  NSPAIR(_ZN8S19621C8C1Ev),
  NSPAIR(_ZN8S19621C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
static Base_Class bases_S19621C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20760C13,    ABISELECT(96,76), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(128,104), //bcp->offset
    25, //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_S19621C11,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19621C9,    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_S20760C13,    ABISELECT(56,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19621C12,    ABISELECT(56,44), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19621C11,    ABISELECT(144,116), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C8[];
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19621C8D1Ev,_ZThn116_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn144_N8S19621C8D0Ev,_ZThn116_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C8[] = {
  ABISELECT(144,116),
  0,
  0,
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
  ABISELECT(-144,-116),
  ABISELECT(-16,-12),
  ABISELECT(-144,-116),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C8[];
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C9__8S19621C8[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C9__8S19621C8[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C9__8S19621C8[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C9__8S19621C8[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C9__8S19621C8[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C8[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C8[] = {
  {&(_ZTV8S19621C8[7]),  7,36},
  {&(_tg__ZTV8S19621C9__8S19621C8[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C9__8S19621C8[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8[4]),  4,6},
  {&(_ZTV8S19621C8[23]),  23,36},
  {&(_ZTV8S19621C8[12]),  12,36},
  {&(_ZTV8S19621C8[28]),  28,36},
  {&(_ZTV8S19621C8[18]),  18,36},
  {&(_ZTV8S19621C8[34]),  34,36},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
static VTBL_ENTRY alt_thunk_names294[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19621C8D0Ev,_ZThn116_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19621C8D1Ev,_ZThn116_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C8 = {  "S19621C8", // class name
  bases_S19621C8, 10,
  &(vtc_S19621C8[0]), // expected_vtbl_contents
  &(vtt_S19621C8[0]), // expected_vtt_contents
  ABISELECT(152,120), // object size
  NSPAIRA(_ZTI8S19621C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C8),36, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C8),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names294,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C7  : virtual S19621C8 , S4161C4_nt , S19115C12 {
  int s19621c7f0;
  virtual  ~S19621C7(); // _ZN8S19621C7D2Ev
  S19621C7(); // tgen
};
//SIG(-1 S19621C7) C1{ VBC2{ BC3{ BC4{ vd m FL} VBC5{ vd m Fi[6]} BC6{ VBC4 vd} FC5} BC7{ BC5 VBC8{ m} VBC9{ m} Fs} VBC6 vd} BC10{ m Fp} BC11{ m FC4[10]} vd Fi}


 S19621C7 ::~S19621C7(){ note_dtor("S19621C7", this);}
S19621C7 ::S19621C7(){ note_ctor("S19621C7", this);} // tgen

static void Test_S19621C7()
{
  extern Class_Descriptor cd_S19621C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S19621C7, buf);
    S19621C7 *dp, &lv = *(dp=new (buf) S19621C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S19621C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C7)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(184,132), "S19621C7");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(280,208), "S19621C7");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(312,236), "S19621C7");
    /*is_ambiguous_... S19621C7::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(312,236), "S19621C7");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(200,144), "S19621C7");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(184,132), "S19621C7");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(240,176), "S19621C7");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C7");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C7");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(240,176), "S19621C7");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), 0, "S19621C7");
    check_base_class_offset(lv, (S19621C8*), ABISELECT(184,132), "S19621C7");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(8,4), "S19621C7");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(16,8), "S19621C7");
    check_field_offset(lv, s19621c7f0, ABISELECT(176,128), "S19621C7.s19621c7f0");
    test_class_info(&lv, &cd_S19621C7);
    dp->~S19621C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C7(Test_S19621C7, "S19621C7", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN8S19621C7C1Ev();
extern void _ZN8S19621C7D2Ev();
Name_Map name_map_S19621C7[] = {
  NSPAIR(_ZN8S19621C7C1Ev),
  NSPAIR(_ZN8S19621C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
static Base_Class bases_S19621C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(184,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(280,208), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(312,236), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(200,144), //bcp->offset
    21, //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
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(184,132), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(240,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19621C12,    ABISELECT(240,176), //bcp->offset
    26, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19621C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(184,132), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4161C4_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_S19115C12,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C7[];
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C7[] = {
  0,
  0,
  0,
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C7[];
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7[] = {
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(-184,-132),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C7[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C7[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C7[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C7[] = {
  ABISELECT(-240,-176),
  ABISELECT(-240,-176),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C7[] = {
  ABISELECT(184,132),
  ABISELECT(312,236),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7[] = {
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn312_N9S19621C11D1Ev,_ZThn236_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn312_N9S19621C11D0Ev,_ZThn236_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C7[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C7[] = {
  {&(_ZTV8S19621C7[9]),  9,42},
  {&(_ZTV8S19621C7[19]),  19,42},
  {&(_ZTV8S19621C7[35]),  35,42},
  {&(_ZTV8S19621C7[24]),  24,42},
  {&(_ZTV8S19621C7[40]),  40,42},
  {&(_ZTV8S19621C7[30]),  30,42},
  {&(_ZTV8S19621C7[9]),  9,42},
  {&(_tg__ZTV8S19621C8__8S19621C7[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C7[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C7[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C7[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
static VTBL_ENTRY alt_thunk_names295[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19621C11D0Ev,_ZThn236_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19621C11D1Ev,_ZThn236_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C7 = {  "S19621C7", // class name
  bases_S19621C7, 13,
  &(vtc_S19621C7[0]), // expected_vtbl_contents
  &(vtt_S19621C7[0]), // expected_vtt_contents
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI8S19621C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C7),42, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C7),22, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names295,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C6  : virtual S19621C7 {
  virtual  ~S19621C6(); // _ZN8S19621C6D2Ev
  S19621C6(); // tgen
};
//SIG(-1 S19621C6) C1{ VBC2{ VBC3{ BC4{ BC5{ vd m FL} VBC6{ vd m Fi[6]} BC7{ VBC5 vd} FC6} BC8{ BC6 VBC9{ m} VBC10{ m} Fs} VBC7 vd} BC11{ m Fp} BC12{ m FC5[10]} vd Fi} vd}


 S19621C6 ::~S19621C6(){ note_dtor("S19621C6", this);}
S19621C6 ::S19621C6(){ note_ctor("S19621C6", this);} // tgen

static void Test_S19621C6()
{
  extern Class_Descriptor cd_S19621C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,64)];
    init_test(&cd_S19621C6, buf);
    S19621C6 *dp, &lv = *(dp=new (buf) S19621C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,252), "sizeof(S19621C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C6)");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(192,136), "S19621C6");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(288,212), "S19621C6");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(320,240), "S19621C6");
    /*is_ambiguous_... S19621C6::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(320,240), "S19621C6");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(208,148), "S19621C6");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(192,136), "S19621C6");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(248,180), "S19621C6");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C6");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C6");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(248,180), "S19621C6");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), 0, "S19621C6");
    check_base_class_offset(lv, (S19621C8*)(S19621C7*), ABISELECT(192,136), "S19621C6");
    check_base_class_offset(lv, (S4161C4_nt*)(S19621C7*), ABISELECT(16,8), "S19621C6");
    check_base_class_offset(lv, (S19115C12*)(S19621C7*), ABISELECT(24,12), "S19621C6");
    check_base_class_offset(lv, (S19621C7*), ABISELECT(8,4), "S19621C6");
    test_class_info(&lv, &cd_S19621C6);
    dp->~S19621C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C6(Test_S19621C6, "S19621C6", ABISELECT(336,252));

#else // __cplusplus

extern void _ZN8S19621C6C1Ev();
extern void _ZN8S19621C6D2Ev();
Name_Map name_map_S19621C6[] = {
  NSPAIR(_ZN8S19621C6C1Ev),
  NSPAIR(_ZN8S19621C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19621C7;
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
static Base_Class bases_S19621C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(192,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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(288,212), //bcp->offset
    44, //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
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(320,240), //bcp->offset
    49, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(208,148), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(192,136), //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
    6, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(248,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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19621C12,    ABISELECT(248,180), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19621C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(192,136), //bcp->offset
    23, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S4161C4_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
    13, //immediately_derived
  0, 0},
  {&cd_S19115C12,    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
    13, //immediately_derived
  0, 0},
  {&cd_S19621C7,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C6[];
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void _ZN8S19621C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void _ZN8S19621C6D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C6[] = {
  0,
  0,
  0,
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev),
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev),
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C6[];
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C6[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7__8S19621C6[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C7__8S19621C6[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C6[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C7__8S19621C6[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7__8S19621C6[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C6[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C6[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C6[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C6[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C6[] = {
  ABISELECT(-248,-180),
  ABISELECT(-248,-180),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C6[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C6[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C6[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C6[] = {
  {&(_ZTV8S19621C6[10]),  10,54},
  {&(_ZTV8S19621C6[21]),  21,54},
  {&(_ZTV8S19621C6[31]),  31,54},
  {&(_ZTV8S19621C6[47]),  47,54},
  {&(_ZTV8S19621C6[36]),  36,54},
  {&(_ZTV8S19621C6[52]),  52,54},
  {&(_ZTV8S19621C6[42]),  42,54},
  {&(_ZTV8S19621C6[10]),  10,54},
  {&(_tg__ZTV8S19621C7__8S19621C6[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C7__8S19621C6[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C7__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C7__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7__8S19621C6[4]),  4,6},
  {&(_tg__ZTV8S19621C8__8S19621C6[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C6[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C6[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C6[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C6[];
extern  VTBL_ENTRY _ZTV8S19621C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C6[];
static VTBL_ENTRY alt_thunk_names296[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev),
  (VTBL_ENTRY)_ZN8S19621C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev),
  (VTBL_ENTRY)_ZN8S19621C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C6 = {  "S19621C6", // class name
  bases_S19621C6, 14,
  &(vtc_S19621C6[0]), // expected_vtbl_contents
  &(vtt_S19621C6[0]), // expected_vtt_contents
  ABISELECT(336,252), // object size
  NSPAIRA(_ZTI8S19621C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19621C6),54, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C6),30, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names296,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C2  : S20760C9 , S19621C4 , virtual S19621C6 {
  ~S19621C2(); // tgen
  S19621C2(); // tgen
};
//SIG(-1 S19621C2) C1{ BC2{ vd m FL} BC3{ VBC4{ vd m Fl} vd Fc[2]} VBC5{ VBC6{ VBC7{ BC8{ BC2 VBC9{ vd m Fi[6]} BC10{ VBC2 vd} FC9} BC11{ BC9 VBC12{ m} VBC13{ m} Fs} VBC10 vd} BC14{ m Fp} BC15{ m FC2[10]} vd Fi} vd}}


S19621C2 ::~S19621C2(){ note_dtor("S19621C2", this);} // tgen
S19621C2 ::S19621C2(){ note_ctor("S19621C2", this);} // tgen

static void Test_S19621C2()
{
  extern Class_Descriptor cd_S19621C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(49,71)];
    init_test(&cd_S19621C2, buf);
    S19621C2 *dp, &lv = *(dp=new (buf) S19621C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(384,280), "sizeof(S19621C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C2)");
    /*is_ambiguous_... S19621C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19621C2");
    check_base_class_offset(lv, (S20759C5_nt*)(S19621C4*), ABISELECT(32,20), "S19621C2");
    check_base_class_offset(lv, (S19621C4*), ABISELECT(16,12), "S19621C2");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(240,164), "S19621C2");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(336,240), "S19621C2");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(368,268), "S19621C2");
    /*is_ambiguous_... S19621C2::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(368,268), "S19621C2");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(256,176), "S19621C2");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(240,164), "S19621C2");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(296,208), "S19621C2");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C2");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C2");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(296,208), "S19621C2");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), ABISELECT(48,28), "S19621C2");
    check_base_class_offset(lv, (S19621C8*)(S19621C7*), ABISELECT(240,164), "S19621C2");
    check_base_class_offset(lv, (S4161C4_nt*)(S19621C7*), ABISELECT(64,36), "S19621C2");
    check_base_class_offset(lv, (S19115C12*)(S19621C7*), ABISELECT(72,40), "S19621C2");
    check_base_class_offset(lv, (S19621C7*)(S19621C6*), ABISELECT(56,32), "S19621C2");
    check_base_class_offset(lv, (S19621C6*), ABISELECT(48,28), "S19621C2");
    test_class_info(&lv, &cd_S19621C2);
    dp->~S19621C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C2(Test_S19621C2, "S19621C2", ABISELECT(384,280));

#else // __cplusplus

extern void _ZN8S19621C2C1Ev();
extern void _ZN8S19621C2D1Ev();
Name_Map name_map_S19621C2[] = {
  NSPAIR(_ZN8S19621C2C1Ev),
  NSPAIR(_ZN8S19621C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S19621C4;
extern VTBL_ENTRY _ZTI8S19621C4[];
extern  VTBL_ENTRY _ZTV8S19621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19621C7;
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
extern Class_Descriptor cd_S19621C6;
extern VTBL_ENTRY _ZTI8S19621C6[];
extern  VTBL_ENTRY _ZTV8S19621C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C6[];
static Base_Class bases_S19621C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20759C5_nt,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19621C4,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C9,    ABISELECT(240,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(336,240), //bcp->offset
    67, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(368,268), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(256,176), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(240,164), //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
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(296,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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(296,208), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19621C11,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(240,164), //bcp->offset
    46, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S19115C12,    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_S19621C7,    ABISELECT(56,32), //bcp->offset
    35, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19621C6,    ABISELECT(48,28), //bcp->offset
    23, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C2[];
extern void _ZN8S19621C2D1Ev();
extern void _ZN8S19621C2D0Ev();
extern void ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C2D1Ev,_ZThn32_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn56_N8S19621C2D0Ev,_ZThn32_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn240_N8S19621C2D1Ev,_ZThn164_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn240_N8S19621C2D0Ev,_ZThn164_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S19621C2D1Ev,_ZThn240_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S19621C2D0Ev,_ZThn240_N8S19621C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S19621C2D1Ev,_ZThn268_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S19621C2D0Ev,_ZThn268_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C2[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(368,268),
  ABISELECT(336,240),
  ABISELECT(240,164),
  ABISELECT(56,32),
  ABISELECT(48,28),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&_ZN8S19621C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C2D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  ABISELECT(-48,-28),
  ABISELECT(320,240),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-56,-32),
  ABISELECT(312,236),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
  ABISELECT(-240,-164),
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-240,-164),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev),
  ABISELECT(112,92),
  ABISELECT(-256,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev),
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev),
  ABISELECT(-336,-240),
  ABISELECT(-336,-240),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
  ABISELECT(-368,-268),
  ABISELECT(-368,-268),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C2[];
extern void _ZN8S19621C4D1Ev();
extern void _ZN8S19621C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C4__8S19621C2[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&_ZN8S19621C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19621C4__8S19621C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void _ZN8S19621C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void _ZN8S19621C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C6__8S19621C2[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  ABISELECT(288,212),
  ABISELECT(192,136),
  ABISELECT(8,4),
  0,
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C6__8S19621C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-8,-4),
  ABISELECT(312,236),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C6__8S19621C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C6__8S19621C2[] = {
  ABISELECT(-288,-212),
  ABISELECT(-288,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-208,-148),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C6__8S19621C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-248,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7__8S19621C2[] = {
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C7__8S19621C2[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C7__8S19621C2[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7__8S19621C2[] = {
  ABISELECT(8,4),
  ABISELECT(320,240),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C2[] = {
  ABISELECT(-192,-136),
  ABISELECT(-240,-164),
  ABISELECT(-240,-164),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C2[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C2[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C2[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C2[] = {
  ABISELECT(-296,-208),
  ABISELECT(-296,-208),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C2[] = {
  ABISELECT(192,136),
  ABISELECT(320,240),
  ABISELECT(192,136),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C2[] = {
  ABISELECT(320,240),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C2[] = {
  ABISELECT(-320,-240),
  ABISELECT(-320,-240),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C2[] = {
  {&(_ZTV8S19621C2[11]),  11,77},
  {&(_tg__ZTV8S19621C4__8S19621C2[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S19621C4__8S19621C2[3]),  3,5},
  {&(_ZTV8S19621C2[16]),  16,77},
  {&(_ZTV8S19621C2[21]),  21,77},
  {&(_ZTV8S19621C2[33]),  33,77},
  {&(_ZTV8S19621C2[44]),  44,77},
  {&(_ZTV8S19621C2[54]),  54,77},
  {&(_ZTV8S19621C2[70]),  70,77},
  {&(_ZTV8S19621C2[59]),  59,77},
  {&(_ZTV8S19621C2[75]),  75,77},
  {&(_ZTV8S19621C2[65]),  65,77},
  {&(_ZTV8S19621C2[33]),  33,77},
  {&(_tg__ZTV8S19621C6__8S19621C2[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C6__8S19621C2[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C6__8S19621C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C6__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C6__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C2[4]),  4,6},
  {&(_tg__ZTV8S19621C6__8S19621C2[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C2[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C7__8S19621C2[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C7__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C7__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7__8S19621C2[4]),  4,6},
  {&(_tg__ZTV8S19621C8__8S19621C2[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C2[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C2[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C2[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C2[];
extern  VTBL_ENTRY _ZTV8S19621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C2[];
static VTBL_ENTRY alt_thunk_names297[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D0Ev,_ZThn240_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19621C11D1Ev,_ZThn240_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D0Ev,_ZThn240_N8S19621C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D0Ev,_ZThn212_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19621C6D1Ev,_ZThn240_N8S19621C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19621C6D1Ev,_ZThn212_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D0Ev,_ZThn136_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19621C6D1Ev,_ZThn136_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D0Ev,_ZThn4_N8S19621C6D0Ev),
  (VTBL_ENTRY)_ZN8S19621C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19621C6D1Ev,_ZThn4_N8S19621C6D1Ev),
  (VTBL_ENTRY)_ZN8S19621C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19621C2D0Ev,_ZThn164_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19621C2D1Ev,_ZThn164_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C2D0Ev,_ZThn32_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19621C2D1Ev,_ZThn32_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19621C2D0Ev,_ZThn268_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19621C2D0Ev,_ZThn240_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19621C2D1Ev,_ZThn268_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S19621C2D1Ev,_ZThn240_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C2 = {  "S19621C2", // class name
  bases_S19621C2, 18,
  &(vtc_S19621C2[0]), // expected_vtbl_contents
  &(vtt_S19621C2[0]), // expected_vtt_contents
  ABISELECT(384,280), // object size
  NSPAIRA(_ZTI8S19621C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19621C2),77, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C2),43, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names297,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19621C1  : virtual S19621C2 {
  void *s19621c1f0;
  ~S19621C1(); // tgen
  S19621C1(); // tgen
};
//SIG(1 S19621C1) C1{ VBC2{ BC3{ vd m FL} BC4{ VBC5{ vd m Fl} vd Fc[2]} VBC6{ VBC7{ VBC8{ BC9{ BC3 VBC10{ vd m Fi[6]} BC11{ VBC3 vd} FC10} BC12{ BC10 VBC13{ m} VBC14{ m} Fs} VBC11 vd} BC15{ m Fp} BC16{ m FC3[10]} vd Fi} vd}} Fp}


S19621C1 ::~S19621C1(){ note_dtor("S19621C1", this);} // tgen
S19621C1 ::S19621C1(){ note_ctor("S19621C1", this);} // tgen

static void Test_S19621C1()
{
  extern Class_Descriptor cd_S19621C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,72)];
    init_test(&cd_S19621C1, buf);
    S19621C1 *dp, &lv = *(dp=new (buf) S19621C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,284), "sizeof(S19621C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19621C1)");
    /*is_ambiguous_... S19621C2::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C2*), ABISELECT(16,8), "S19621C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S19621C4*)(S19621C2*), ABISELECT(48,28), "S19621C1");
    check_base_class_offset(lv, (S19621C4*)(S19621C2*), ABISELECT(32,20), "S19621C1");
    /*is_ambiguous_... S19621C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C9*)(S19621C8*), ABISELECT(248,168), "S19621C1");
    check_base_class_offset(lv, (S20760C13*)(S19621C9*)(S19621C8*), ABISELECT(344,244), "S19621C1");
    check_base_class_offset(lv, (S20760C9*)(S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(376,272), "S19621C1");
    /*is_ambiguous_... S19621C1::S19621C11 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19621C11*), ABISELECT(376,272), "S19621C1");
    check_base_class_offset(lv, (S19621C11*)(S19621C9*)(S19621C8*), ABISELECT(264,180), "S19621C1");
    check_base_class_offset(lv, (S19621C9*)(S19621C8*), ABISELECT(248,168), "S19621C1");
    check_base_class_offset(lv, (S20760C13*)(S19621C12*)(S19621C8*), ABISELECT(304,212), "S19621C1");
    check_base_class_offset(lv, (S4228C37*)(S19621C12*)(S19621C8*), 0, "S19621C1");
    check_base_class_offset(lv, (S4228C27*)(S19621C12*)(S19621C8*), 0, "S19621C1");
    check_base_class_offset(lv, (S19621C12*)(S19621C8*), ABISELECT(304,212), "S19621C1");
    /*is_ambiguous_... S19621C8::S19621C11 */ AMB_check_base_class_offset(lv, (S19621C11*)(S19621C8*), 0, "S19621C1");
    check_base_class_offset(lv, (S19621C8*)(S19621C7*), ABISELECT(248,168), "S19621C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19621C7*), ABISELECT(72,40), "S19621C1");
    check_base_class_offset(lv, (S19115C12*)(S19621C7*), ABISELECT(80,44), "S19621C1");
    check_base_class_offset(lv, (S19621C7*)(S19621C6*), ABISELECT(64,36), "S19621C1");
    check_base_class_offset(lv, (S19621C6*)(S19621C2*), 0, "S19621C1");
    check_base_class_offset(lv, (S19621C2*), ABISELECT(16,8), "S19621C1");
    check_field_offset(lv, s19621c1f0, ABISELECT(8,4), "S19621C1.s19621c1f0");
    test_class_info(&lv, &cd_S19621C1);
    dp->~S19621C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19621C1(Test_S19621C1, "S19621C1", ABISELECT(392,284));

#else // __cplusplus

extern void _ZN8S19621C1C1Ev();
extern void _ZN8S19621C1D1Ev();
Name_Map name_map_S19621C1[] = {
  NSPAIR(_ZN8S19621C1C1Ev),
  NSPAIR(_ZN8S19621C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S19621C4;
extern VTBL_ENTRY _ZTI8S19621C4[];
extern  VTBL_ENTRY _ZTV8S19621C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C9;
extern VTBL_ENTRY _ZTI8S19621C9[];
extern  VTBL_ENTRY _ZTV8S19621C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19621C12;
extern VTBL_ENTRY _ZTI9S19621C12[];
extern  VTBL_ENTRY _ZTV9S19621C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C12[];
extern Class_Descriptor cd_S19621C11;
extern VTBL_ENTRY _ZTI9S19621C11[];
extern  VTBL_ENTRY _ZTV9S19621C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19621C11[];
extern Class_Descriptor cd_S19621C8;
extern VTBL_ENTRY _ZTI8S19621C8[];
extern  VTBL_ENTRY _ZTV8S19621C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C8[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S19621C7;
extern VTBL_ENTRY _ZTI8S19621C7[];
extern  VTBL_ENTRY _ZTV8S19621C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C7[];
extern Class_Descriptor cd_S19621C6;
extern VTBL_ENTRY _ZTI8S19621C6[];
extern  VTBL_ENTRY _ZTV8S19621C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C6[];
extern Class_Descriptor cd_S19621C2;
extern VTBL_ENTRY _ZTI8S19621C2[];
extern  VTBL_ENTRY _ZTV8S19621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C2[];
static Base_Class bases_S19621C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    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
    13, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20759C5_nt,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19621C4,    ABISELECT(32,20), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(248,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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(344,244), //bcp->offset
    71, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(376,272), //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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19621C11,    ABISELECT(264,180), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19621C9,    ABISELECT(248,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20760C13,    ABISELECT(304,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
    8, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19621C12,    ABISELECT(304,212), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19621C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19621C8,    ABISELECT(248,168), //bcp->offset
    50, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4161C4_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_S19115C12,    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_S19621C7,    ABISELECT(64,36), //bcp->offset
    39, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19621C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19621C2,    ABISELECT(16,8), //bcp->offset
    15, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19621C1[];
extern void ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev)();
extern void _ZN8S19621C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev)();
extern void _ZN8S19621C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19621C1D1Ev,_ZTv0_n48_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C1D1Ev,_ZThn8_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19621C1D0Ev,_ZTv0_n48_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C1D0Ev,_ZThn8_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n96_N8S19621C1D1Ev,_ZTvn12_n48_N8S19621C1D1Ev)();
extern void ABISELECT(_ZTvn16_n96_N8S19621C1D0Ev,_ZTvn12_n48_N8S19621C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19621C1D1Ev,_ZThn28_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19621C1D0Ev,_ZThn28_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19621C1D1Ev,_ZThn36_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19621C1D0Ev,_ZThn36_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C1D1Ev,_ZTv0_n32_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn248_N8S19621C1D1Ev,_ZThn168_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C1D0Ev,_ZTv0_n32_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn248_N8S19621C1D0Ev,_ZThn168_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n64_N8S19621C1D1Ev,_ZTvn12_n32_N8S19621C1D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C1D0Ev,_ZTvn12_n32_N8S19621C1D0Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C1D1Ev,_ZTvn44_n32_N8S19621C1D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C1D0Ev,_ZTvn44_n32_N8S19621C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S19621C1D1Ev,_ZThn244_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S19621C1D0Ev,_ZThn244_N8S19621C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S19621C1D1Ev,_ZThn272_N8S19621C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S19621C1D0Ev,_ZThn272_N8S19621C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19621C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  0,
  0,
  0,
  ABISELECT(344,244),
  ABISELECT(248,168),
  ABISELECT(64,36),
  0,
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,264),
  ABISELECT(328,236),
  ABISELECT(232,160),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19621C1D1Ev,_ZTv0_n48_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19621C1D0Ev,_ZTv0_n48_N8S19621C1D0Ev),
  ABISELECT(16,8),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19621C1D1Ev,_ZTvn12_n48_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n96_N8S19621C1D0Ev,_ZTvn12_n48_N8S19621C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-36),
  ABISELECT(312,236),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C1D1Ev,_ZTv0_n32_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C1D0Ev,_ZTv0_n32_N8S19621C1D0Ev),
  ABISELECT(112,92),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C1D1Ev,_ZTvn12_n32_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C1D0Ev,_ZTvn12_n32_N8S19621C1D0Ev),
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C1D1Ev,_ZTvn44_n32_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C1D0Ev,_ZTvn44_n32_N8S19621C1D0Ev),
  ABISELECT(-344,-244),
  ABISELECT(-344,-244),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev),
  ABISELECT(-376,-272),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI8S19621C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19621C1[];
extern void _ZN8S19621C2D1Ev();
extern void _ZN8S19621C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C2__8S19621C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(360,264),
  ABISELECT(328,236),
  ABISELECT(232,160),
  ABISELECT(48,28),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&_ZN8S19621C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C2D0Ev,
};
extern void _ZN8S19621C4D1Ev();
extern void _ZN8S19621C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C48S19621C2__8S19621C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&_ZN8S19621C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19621C48S19621C2__8S19621C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19621C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19621C4__8S19621C2__8S19621C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D1Ev,_ZThn12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C2D0Ev,_ZThn12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19621C2__8S19621C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19621C6__8S19621C2__8S19621C1[] = {
  0,
  0,
  0,
  ABISELECT(344,244),
  ABISELECT(248,168),
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(376,272),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C2__8S19621C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-48,-28),
  ABISELECT(312,236),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn232_N8S19621C2D1Ev,_ZThn160_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn232_N8S19621C2D0Ev,_ZThn160_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C2__8S19621C1[] = {
  ABISELECT(-232,-160),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn328_N8S19621C2D1Ev,_ZThn236_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn328_N8S19621C2D0Ev,_ZThn236_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C2__8S19621C1[] = {
  ABISELECT(-328,-236),
  ABISELECT(-328,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-248,-172),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D1Ev,_ZTvn12_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C2D0Ev,_ZTvn12_n32_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev)();
extern void ABISELECT(_ZThn360_N8S19621C2D1Ev,_ZThn264_N8S19621C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev)();
extern void ABISELECT(_ZThn360_N8S19621C2D0Ev,_ZThn264_N8S19621C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19621C2__8S19621C1[] = {
  ABISELECT(-360,-264),
  ABISELECT(-360,-264),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C2__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-288,-204),
  (VTBL_ENTRY)&(_ZTI8S19621C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D1Ev,_ZTvn44_n32_N8S19621C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C2D0Ev,_ZTvn44_n32_N8S19621C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void _ZN8S19621C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void _ZN8S19621C6D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C6__8S19621C1[] = {
  0,
  0,
  0,
  ABISELECT(344,244),
  ABISELECT(248,168),
  ABISELECT(64,36),
  0,
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn64_N8S19621C6D1Ev,_ZThn36_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn64_N8S19621C6D0Ev,_ZThn36_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C6__8S19621C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  ABISELECT(-64,-36),
  ABISELECT(312,236),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn248_N8S19621C6D1Ev,_ZThn168_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn248_N8S19621C6D0Ev,_ZThn168_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C6__8S19621C1[] = {
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-248,-168),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn344_N8S19621C6D1Ev,_ZThn244_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn344_N8S19621C6D0Ev,_ZThn244_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C6__8S19621C1[] = {
  ABISELECT(-344,-244),
  ABISELECT(-344,-244),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-264,-180),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D1Ev,_ZTvn12_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C6D0Ev,_ZTvn12_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev)();
extern void ABISELECT(_ZThn376_N8S19621C6D1Ev,_ZThn272_N8S19621C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev)();
extern void ABISELECT(_ZThn376_N8S19621C6D0Ev,_ZThn272_N8S19621C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C6__8S19621C1[] = {
  ABISELECT(-376,-272),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  (VTBL_ENTRY)&(_ZTI8S19621C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D1Ev,_ZTvn44_n32_N8S19621C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C6D0Ev,_ZTvn44_n32_N8S19621C6D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void _ZN8S19621C7D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
extern void _ZN8S19621C7D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C7__8S19621C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(280,208),
  ABISELECT(184,132),
  0,
  ABISELECT(312,236),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C7__8S19621C1[] = {
  ABISELECT(-184,-132),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  ABISELECT(-184,-132),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C7__8S19621C1[] = {
  ABISELECT(-280,-208),
  ABISELECT(-280,-208),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-200,-144),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D1Ev,_ZTvn12_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n64_N8S19621C7D0Ev,_ZTvn12_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C7__8S19621C1[] = {
  ABISELECT(-312,-236),
  ABISELECT(-312,-236),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-240,-176),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D1Ev,_ZTvn44_n32_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n64_N8S19621C7D0Ev,_ZTvn44_n32_N8S19621C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C7__8S19621C1[] = {
  ABISELECT(64,36),
  ABISELECT(376,272),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S19621C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev),
};
extern void _ZN8S19621C8D1Ev();
extern void _ZN8S19621C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C8__8S19621C1[] = {
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(-248,-168),
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&_ZN8S19621C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C8D0Ev,
};
extern void _ZN8S19621C9D1Ev();
extern void _ZN8S19621C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(128,104),
  ABISELECT(96,76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&_ZN8S19621C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19621C9D0Ev,
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(112,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(-112,-92),
  ABISELECT(-112,-92),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D1Ev,_ZThn12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C9D0Ev,_ZThn12_N8S19621C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev),
};
extern void _ZN9S19621C12D1Ev();
extern void _ZN9S19621C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C128S19621C8__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C12[0]),
  (VTBL_ENTRY)&_ZN9S19621C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C12D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19621C8__8S19621C1[] = {
  ABISELECT(-96,-76),
  ABISELECT(-96,-76),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C1[] = {
  ABISELECT(112,92),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D1Ev,_ZThn12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19621C8D0Ev,_ZThn12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19621C8__8S19621C1[] = {
  ABISELECT(-128,-104),
  ABISELECT(-128,-104),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C12__8S19621C8__8S19621C1[] = {
  ABISELECT(-304,-212),
  ABISELECT(-304,-212),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D1Ev,_ZThn44_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19621C8D0Ev,_ZThn44_N8S19621C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C8__8S19621C1[] = {
  ABISELECT(248,168),
  ABISELECT(376,272),
  ABISELECT(248,168),
  (VTBL_ENTRY)&(_ZTI8S19621C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D1Ev,_ZTv0_n16_N8S19621C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19621C8D0Ev,_ZTv0_n16_N8S19621C8D0Ev),
};
extern void _ZN9S19621C11D1Ev();
extern void _ZN9S19621C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19621C11__A1__8S19621C1[] = {
  ABISELECT(376,272),
  0,
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&_ZN9S19621C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19621C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev)();
extern void ABISELECT(_ZThn376_N9S19621C11D1Ev,_ZThn272_N9S19621C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev)();
extern void ABISELECT(_ZThn376_N9S19621C11D0Ev,_ZThn272_N9S19621C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__9S19621C11__A1__8S19621C1[] = {
  ABISELECT(-376,-272),
  ABISELECT(-376,-272),
  (VTBL_ENTRY)&(_ZTI9S19621C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev),
};
static  VTT_ENTRY vtt_S19621C1[] = {
  {&(_ZTV8S19621C1[13]),  13,81},
  {&(_ZTV8S19621C1[27]),  27,81},
  {&(_ZTV8S19621C1[32]),  32,81},
  {&(_ZTV8S19621C1[37]),  37,81},
  {&(_ZTV8S19621C1[13]),  13,81},
  {&(_ZTV8S19621C1[48]),  48,81},
  {&(_ZTV8S19621C1[58]),  58,81},
  {&(_ZTV8S19621C1[74]),  74,81},
  {&(_ZTV8S19621C1[63]),  63,81},
  {&(_ZTV8S19621C1[79]),  79,81},
  {&(_ZTV8S19621C1[69]),  69,81},
  {&(_ZTV8S19621C1[13]),  13,81},
  {&(_tg__ZTV8S19621C2__8S19621C1[11]),  11,13},
  {&(_tg__ZTV8S19621C48S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S19621C48S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S19621C4__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV11S20759C5_nt__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S19621C6__8S19621C2__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C2__8S19621C1[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C2__8S19621C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19621C2__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C2__8S19621C1[4]),  4,6},
  {&(_tg__ZTV8S19621C6__8S19621C2__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C6__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C6__8S19621C1[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C6__8S19621C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C6__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C6__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C6__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C6__8S19621C1[4]),  4,6},
  {&(_tg__ZTV8S19621C6__8S19621C1[10]),  10,12},
  {&(_tg__ZTV8S19621C7__8S19621C1[9]),  9,11},
  {&(_tg__ZTV8S19621C8__8S19621C7__8S19621C1[8]),  8,10},
  {&(_tg__ZTV9S20760C13__8S19621C7__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C7__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C7__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C7__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C7__8S19621C1[4]),  4,6},
  {&(_tg__ZTV8S19621C8__8S19621C1[7]),  7,9},
  {&(_tg__ZTV8S19621C98S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C118S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C118S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C11__8S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C98S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C128S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S20760C13__8S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C118S19621C9__8S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19621C8__8S19621C1[3]),  3,5},
  {&(_tg__ZTV9S19621C12__8S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C8__8S19621C1[4]),  4,6},
  {&(_tg__ZTV9S19621C11__A1__8S19621C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__9S19621C11__A1__8S19621C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19621C1[];
extern  VTBL_ENTRY _ZTV8S19621C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19621C1[];
static VTBL_ENTRY alt_thunk_names298[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D0Ev,_ZTv0_n12_N8S19621C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D0Ev,_ZThn104_N8S19621C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D0Ev,_ZThn76_N8S19621C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C8D1Ev,_ZTv0_n12_N8S19621C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C8D1Ev,_ZThn104_N8S19621C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C8D1Ev,_ZThn76_N8S19621C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D0Ev,_ZTv0_n12_N8S19621C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D0Ev,_ZThn104_N8S19621C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D0Ev,_ZThn76_N8S19621C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C9D1Ev,_ZTv0_n12_N8S19621C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19621C9D1Ev,_ZThn104_N8S19621C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19621C9D1Ev,_ZThn76_N8S19621C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D0Ev,_ZTv0_n12_N9S19621C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19621C11D0Ev,_ZThn272_N9S19621C11D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D0Ev,_ZThn92_N9S19621C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19621C11D1Ev,_ZTv0_n12_N9S19621C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N9S19621C11D1Ev,_ZThn272_N9S19621C11D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19621C11D1Ev,_ZThn92_N9S19621C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D0Ev,_ZTv0_n12_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D0Ev,_ZThn236_N8S19621C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D0Ev,_ZThn208_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C7D1Ev,_ZTv0_n12_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S19621C7D1Ev,_ZThn236_N8S19621C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S19621C7D1Ev,_ZThn208_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D0Ev,_ZTv0_n32_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D0Ev,_ZThn132_N8S19621C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C7D1Ev,_ZTv0_n32_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N8S19621C7D1Ev,_ZThn132_N8S19621C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D0Ev,_ZTv0_n16_N8S19621C7D0Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C7D1Ev,_ZTv0_n16_N8S19621C7D1Ev), // 
  (VTBL_ENTRY)_ZN8S19621C7D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D0Ev,_ZTv0_n12_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C6D0Ev,_ZThn272_N8S19621C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C6D0Ev,_ZThn244_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C6D1Ev,_ZTv0_n12_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C6D1Ev,_ZThn272_N8S19621C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C6D1Ev,_ZThn244_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D0Ev,_ZTv0_n32_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C6D0Ev,_ZThn168_N8S19621C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C6D1Ev,_ZTv0_n32_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C6D1Ev,_ZThn168_N8S19621C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D0Ev,_ZTv0_n16_N8S19621C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C6D0Ev,_ZThn36_N8S19621C6D0Ev),
  (VTBL_ENTRY)_ZN8S19621C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C6D1Ev,_ZTv0_n16_N8S19621C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C6D1Ev,_ZThn36_N8S19621C6D1Ev),
  (VTBL_ENTRY)_ZN8S19621C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D0Ev,_ZTv0_n32_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19621C2D0Ev,_ZThn160_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C2D1Ev,_ZTv0_n32_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19621C2D1Ev,_ZThn160_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D0Ev,_ZTv0_n16_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D0Ev,_ZThn28_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C2D1Ev,_ZTv0_n16_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C2D1Ev,_ZThn28_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D0Ev,_ZTv0_n12_N8S19621C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19621C2D0Ev,_ZThn264_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19621C2D0Ev,_ZThn236_N8S19621C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D0Ev,_ZThn20_N8S19621C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C2D1Ev,_ZTv0_n12_N8S19621C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn360_N8S19621C2D1Ev,_ZThn264_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn328_N8S19621C2D1Ev,_ZThn236_N8S19621C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19621C2D1Ev,_ZThn20_N8S19621C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D0Ev,_ZTv0_n12_N8S19621C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D0Ev,_ZThn8_N8S19621C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C4D1Ev,_ZTv0_n12_N8S19621C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C4D1Ev,_ZThn8_N8S19621C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C1D0Ev,_ZTv0_n32_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C1D0Ev,_ZThn168_N8S19621C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19621C1D1Ev,_ZTv0_n32_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19621C1D1Ev,_ZThn168_N8S19621C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C1D0Ev,_ZTv0_n12_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C1D0Ev,_ZThn272_N8S19621C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C1D0Ev,_ZThn244_N8S19621C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C1D0Ev,_ZThn28_N8S19621C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19621C1D1Ev,_ZTv0_n12_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19621C1D1Ev,_ZThn272_N8S19621C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn344_N8S19621C1D1Ev,_ZThn244_N8S19621C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19621C1D1Ev,_ZThn28_N8S19621C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19621C1D0Ev,_ZTv0_n48_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C1D0Ev,_ZThn8_N8S19621C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19621C1D1Ev,_ZTv0_n48_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19621C1D1Ev,_ZThn8_N8S19621C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C1D0Ev,_ZTv0_n16_N8S19621C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C1D0Ev,_ZThn36_N8S19621C1D0Ev),
  (VTBL_ENTRY)_ZN8S19621C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19621C1D1Ev,_ZTv0_n16_N8S19621C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19621C1D1Ev,_ZThn36_N8S19621C1D1Ev),
  (VTBL_ENTRY)_ZN8S19621C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19621C1 = {  "S19621C1", // class name
  bases_S19621C1, 19,
  &(vtc_S19621C1[0]), // expected_vtbl_contents
  &(vtt_S19621C1[0]), // expected_vtt_contents
  ABISELECT(392,284), // object size
  NSPAIRA(_ZTI8S19621C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19621C1),81, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19621C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names298,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10205C2  {
  char s10205c2f0;
  int s10205c2f1;
  void *s10205c2f2[3];
  char s10205c2f3[3];
  ::S4228C19_nt s10205c2f4;
  char s10205c2f5;
  void *s10205c2f6;
  int s10205c2f7[2];
  virtual  ~S10205C2(); // _ZN8S10205C2D1Ev
  virtual void  v8(); // _ZN8S10205C22v8Ev
  virtual void  v9(); // _ZN8S10205C22v9Ev
  virtual void  v10(); // _ZN8S10205C23v10Ev
  virtual void  v11(); // _ZN8S10205C23v11Ev
  virtual void  v12(); // _ZN8S10205C23v12Ev
  virtual void  v13(); // _ZN8S10205C23v13Ev
  virtual void  v14(); // _ZN8S10205C23v14Ev
  virtual void  v15(); // _ZN8S10205C23v15Ev
  virtual void  v16(); // _ZN8S10205C23v16Ev
  virtual void  v17(); // _ZN8S10205C23v17Ev
  virtual void  v18(); // _ZN8S10205C23v18Ev
  virtual void  v19(); // _ZN8S10205C23v19Ev
  virtual void  v20(); // _ZN8S10205C23v20Ev
  virtual void  v21(); // _ZN8S10205C23v21Ev
  S10205C2(); // tgen
};
//SIG(-1 S10205C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S10205C2 ::~S10205C2(){ note_dtor("S10205C2", this);}
void  S10205C2 ::v8(){vfunc_called(this, "_ZN8S10205C22v8Ev");}
void  S10205C2 ::v9(){vfunc_called(this, "_ZN8S10205C22v9Ev");}
void  S10205C2 ::v10(){vfunc_called(this, "_ZN8S10205C23v10Ev");}
void  S10205C2 ::v11(){vfunc_called(this, "_ZN8S10205C23v11Ev");}
void  S10205C2 ::v12(){vfunc_called(this, "_ZN8S10205C23v12Ev");}
void  S10205C2 ::v13(){vfunc_called(this, "_ZN8S10205C23v13Ev");}
void  S10205C2 ::v14(){vfunc_called(this, "_ZN8S10205C23v14Ev");}
void  S10205C2 ::v15(){vfunc_called(this, "_ZN8S10205C23v15Ev");}
void  S10205C2 ::v16(){vfunc_called(this, "_ZN8S10205C23v16Ev");}
void  S10205C2 ::v17(){vfunc_called(this, "_ZN8S10205C23v17Ev");}
void  S10205C2 ::v18(){vfunc_called(this, "_ZN8S10205C23v18Ev");}
void  S10205C2 ::v19(){vfunc_called(this, "_ZN8S10205C23v19Ev");}
void  S10205C2 ::v20(){vfunc_called(this, "_ZN8S10205C23v20Ev");}
void  S10205C2 ::v21(){vfunc_called(this, "_ZN8S10205C23v21Ev");}
S10205C2 ::S10205C2(){ note_ctor("S10205C2", this);} // tgen

static void Test_S10205C2()
{
  extern Class_Descriptor cd_S10205C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S10205C2, buf);
    S10205C2 *dp, &lv = *(dp=new (buf) S10205C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S10205C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10205C2)");
    check_field_offset(lv, s10205c2f0, ABISELECT(8,4), "S10205C2.s10205c2f0");
    check_field_offset(lv, s10205c2f1, ABISELECT(12,8), "S10205C2.s10205c2f1");
    check_field_offset(lv, s10205c2f2, ABISELECT(16,12), "S10205C2.s10205c2f2");
    check_field_offset(lv, s10205c2f3, ABISELECT(40,24), "S10205C2.s10205c2f3");
    check_field_offset(lv, s10205c2f4, ABISELECT(48,28), "S10205C2.s10205c2f4");
    check_field_offset(lv, s10205c2f5, ABISELECT(64,40), "S10205C2.s10205c2f5");
    check_field_offset(lv, s10205c2f6, ABISELECT(72,44), "S10205C2.s10205c2f6");
    check_field_offset(lv, s10205c2f7, ABISELECT(80,48), "S10205C2.s10205c2f7");
    test_class_info(&lv, &cd_S10205C2);
    dp->~S10205C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10205C2(Test_S10205C2, "S10205C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S10205C2C1Ev();
extern void _ZN8S10205C2D1Ev();
Name_Map name_map_S10205C2[] = {
  NSPAIR(_ZN8S10205C2C1Ev),
  NSPAIR(_ZN8S10205C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10205C2[];
extern void _ZN8S10205C2D1Ev();
extern void _ZN8S10205C2D0Ev();
extern void _ZN8S10205C22v8Ev();
extern void _ZN8S10205C22v9Ev();
extern void _ZN8S10205C23v10Ev();
extern void _ZN8S10205C23v11Ev();
extern void _ZN8S10205C23v12Ev();
extern void _ZN8S10205C23v13Ev();
extern void _ZN8S10205C23v14Ev();
extern void _ZN8S10205C23v15Ev();
extern void _ZN8S10205C23v16Ev();
extern void _ZN8S10205C23v17Ev();
extern void _ZN8S10205C23v18Ev();
extern void _ZN8S10205C23v19Ev();
extern void _ZN8S10205C23v20Ev();
extern void _ZN8S10205C23v21Ev();
static  VTBL_ENTRY vtc_S10205C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10205C2[0]),
  (VTBL_ENTRY)&_ZN8S10205C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10205C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S10205C2[];
extern  VTBL_ENTRY _ZTV8S10205C2[];
Class_Descriptor cd_S10205C2 = {  "S10205C2", // class name
  0,0,//no base classes
  &(vtc_S10205C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S10205C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10205C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10205C1  : S10205C2 {
  ::S4228C24 s10205c1f0;
  char s10205c1f1[2];
  virtual  ~S10205C1(); // _ZN8S10205C1D1Ev
  virtual void  v1(); // _ZN8S10205C12v1Ev
  virtual void  v2(); // _ZN8S10205C12v2Ev
  virtual void  v3(); // _ZN8S10205C12v3Ev
  virtual void  v4(); // _ZN8S10205C12v4Ev
  virtual void  v5(); // _ZN8S10205C12v5Ev
  virtual void  v6(); // _ZN8S10205C12v6Ev
  virtual void  v7(); // _ZN8S10205C12v7Ev
  S10205C1(); // tgen
};
//SIG(1 S10205C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 FC5{ BC6{ m Fp Fi FC7{ m} FC8{ m}}} Fc[2]}


 S10205C1 ::~S10205C1(){ note_dtor("S10205C1", this);}
void  S10205C1 ::v1(){vfunc_called(this, "_ZN8S10205C12v1Ev");}
void  S10205C1 ::v2(){vfunc_called(this, "_ZN8S10205C12v2Ev");}
void  S10205C1 ::v3(){vfunc_called(this, "_ZN8S10205C12v3Ev");}
void  S10205C1 ::v4(){vfunc_called(this, "_ZN8S10205C12v4Ev");}
void  S10205C1 ::v5(){vfunc_called(this, "_ZN8S10205C12v5Ev");}
void  S10205C1 ::v6(){vfunc_called(this, "_ZN8S10205C12v6Ev");}
void  S10205C1 ::v7(){vfunc_called(this, "_ZN8S10205C12v7Ev");}
S10205C1 ::S10205C1(){ note_ctor("S10205C1", this);} // tgen

static void Test_S10205C1()
{
  extern Class_Descriptor cd_S10205C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S10205C1, buf);
    S10205C1 *dp, &lv = *(dp=new (buf) S10205C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S10205C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10205C1)");
    check_base_class_offset(lv, (S10205C2*), 0, "S10205C1");
    check_field_offset(lv, s10205c1f0, ABISELECT(88,56), "S10205C1.s10205c1f0");
    check_field_offset(lv, s10205c1f1, ABISELECT(104,68), "S10205C1.s10205c1f1");
    test_class_info(&lv, &cd_S10205C1);
    dp->~S10205C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10205C1(Test_S10205C1, "S10205C1", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S10205C1C1Ev();
extern void _ZN8S10205C1D1Ev();
Name_Map name_map_S10205C1[] = {
  NSPAIR(_ZN8S10205C1C1Ev),
  NSPAIR(_ZN8S10205C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10205C2;
extern VTBL_ENTRY _ZTI8S10205C2[];
extern  VTBL_ENTRY _ZTV8S10205C2[];
static Base_Class bases_S10205C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10205C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10205C1[];
extern void _ZN8S10205C1D1Ev();
extern void _ZN8S10205C1D0Ev();
extern void _ZN8S10205C22v8Ev();
extern void _ZN8S10205C22v9Ev();
extern void _ZN8S10205C23v10Ev();
extern void _ZN8S10205C23v11Ev();
extern void _ZN8S10205C23v12Ev();
extern void _ZN8S10205C23v13Ev();
extern void _ZN8S10205C23v14Ev();
extern void _ZN8S10205C23v15Ev();
extern void _ZN8S10205C23v16Ev();
extern void _ZN8S10205C23v17Ev();
extern void _ZN8S10205C23v18Ev();
extern void _ZN8S10205C23v19Ev();
extern void _ZN8S10205C23v20Ev();
extern void _ZN8S10205C23v21Ev();
extern void _ZN8S10205C12v1Ev();
extern void _ZN8S10205C12v2Ev();
extern void _ZN8S10205C12v3Ev();
extern void _ZN8S10205C12v4Ev();
extern void _ZN8S10205C12v5Ev();
extern void _ZN8S10205C12v6Ev();
extern void _ZN8S10205C12v7Ev();
static  VTBL_ENTRY vtc_S10205C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10205C1[0]),
  (VTBL_ENTRY)&_ZN8S10205C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10205C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10205C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10205C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10205C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10205C1[];
extern  VTBL_ENTRY _ZTV8S10205C1[];
Class_Descriptor cd_S10205C1 = {  "S10205C1", // class name
  bases_S10205C1, 1,
  &(vtc_S10205C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S10205C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10205C1),25, //virtual function table var
  2, // 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  S6994C2  {
  short s6994c2f0;
  int s6994c2f1;
  virtual void  v6(); // _ZN7S6994C22v6Ev
  virtual void  v7(); // _ZN7S6994C22v7Ev
  virtual void  v8(); // _ZN7S6994C22v8Ev
  ~S6994C2(); // tgen
  S6994C2(); // tgen
};
//SIG(-1 S6994C2) C1{ v1 v2 v3 Fs Fi}


void  S6994C2 ::v6(){vfunc_called(this, "_ZN7S6994C22v6Ev");}
void  S6994C2 ::v7(){vfunc_called(this, "_ZN7S6994C22v7Ev");}
void  S6994C2 ::v8(){vfunc_called(this, "_ZN7S6994C22v8Ev");}
S6994C2 ::~S6994C2(){ note_dtor("S6994C2", this);} // tgen
S6994C2 ::S6994C2(){ note_ctor("S6994C2", this);} // tgen

static void Test_S6994C2()
{
  extern Class_Descriptor cd_S6994C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6994C2, buf);
    S6994C2 *dp, &lv = *(dp=new (buf) S6994C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6994C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6994C2)");
    check_field_offset(lv, s6994c2f0, ABISELECT(8,4), "S6994C2.s6994c2f0");
    check_field_offset(lv, s6994c2f1, ABISELECT(12,8), "S6994C2.s6994c2f1");
    test_class_info(&lv, &cd_S6994C2);
    dp->~S6994C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C2(Test_S6994C2, "S6994C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6994C2C1Ev();
extern void _ZN7S6994C2D1Ev();
Name_Map name_map_S6994C2[] = {
  NSPAIR(_ZN7S6994C2C1Ev),
  NSPAIR(_ZN7S6994C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6994C2[];
extern void _ZN7S6994C22v6Ev();
extern void _ZN7S6994C22v7Ev();
extern void _ZN7S6994C22v8Ev();
static  VTBL_ENTRY vtc_S6994C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C2[0]),
  (VTBL_ENTRY)&_ZN7S6994C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6994C2[];
extern  VTBL_ENTRY _ZTV7S6994C2[];
Class_Descriptor cd_S6994C2 = {  "S6994C2", // class name
  0,0,//no base classes
  &(vtc_S6994C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6994C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6994C2),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  S6994C4  {
  __tsi64 s6994c4f0;
  virtual void  v9(); // _ZN7S6994C42v9Ev
  virtual void  v10(); // _ZN7S6994C43v10Ev
  virtual void  v11(); // _ZN7S6994C43v11Ev
  ~S6994C4(); // tgen
  S6994C4(); // tgen
};
//SIG(-1 S6994C4) C1{ v1 v2 v3 FL}


void  S6994C4 ::v9(){vfunc_called(this, "_ZN7S6994C42v9Ev");}
void  S6994C4 ::v10(){vfunc_called(this, "_ZN7S6994C43v10Ev");}
void  S6994C4 ::v11(){vfunc_called(this, "_ZN7S6994C43v11Ev");}
S6994C4 ::~S6994C4(){ note_dtor("S6994C4", this);} // tgen
S6994C4 ::S6994C4(){ note_ctor("S6994C4", this);} // tgen

static void Test_S6994C4()
{
  extern Class_Descriptor cd_S6994C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6994C4, buf);
    S6994C4 *dp, &lv = *(dp=new (buf) S6994C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6994C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6994C4)");
    check_field_offset(lv, s6994c4f0, ABISELECT(8,4), "S6994C4.s6994c4f0");
    test_class_info(&lv, &cd_S6994C4);
    dp->~S6994C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C4(Test_S6994C4, "S6994C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6994C4C1Ev();
extern void _ZN7S6994C4D1Ev();
Name_Map name_map_S6994C4[] = {
  NSPAIR(_ZN7S6994C4C1Ev),
  NSPAIR(_ZN7S6994C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6994C4[];
extern void _ZN7S6994C42v9Ev();
extern void _ZN7S6994C43v10Ev();
extern void _ZN7S6994C43v11Ev();
static  VTBL_ENTRY vtc_S6994C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C4[0]),
  (VTBL_ENTRY)&_ZN7S6994C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S6994C4[];
extern  VTBL_ENTRY _ZTV7S6994C4[];
Class_Descriptor cd_S6994C4 = {  "S6994C4", // class name
  0,0,//no base classes
  &(vtc_S6994C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6994C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6994C4),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  S6994C3  : S6994C4 {
  __tsi64 s6994c3f0;
  virtual void  v12(); // _ZN7S6994C33v12Ev
  virtual void  v13(); // _ZN7S6994C33v13Ev
  virtual void  v14(); // _ZN7S6994C33v14Ev
  virtual void  v15(); // _ZN7S6994C33v15Ev
  virtual void  v16(); // _ZN7S6994C33v16Ev
  ~S6994C3(); // tgen
  S6994C3(); // tgen
};
//SIG(-1 S6994C3) C1{ BC2{ v6 v7 v8 FL} v1 v2 v3 v4 v5 FL}


void  S6994C3 ::v12(){vfunc_called(this, "_ZN7S6994C33v12Ev");}
void  S6994C3 ::v13(){vfunc_called(this, "_ZN7S6994C33v13Ev");}
void  S6994C3 ::v14(){vfunc_called(this, "_ZN7S6994C33v14Ev");}
void  S6994C3 ::v15(){vfunc_called(this, "_ZN7S6994C33v15Ev");}
void  S6994C3 ::v16(){vfunc_called(this, "_ZN7S6994C33v16Ev");}
S6994C3 ::~S6994C3(){ note_dtor("S6994C3", this);} // tgen
S6994C3 ::S6994C3(){ note_ctor("S6994C3", this);} // tgen

static void Test_S6994C3()
{
  extern Class_Descriptor cd_S6994C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S6994C3, buf);
    S6994C3 *dp, &lv = *(dp=new (buf) S6994C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S6994C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6994C3)");
    check_base_class_offset(lv, (S6994C4*), 0, "S6994C3");
    check_field_offset(lv, s6994c3f0, ABISELECT(16,12), "S6994C3.s6994c3f0");
    test_class_info(&lv, &cd_S6994C3);
    dp->~S6994C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C3(Test_S6994C3, "S6994C3", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN7S6994C3C1Ev();
extern void _ZN7S6994C3D1Ev();
Name_Map name_map_S6994C3[] = {
  NSPAIR(_ZN7S6994C3C1Ev),
  NSPAIR(_ZN7S6994C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6994C4;
extern VTBL_ENTRY _ZTI7S6994C4[];
extern  VTBL_ENTRY _ZTV7S6994C4[];
static Base_Class bases_S6994C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6994C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6994C3[];
extern void _ZN7S6994C42v9Ev();
extern void _ZN7S6994C43v10Ev();
extern void _ZN7S6994C43v11Ev();
extern void _ZN7S6994C33v12Ev();
extern void _ZN7S6994C33v13Ev();
extern void _ZN7S6994C33v14Ev();
extern void _ZN7S6994C33v15Ev();
extern void _ZN7S6994C33v16Ev();
static  VTBL_ENTRY vtc_S6994C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C3[0]),
  (VTBL_ENTRY)&_ZN7S6994C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v16Ev,
};
extern VTBL_ENTRY _ZTI7S6994C3[];
extern  VTBL_ENTRY _ZTV7S6994C3[];
Class_Descriptor cd_S6994C3 = {  "S6994C3", // class name
  bases_S6994C3, 1,
  &(vtc_S6994C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S6994C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6994C3),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  S6994C1  : S6994C2 , virtual S6994C3 {
  ::S19951C8 s6994c1f0;
  int s6994c1f1;
  short s6994c1f2;
  virtual void  v1(); // _ZN7S6994C12v1Ev
  virtual void  v2(); // _ZN7S6994C12v2Ev
  virtual void  v3(); // _ZN7S6994C12v3Ev
  virtual void  v4(); // _ZN7S6994C12v4Ev
  virtual void  v5(); // _ZN7S6994C12v5Ev
  ~S6994C1(); // tgen
  S6994C1(); // tgen
};
//SIG(1 S6994C1) C1{ BC2{ v6 v7 v8 Fs Fi} VBC3{ BC4{ v9 v10 v11 FL} v12 v13 v14 v15 v16 FL} v1 v2 v3 v4 v5 FC5{ BC6{ v19 v20 v21 FL} BC7{ v22 v23 v24 v25 v26 FD[5]} VBC8{ BC6 v27 v28 v29 v30 v31 v32} VBC9{ BC6 v33 v34 v35 v36 v37 FL} v17 v18} Fi Fs}


void  S6994C1 ::v1(){vfunc_called(this, "_ZN7S6994C12v1Ev");}
void  S6994C1 ::v2(){vfunc_called(this, "_ZN7S6994C12v2Ev");}
void  S6994C1 ::v3(){vfunc_called(this, "_ZN7S6994C12v3Ev");}
void  S6994C1 ::v4(){vfunc_called(this, "_ZN7S6994C12v4Ev");}
void  S6994C1 ::v5(){vfunc_called(this, "_ZN7S6994C12v5Ev");}
S6994C1 ::~S6994C1(){ note_dtor("S6994C1", this);} // tgen
S6994C1 ::S6994C1(){ note_ctor("S6994C1", this);} // tgen

static void Test_S6994C1()
{
  extern Class_Descriptor cd_S6994C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,38)];
    init_test(&cd_S6994C1, buf);
    S6994C1 *dp, &lv = *(dp=new (buf) S6994C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,148), "sizeof(S6994C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6994C1)");
    check_base_class_offset(lv, (S6994C2*), 0, "S6994C1");
    check_base_class_offset(lv, (S6994C4*)(S6994C3*), ABISELECT(184,128), "S6994C1");
    check_base_class_offset(lv, (S6994C3*), ABISELECT(184,128), "S6994C1");
    check_field_offset(lv, s6994c1f0, ABISELECT(16,12), "S6994C1.s6994c1f0");
    check_field_offset(lv, s6994c1f1, ABISELECT(176,120), "S6994C1.s6994c1f1");
    check_field_offset(lv, s6994c1f2, ABISELECT(180,124), "S6994C1.s6994c1f2");
    test_class_info(&lv, &cd_S6994C1);
    dp->~S6994C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6994C1(Test_S6994C1, "S6994C1", ABISELECT(208,148));

#else // __cplusplus

extern void _ZN7S6994C1C1Ev();
extern void _ZN7S6994C1D1Ev();
Name_Map name_map_S6994C1[] = {
  NSPAIR(_ZN7S6994C1C1Ev),
  NSPAIR(_ZN7S6994C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6994C2;
extern VTBL_ENTRY _ZTI7S6994C2[];
extern  VTBL_ENTRY _ZTV7S6994C2[];
extern Class_Descriptor cd_S6994C4;
extern VTBL_ENTRY _ZTI7S6994C4[];
extern  VTBL_ENTRY _ZTV7S6994C4[];
extern Class_Descriptor cd_S6994C3;
extern VTBL_ENTRY _ZTI7S6994C3[];
extern  VTBL_ENTRY _ZTV7S6994C3[];
static Base_Class bases_S6994C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6994C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6994C4,    ABISELECT(184,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6994C3,    ABISELECT(184,128), //bcp->offset
    11, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6994C1[];
extern void _ZN7S6994C22v6Ev();
extern void _ZN7S6994C22v7Ev();
extern void _ZN7S6994C22v8Ev();
extern void _ZN7S6994C12v1Ev();
extern void _ZN7S6994C12v2Ev();
extern void _ZN7S6994C12v3Ev();
extern void _ZN7S6994C12v4Ev();
extern void _ZN7S6994C12v5Ev();
extern void _ZN7S6994C42v9Ev();
extern void _ZN7S6994C43v10Ev();
extern void _ZN7S6994C43v11Ev();
extern void _ZN7S6994C33v12Ev();
extern void _ZN7S6994C33v13Ev();
extern void _ZN7S6994C33v14Ev();
extern void _ZN7S6994C33v15Ev();
extern void _ZN7S6994C33v16Ev();
static  VTBL_ENTRY vtc_S6994C1[] = {
  ABISELECT(184,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S6994C1[0]),
  (VTBL_ENTRY)&_ZN7S6994C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6994C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v4Ev,
  (VTBL_ENTRY)&_ZN7S6994C12v5Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-184,-128),
  (VTBL_ENTRY)&(_ZTI7S6994C1[0]),
  (VTBL_ENTRY)&_ZN7S6994C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6994C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6994C33v16Ev,
};
extern VTBL_ENTRY _ZTV7S6994C1[];
static  VTT_ENTRY vtt_S6994C1[] = {
  {&(_ZTV7S6994C1[3]),  3,29},
  {&(_ZTV7S6994C1[21]),  21,29},
};
extern VTBL_ENTRY _ZTI7S6994C1[];
extern  VTBL_ENTRY _ZTV7S6994C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6994C1[];
Class_Descriptor cd_S6994C1 = {  "S6994C1", // class name
  bases_S6994C1, 3,
  &(vtc_S6994C1[0]), // expected_vtbl_contents
  &(vtt_S6994C1[0]), // expected_vtt_contents
  ABISELECT(208,148), // object size
  NSPAIRA(_ZTI7S6994C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6994C1),29, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6994C1),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C8  : virtual S20760C9 {
  virtual  ~S19849C8(); // _ZN8S19849C8D2Ev
  S19849C8(); // tgen
};
//SIG(-1 S19849C8) C1{ VBC2{ vd m FL} vd}


 S19849C8 ::~S19849C8(){ note_dtor("S19849C8", this);}
S19849C8 ::S19849C8(){ note_ctor("S19849C8", this);} // tgen

static void Test_S19849C8()
{
  extern Class_Descriptor cd_S19849C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19849C8, buf);
    S19849C8 *dp, &lv = *(dp=new (buf) S19849C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19849C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19849C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19849C8");
    test_class_info(&lv, &cd_S19849C8);
    dp->~S19849C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C8(Test_S19849C8, "S19849C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19849C8C1Ev();
extern void _ZN8S19849C8D2Ev();
Name_Map name_map_S19849C8[] = {
  NSPAIR(_ZN8S19849C8C1Ev),
  NSPAIR(_ZN8S19849C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19849C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C8[];
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19849C8D1Ev,_ZThn4_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn8_N8S19849C8D0Ev,_ZThn4_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C8[];
static  VTT_ENTRY vtt_S19849C8[] = {
  {&(_ZTV8S19849C8[3]),  3,10},
  {&(_ZTV8S19849C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
static VTBL_ENTRY alt_thunk_names299[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19849C8D0Ev,_ZThn4_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19849C8D1Ev,_ZThn4_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C8 = {  "S19849C8", // class name
  bases_S19849C8, 1,
  &(vtc_S19849C8[0]), // expected_vtbl_contents
  &(vtt_S19849C8[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19849C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19849C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names299,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C6  : S20760C9 , virtual S20760C13 , S19849C8 {
  ::S20760C13 s19849c6f0;
  ~S19849C6(); // tgen
  S19849C6(); // tgen
};
//SIG(-1 S19849C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19849C6 ::~S19849C6(){ note_dtor("S19849C6", this);} // tgen
S19849C6 ::S19849C6(){ note_ctor("S19849C6", this);} // tgen

static void Test_S19849C6()
{
  extern Class_Descriptor cd_S19849C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19849C6, buf);
    S19849C6 *dp, &lv = *(dp=new (buf) S19849C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19849C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19849C6)");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19849C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19849C6");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(88,72), "S19849C6");
    check_base_class_offset(lv, (S19849C8*), ABISELECT(16,12), "S19849C6");
    check_field_offset(lv, s19849c6f0, ABISELECT(24,16), "S19849C6.s19849c6f0");
    test_class_info(&lv, &cd_S19849C6);
    dp->~S19849C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C6(Test_S19849C6, "S19849C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19849C6C1Ev();
extern void _ZN8S19849C6D1Ev();
Name_Map name_map_S19849C6[] = {
  NSPAIR(_ZN8S19849C6C1Ev),
  NSPAIR(_ZN8S19849C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
static Base_Class bases_S19849C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C6[];
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S19849C6D1Ev,_ZThn72_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S19849C6D0Ev,_ZThn72_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C6[];
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S19849C8D1Ev,_ZThn60_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S19849C8D0Ev,_ZThn60_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__8S19849C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C6[] = {
  {&(_ZTV8S19849C6[4]),  4,21},
  {&(_tg__ZTV8S19849C8__8S19849C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__8S19849C6[3]),  3,5},
  {&(_ZTV8S19849C6[14]),  14,21},
  {&(_ZTV8S19849C6[9]),  9,21},
  {&(_ZTV8S19849C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
static VTBL_ENTRY alt_thunk_names300[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19849C8D0Ev,_ZThn60_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19849C8D1Ev,_ZThn60_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19849C6D0Ev,_ZThn72_N8S19849C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19849C6D1Ev,_ZThn72_N8S19849C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C6 = {  "S19849C6", // class name
  bases_S19849C6, 4,
  &(vtc_S19849C6[0]), // expected_vtbl_contents
  &(vtt_S19849C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19849C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19849C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names300,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C4  : virtual S20760C13 , virtual S19849C6 {
  long double s19849c4f0;
  ~S19849C4(); // tgen
  S19849C4(); // tgen
};
//SIG(-1 S19849C4) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S19849C4 ::~S19849C4(){ note_dtor("S19849C4", this);} // tgen
S19849C4 ::S19849C4(){ note_ctor("S19849C4", this);} // tgen

static void Test_S19849C4()
{
  extern Class_Descriptor cd_S19849C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S19849C4, buf);
    S19849C4 *dp, &lv = *(dp=new (buf) S19849C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S19849C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C4)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S19849C4");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(32,16), "S19849C4");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(64,44), "S19849C4");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(120,88), "S19849C4");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(80,56), "S19849C4");
    check_base_class_offset(lv, (S19849C6*), ABISELECT(64,44), "S19849C4");
    check_field_offset(lv, s19849c4f0, ABISELECT(16,4), "S19849C4.s19849c4f0");
    test_class_info(&lv, &cd_S19849C4);
    dp->~S19849C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C4(Test_S19849C4, "S19849C4", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S19849C4C1Ev();
extern void _ZN8S19849C4D1Ev();
Name_Map name_map_S19849C4[] = {
  NSPAIR(_ZN8S19849C4C1Ev),
  NSPAIR(_ZN8S19849C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
static Base_Class bases_S19849C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C4[];
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C4[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C4[];
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C4[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C4[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C4[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C4[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
static  VTT_ENTRY vtt_S19849C4[] = {
  {&(_ZTV8S19849C4[5]),  5,29},
  {&(_ZTV8S19849C4[10]),  10,29},
  {&(_ZTV8S19849C4[17]),  17,29},
  {&(_ZTV8S19849C4[22]),  22,29},
  {&(_ZTV8S19849C4[27]),  27,29},
  {&(_tg__ZTV8S19849C6__8S19849C4[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
static VTBL_ENTRY alt_thunk_names301[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C4 = {  "S19849C4", // class name
  bases_S19849C4, 5,
  &(vtc_S19849C4[0]), // expected_vtbl_contents
  &(vtt_S19849C4[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S19849C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19849C4),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C4),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names301,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C10  : S4161C4_nt , S19849C4 , S20760C22_nt , virtual S19849C8 {
  virtual  ~S19849C10(); // _ZN9S19849C10D2Ev
  S19849C10(); // tgen
};
//SIG(-1 S19849C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S19849C10 ::~S19849C10(){ note_dtor("S19849C10", this);}
S19849C10 ::S19849C10(){ note_ctor("S19849C10", this);} // tgen

static void Test_S19849C10()
{
  extern Class_Descriptor cd_S19849C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S19849C10, buf);
    S19849C10 *dp, &lv = *(dp=new (buf) S19849C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S19849C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S19849C10");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*), ABISELECT(48,24), "S19849C10");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(48,24), "S19849C10");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(80,52), "S19849C10");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(136,96), "S19849C10");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(136,96), "S19849C10");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(96,64), "S19849C10");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*), ABISELECT(80,52), "S19849C10");
    check_base_class_offset(lv, (S19849C4*), 0, "S19849C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S19849C10");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*), ABISELECT(152,108), "S19849C10");
    test_class_info(&lv, &cd_S19849C10);
    dp->~S19849C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C10(Test_S19849C10, "S19849C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S19849C10C1Ev();
extern void _ZN9S19849C10D2Ev();
Name_Map name_map_S19849C10[] = {
  NSPAIR(_ZN9S19849C10C1Ev),
  NSPAIR(_ZN9S19849C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
static Base_Class bases_S19849C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19849C4,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19849C8,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19849C10[];
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
extern void ABISELECT(_ZThn40_N9S19849C10D1Ev,_ZThn20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S19849C10D0Ev,_ZThn20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19849C10D1Ev,_ZThn20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19849C10D0Ev,_ZThn20_N9S19849C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19849C10[];
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C4__9S19849C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C4__9S19849C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4__9S19849C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4__9S19849C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C4__9S19849C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__9S19849C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__9S19849C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__9S19849C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__9S19849C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__9S19849C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C10[] = {
  {&(_ZTV9S19849C10[6]),  6,40},
  {&(_tg__ZTV8S19849C4__9S19849C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C4__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C4__9S19849C10[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C4__9S19849C10[3]),  3,5},
  {&(_ZTV9S19849C10[15]),  15,40},
  {&(_ZTV9S19849C10[22]),  22,40},
  {&(_ZTV9S19849C10[27]),  27,40},
  {&(_ZTV9S19849C10[32]),  32,40},
  {&(_ZTV9S19849C10[38]),  38,40},
  {&(_tg__ZTV8S19849C6__9S19849C10[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__9S19849C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
static VTBL_ENTRY alt_thunk_names302[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C10 = {  "S19849C10", // class name
  bases_S19849C10, 9,
  &(vtc_S19849C10[0]), // expected_vtbl_contents
  &(vtt_S19849C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S19849C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19849C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19849C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names302,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C9  : S20760C9 , S19849C10 {
  virtual  ~S19849C9(); // _ZN8S19849C9D2Ev
  S19849C9(); // tgen
};
//SIG(-1 S19849C9) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S19849C9 ::~S19849C9(){ note_dtor("S19849C9", this);}
S19849C9 ::S19849C9(){ note_ctor("S19849C9", this);} // tgen

static void Test_S19849C9()
{
  extern Class_Descriptor cd_S19849C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S19849C9, buf);
    S19849C9 *dp, &lv = *(dp=new (buf) S19849C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S19849C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C9)");
    /*is_ambiguous_... S19849C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19849C9");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C10*), ABISELECT(48,28), "S19849C9");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*)(S19849C10*), ABISELECT(64,36), "S19849C9");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(64,36), "S19849C9");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(96,64), "S19849C9");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(152,108), "S19849C9");
    /*is_ambiguous_... S19849C9::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(152,108), "S19849C9");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(112,76), "S19849C9");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*)(S19849C10*), ABISELECT(96,64), "S19849C9");
    check_base_class_offset(lv, (S19849C4*)(S19849C10*), ABISELECT(16,12), "S19849C9");
    check_base_class_offset(lv, (S20760C22_nt*)(S19849C10*), ABISELECT(56,32), "S19849C9");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*)(S19849C10*), ABISELECT(168,120), "S19849C9");
    check_base_class_offset(lv, (S19849C10*), ABISELECT(16,12), "S19849C9");
    test_class_info(&lv, &cd_S19849C9);
    dp->~S19849C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C9(Test_S19849C9, "S19849C9", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S19849C9C1Ev();
extern void _ZN8S19849C9D2Ev();
Name_Map name_map_S19849C9[] = {
  NSPAIR(_ZN8S19849C9C1Ev),
  NSPAIR(_ZN8S19849C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C10;
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
static Base_Class bases_S19849C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19849C4,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19849C8,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19849C10,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S19849C9[];
extern void _ZN8S19849C9D1Ev();
extern void _ZN8S19849C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C9D1Ev,_ZThn32_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C9D0Ev,_ZThn32_N8S19849C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C9D1Ev,_ZThn36_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C9D0Ev,_ZThn36_N8S19849C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19849C9D1Ev,_ZThn64_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19849C9D0Ev,_ZThn64_N8S19849C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C9D1Ev,_ZThn108_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C9D0Ev,_ZThn108_N8S19849C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S19849C9D1Ev,_ZThn120_N8S19849C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S19849C9D0Ev,_ZThn120_N8S19849C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C9[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&_ZN8S19849C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C9D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19849C9D1Ev,_ZThn32_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19849C9D0Ev,_ZThn32_N8S19849C9D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C9[];
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19849C10__8S19849C9[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C49S19849C10__8S19849C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19849C10__8S19849C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C10__8S19849C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C10__8S19849C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19849C10__8S19849C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C10__8S19849C9[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C9[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C9[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C9[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C9[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C9[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C9[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__8S19849C9[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C9[] = {
  {&(_ZTV8S19849C9[6]),  6,48},
  {&(_tg__ZTV9S19849C10__8S19849C9[6]),  6,8},
  {&(_tg__ZTV8S19849C49S19849C10__8S19849C9[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C49S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C49S19849C10__8S19849C9[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C49S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C49S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C6__9S19849C10__8S19849C9[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19849C10__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C10__8S19849C9[4]),  4,6},
  {&(_ZTV8S19849C9[14]),  14,48},
  {&(_ZTV8S19849C9[23]),  23,48},
  {&(_ZTV8S19849C9[30]),  30,48},
  {&(_ZTV8S19849C9[35]),  35,48},
  {&(_ZTV8S19849C9[40]),  40,48},
  {&(_ZTV8S19849C9[46]),  46,48},
  {&(_tg__ZTV8S19849C6__8S19849C9[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__8S19849C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__8S19849C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C9[];
extern  VTBL_ENTRY _ZTV8S19849C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C9[];
static VTBL_ENTRY alt_thunk_names303[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D0Ev,_ZThn108_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19849C10D1Ev,_ZThn108_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D0Ev,_ZThn52_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19849C10D1Ev,_ZThn52_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D0Ev,_ZThn96_N9S19849C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D0Ev,_ZThn24_N9S19849C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19849C10D1Ev,_ZThn96_N9S19849C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19849C10D1Ev,_ZThn24_N9S19849C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D0Ev,_ZThn52_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C4D1Ev,_ZThn52_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D0Ev,_ZThn96_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D0Ev,_ZThn24_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C4D1Ev,_ZThn96_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C4D1Ev,_ZThn24_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19849C9D0Ev,_ZThn120_N8S19849C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19849C9D1Ev,_ZThn120_N8S19849C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C9D0Ev,_ZThn64_N8S19849C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C9D1Ev,_ZThn64_N8S19849C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C9D0Ev,_ZThn108_N8S19849C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C9D0Ev,_ZThn36_N8S19849C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C9D1Ev,_ZThn108_N8S19849C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C9D1Ev,_ZThn36_N8S19849C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C9 = {  "S19849C9", // class name
  bases_S19849C9, 11,
  &(vtc_S19849C9[0]), // expected_vtbl_contents
  &(vtt_S19849C9[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S19849C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19849C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C9),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names303,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C3  : virtual S19849C4 , virtual S19849C9 , S4228C27 , virtual S20760C5_nt {
  virtual  ~S19849C3(); // _ZN8S19849C3D2Ev
  virtual void  v1(); // _ZN8S19849C32v1Ev
  S19849C3(); // tgen
};
//SIG(-1 S19849C3) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m FL} vd v1}


 S19849C3 ::~S19849C3(){ note_dtor("S19849C3", this);}
void  S19849C3 ::v1(){vfunc_called(this, "_ZN8S19849C32v1Ev");}
S19849C3 ::S19849C3(){ note_ctor("S19849C3", this);} // tgen

static void Test_S19849C3()
{
  extern Class_Descriptor cd_S19849C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,39)];
    init_test(&cd_S19849C3, buf);
    S19849C3 *dp, &lv = *(dp=new (buf) S19849C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,152), "sizeof(S19849C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C3)");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19849C4*), ABISELECT(48,20), "S19849C3");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(48,20), "S19849C3");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(48,20), "S19849C3");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(80,48), "S19849C3");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(136,92), "S19849C3");
    /*is_ambiguous_... S19849C3::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(136,92), "S19849C3");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(96,60), "S19849C3");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C6*)(S19849C4*), ABISELECT(80,48), "S19849C3");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(80,48), "S19849C3");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C4*), ABISELECT(16,4), "S19849C3");
    /*is_ambiguous_... S19849C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C9*), ABISELECT(160,104), "S19849C3");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C10*)(S19849C9*), ABISELECT(208,132), "S19849C3");
    check_base_class_offset(lv, (S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(176,116), "S19849C3");
    check_base_class_offset(lv, (S20760C22_nt*)(S19849C10*)(S19849C9*), ABISELECT(216,136), "S19849C3");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*)(S19849C10*)(S19849C9*), 0, "S19849C3");
    check_base_class_offset(lv, (S19849C10*)(S19849C9*), ABISELECT(176,116), "S19849C3");
    check_base_class_offset(lv, (S19849C9*), ABISELECT(160,104), "S19849C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S19849C3");
    check_base_class_offset(lv, (S20760C5_nt*), ABISELECT(224,140), "S19849C3");
    test_class_info(&lv, &cd_S19849C3);
    dp->~S19849C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C3(Test_S19849C3, "S19849C3", ABISELECT(240,152));

#else // __cplusplus

extern void _ZN8S19849C3C1Ev();
extern void _ZN8S19849C3D2Ev();
Name_Map name_map_S19849C3[] = {
  NSPAIR(_ZN8S19849C3C1Ev),
  NSPAIR(_ZN8S19849C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C10;
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
extern Class_Descriptor cd_S19849C9;
extern VTBL_ENTRY _ZTI8S19849C9[];
extern  VTBL_ENTRY _ZTV8S19849C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
static Base_Class bases_S19849C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19849C4,    ABISELECT(16,4), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19849C4,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19849C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19849C10,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19849C9,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C3[];
extern void ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev)();
extern void _ZN8S19849C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev)();
extern void _ZN8S19849C3D0Ev() __attribute__((weak));
extern void _ZN8S19849C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C3D1Ev,_ZThn4_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19849C3D0Ev,_ZThn4_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19849C3D1Ev,_ZThn20_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19849C3D0Ev,_ZThn20_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S19849C3D1Ev,_ZThn48_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S19849C3D0Ev,_ZThn48_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C3D1Ev,_ZThn92_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C3D0Ev,_ZThn92_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19849C3D1Ev,_ZThn104_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19849C3D0Ev,_ZThn104_N8S19849C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S19849C3D1Ev,_ZThn140_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S19849C3D0Ev,_ZThn140_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C3[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19849C32v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C3[];
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C4__8S19849C3[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C4__8S19849C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4__8S19849C3[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C4__8S19849C3[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C3[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C3[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C3[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C3[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C3[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C9D1Ev();
extern void _ZN8S19849C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C9__8S19849C3[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&_ZN8S19849C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C9D0Ev,
};
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C3[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19849C10__8S19849C9__8S19849C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C9__8S19849C3[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C9__8S19849C3[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C3[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19849C9__8S19849C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C9__8S19849C3[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C3[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S19849C8D1Ev,_ZThn92_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S19849C8D0Ev,_ZThn92_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__8S19849C3[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C3[] = {
  {&(_ZTV8S19849C3[10]),  10,69},
  {&(_ZTV8S19849C3[19]),  19,69},
  {&(_ZTV8S19849C3[24]),  24,69},
  {&(_ZTV8S19849C3[31]),  31,69},
  {&(_ZTV8S19849C3[36]),  36,69},
  {&(_ZTV8S19849C3[41]),  41,69},
  {&(_ZTV8S19849C3[50]),  50,69},
  {&(_ZTV8S19849C3[58]),  58,69},
  {&(_ZTV8S19849C3[62]),  62,69},
  {&(_ZTV8S19849C3[10]),  10,69},
  {&(_ZTV8S19849C3[67]),  67,69},
  {&(_tg__ZTV8S19849C4__8S19849C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C4__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C4__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C4__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C3[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C9__8S19849C3[6]),  6,8},
  {&(_tg__ZTV9S19849C108S19849C9__8S19849C3[6]),  6,8},
  {&(_tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C3[4]),  4,6},
  {&(_tg__ZTV9S19849C10__8S19849C9__8S19849C3[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C9__8S19849C3[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19849C9__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__8S19849C9__8S19849C3[4]),  4,6},
  {&(_tg__ZTV8S19849C8__A1__8S19849C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__8S19849C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C3[];
extern  VTBL_ENTRY _ZTV8S19849C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C3[];
static VTBL_ENTRY alt_thunk_names304[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C8D0Ev,_ZThn92_N8S19849C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C8D1Ev,_ZThn92_N8S19849C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19849C3D0Ev,_ZThn104_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19849C3D1Ev,_ZThn104_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C3D0Ev,_ZThn48_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19849C3D1Ev,_ZThn48_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19849C3D0Ev,_ZThn140_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C3D0Ev,_ZThn92_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C3D0Ev,_ZThn20_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19849C3D1Ev,_ZThn140_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19849C3D1Ev,_ZThn92_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19849C3D1Ev,_ZThn20_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19849C3D0Ev,_ZThn4_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19849C3D1Ev,_ZThn4_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C3 = {  "S19849C3", // class name
  bases_S19849C3, 15,
  &(vtc_S19849C3[0]), // expected_vtbl_contents
  &(vtt_S19849C3[0]), // expected_vtt_contents
  ABISELECT(240,152), // object size
  NSPAIRA(_ZTI8S19849C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19849C3),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C3),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names304,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19849C15_nt  : virtual S4161C4_nt {
  int s19849c15f0;
  ~S19849C15_nt(); // tgen
  S19849C15_nt(); // tgen
};
//SIG(-1 S19849C15_nt) C1{ VBC2{ m Fp} Fi}


S19849C15_nt ::~S19849C15_nt(){ note_dtor("S19849C15_nt", this);} // tgen
S19849C15_nt ::S19849C15_nt(){ note_ctor("S19849C15_nt", this);} // tgen

//skip512 S19849C15_nt

#else // __cplusplus

extern void _ZN12S19849C15_ntC1Ev();
extern void _ZN12S19849C15_ntD1Ev();
Name_Map name_map_S19849C15_nt[] = {
  NSPAIR(_ZN12S19849C15_ntC1Ev),
  NSPAIR(_ZN12S19849C15_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S19849C15_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI12S19849C15_nt[];
static  VTBL_ENTRY vtc_S19849C15_nt[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI12S19849C15_nt[0]),
};
extern VTBL_ENTRY _ZTV12S19849C15_nt[];
static  VTT_ENTRY vtt_S19849C15_nt[] = {
  {&(_ZTV12S19849C15_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S19849C15_nt[];
VTBL_ENTRY *P__ZTI12S19849C15_nt = _ZTI12S19849C15_nt; 
extern  VTBL_ENTRY _ZTV12S19849C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19849C15_nt[];
Class_Descriptor cd_S19849C15_nt = {  "S19849C15_nt", // class name
  bases_S19849C15_nt, 1,
  &(vtc_S19849C15_nt[0]), // expected_vtbl_contents
  &(vtt_S19849C15_nt[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI12S19849C15_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19849C15_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19849C15_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  S19849C1  : virtual S4228C37 , S19849C3 , S19849C15_nt {
  virtual  ~S19849C1(); // _ZN8S19849C1D2Ev
  S19849C1(); // tgen
};
//SIG(1 S19849C1) C1{ VBC2{ m} BC3{ VBC4{ VBC5{ vd m Fi[6]} VBC6{ BC7{ vd m FL} VBC5 BC8{ VBC7 vd} FC5} FD} VBC9{ BC7 BC10{ BC11{ m Fp} BC4 BC12{ vd m} VBC8 vd} vd} BC13{ m} VBC14{ vd m FL} vd v1} BC15{ VBC11 Fi} vd}


 S19849C1 ::~S19849C1(){ note_dtor("S19849C1", this);}
S19849C1 ::S19849C1(){ note_ctor("S19849C1", this);} // tgen

static void Test_S19849C1()
{
  extern Class_Descriptor cd_S19849C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,42)];
    init_test(&cd_S19849C1, buf);
    S19849C1 *dp, &lv = *(dp=new (buf) S19849C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,164), "sizeof(S19849C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19849C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19849C1");
    /*is_ambiguous_... S19849C1::S19849C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19849C4*), ABISELECT(64,28), "S19849C1");
    check_base_class_offset(lv, (S20760C13*)(S19849C6*), ABISELECT(64,28), "S19849C1");
    check_base_class_offset(lv, (S20760C13*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(64,28), "S19849C1");
    /*is_ambiguous_... S19849C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C6*), ABISELECT(96,56), "S19849C1");
    check_base_class_offset(lv, (S20760C9*)(S19849C8*)(S19849C6*), ABISELECT(152,100), "S19849C1");
    /*is_ambiguous_... S19849C1::S19849C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C8*), ABISELECT(152,100), "S19849C1");
    check_base_class_offset(lv, (S19849C8*)(S19849C6*), ABISELECT(112,68), "S19849C1");
    /*is_ambiguous_... S19849C1::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C6*)(S19849C4*), ABISELECT(96,56), "S19849C1");
    check_base_class_offset(lv, (S19849C6*)(S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(96,56), "S19849C1");
    /*is_ambiguous_... S19849C3::S19849C4 */ AMB_check_base_class_offset(lv, (S19849C4*)(S19849C3*), ABISELECT(32,12), "S19849C1");
    /*is_ambiguous_... S19849C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19849C9*), ABISELECT(176,112), "S19849C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C10*)(S19849C9*), ABISELECT(224,140), "S19849C1");
    check_base_class_offset(lv, (S19849C4*)(S19849C10*)(S19849C9*), ABISELECT(192,124), "S19849C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S19849C10*)(S19849C9*), ABISELECT(232,144), "S19849C1");
    /*is_ambiguous_... S19849C10::S19849C8 */ AMB_check_base_class_offset(lv, (S19849C8*)(S19849C10*)(S19849C9*), 0, "S19849C1");
    check_base_class_offset(lv, (S19849C10*)(S19849C9*), ABISELECT(192,124), "S19849C1");
    check_base_class_offset(lv, (S19849C9*)(S19849C3*), ABISELECT(176,112), "S19849C1");
    check_base_class_offset(lv, (S4228C27*)(S19849C3*), 0, "S19849C1");
    check_base_class_offset(lv, (S20760C5_nt*)(S19849C3*), ABISELECT(240,148), "S19849C1");
    check_base_class_offset(lv, (S19849C3*), 0, "S19849C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19849C15_nt*), ABISELECT(256,160), "S19849C1");
    check_base_class_offset(lv, (S19849C15_nt*), ABISELECT(8,4), "S19849C1");
    test_class_info(&lv, &cd_S19849C1);
    dp->~S19849C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19849C1(Test_S19849C1, "S19849C1", ABISELECT(272,164));

#else // __cplusplus

extern void _ZN8S19849C1C1Ev();
extern void _ZN8S19849C1D2Ev();
Name_Map name_map_S19849C1[] = {
  NSPAIR(_ZN8S19849C1C1Ev),
  NSPAIR(_ZN8S19849C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C6;
extern VTBL_ENTRY _ZTI8S19849C6[];
extern  VTBL_ENTRY _ZTV8S19849C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C6[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19849C4;
extern VTBL_ENTRY _ZTI8S19849C4[];
extern  VTBL_ENTRY _ZTV8S19849C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19849C8;
extern VTBL_ENTRY _ZTI8S19849C8[];
extern  VTBL_ENTRY _ZTV8S19849C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C8[];
extern Class_Descriptor cd_S19849C10;
extern VTBL_ENTRY _ZTI9S19849C10[];
extern  VTBL_ENTRY _ZTV9S19849C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19849C10[];
extern Class_Descriptor cd_S19849C9;
extern VTBL_ENTRY _ZTI8S19849C9[];
extern  VTBL_ENTRY _ZTV8S19849C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20760C5_nt;
extern VTBL_ENTRY _ZTI11S20760C5_nt[];
extern  VTBL_ENTRY _ZTV11S20760C5_nt[];
extern Class_Descriptor cd_S19849C3;
extern VTBL_ENTRY _ZTI8S19849C3[];
extern  VTBL_ENTRY _ZTV8S19849C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C3[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19849C15_nt;
extern VTBL_ENTRY _ZTI12S19849C15_nt[];
extern  VTBL_ENTRY _ZTV12S19849C15_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19849C15_nt[];
static Base_Class bases_S19849C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    ABISELECT(64,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,100), //bcp->offset
    43, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19849C8,    ABISELECT(112,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 0},
  {&cd_S19849C6,    ABISELECT(96,56), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19849C4,    ABISELECT(32,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19849C4,    ABISELECT(192,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(232,144), //bcp->offset
    65, //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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19849C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19849C10,    ABISELECT(192,124), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19849C9,    ABISELECT(176,112), //bcp->offset
    48, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C5_nt,    ABISELECT(240,148), //bcp->offset
    69, //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
    16, //immediately_derived
  0, 1},
  {&cd_S19849C3,    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_S4161C4_nt,    ABISELECT(256,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19849C15_nt,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19849C1[];
extern void ABISELECT(_ZTv0_n32_N8S19849C1D1Ev,_ZTv0_n16_N8S19849C1D1Ev)();
extern void _ZN8S19849C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C1D0Ev,_ZTv0_n16_N8S19849C1D0Ev)();
extern void _ZN8S19849C1D0Ev() __attribute__((weak));
extern void _ZN8S19849C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19849C1D1Ev,_ZTv0_n24_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C1D1Ev,_ZThn12_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19849C1D0Ev,_ZTv0_n24_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C1D0Ev,_ZThn12_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C1D1Ev,_ZThn28_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C1D0Ev,_ZThn28_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C1D1Ev,_ZTv0_n20_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19849C1D1Ev,_ZThn56_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C1D0Ev,_ZTv0_n20_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19849C1D0Ev,_ZThn56_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19849C1D1Ev,_ZTvn12_n20_N8S19849C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C1D0Ev,_ZTvn12_n20_N8S19849C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C1D1Ev,_ZThn100_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C1D0Ev,_ZThn100_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C1D1Ev,_ZTv0_n28_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19849C1D1Ev,_ZThn112_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C1D0Ev,_ZTv0_n28_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19849C1D0Ev,_ZThn112_N8S19849C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19849C1D1Ev,_ZTvn12_n28_N8S19849C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19849C1D0Ev,_ZTvn12_n28_N8S19849C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C1D1Ev,_ZTvn32_n28_N8S19849C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C1D0Ev,_ZTvn32_n28_N8S19849C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19849C1D1Ev,_ZThn148_N8S19849C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19849C1D0Ev,_ZThn148_N8S19849C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19849C1[] = {
  ABISELECT(256,160),
  0,
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C1D1Ev,_ZTv0_n16_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C1D0Ev,_ZTv0_n16_N8S19849C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19849C32v1Ev,
  ABISELECT(248,156),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C1D1Ev,_ZTv0_n24_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C1D0Ev,_ZTv0_n24_N8S19849C1D0Ev),
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C1D1Ev,_ZTv0_n20_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C1D0Ev,_ZTv0_n20_N8S19849C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C1D1Ev,_ZTvn12_n20_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C1D0Ev,_ZTvn12_n20_N8S19849C1D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C1D1Ev,_ZTv0_n28_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C1D0Ev,_ZTv0_n28_N8S19849C1D0Ev),
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C1D1Ev,_ZTvn12_n28_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C1D0Ev,_ZTvn12_n28_N8S19849C1D0Ev),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C1D1Ev,_ZTvn32_n28_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C1D0Ev,_ZTvn32_n28_N8S19849C1D0Ev),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19849C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19849C1[];
extern void ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev)();
extern void _ZN8S19849C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev)();
extern void _ZN8S19849C3D0Ev() __attribute__((weak));
extern void _ZN8S19849C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C3__8S19849C1[] = {
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19849C32v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C3D1Ev,_ZThn12_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C3D0Ev,_ZThn12_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C4__8S19849C3__8S19849C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C3D1Ev,_ZThn28_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C3D0Ev,_ZThn28_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C3__8S19849C1[] = {
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19849C3D1Ev,_ZThn56_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19849C3D0Ev,_ZThn56_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C3__8S19849C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C3__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D1Ev,_ZTvn12_n20_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C3D0Ev,_ZTvn12_n20_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C3D1Ev,_ZThn100_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C3D0Ev,_ZThn100_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C3__8S19849C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19849C3D1Ev,_ZThn112_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19849C3D0Ev,_ZThn112_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C9__8S19849C3__8S19849C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19849C108S19849C9__8S19849C3__8S19849C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D1Ev,_ZTvn12_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19849C3D0Ev,_ZTvn12_n28_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S19849C108S19849C9__8S19849C3__8S19849C1[] = {
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D1Ev,_ZTvn32_n28_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19849C3D0Ev,_ZTvn32_n28_N8S19849C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S19849C3D1Ev,_ZThn148_N8S19849C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S19849C3D0Ev,_ZThn148_N8S19849C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20760C5_nt__8S19849C3__8S19849C1[] = {
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19849C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV12S19849C15_nt__8S19849C1[] = {
  ABISELECT(248,156),
  0,
  (VTBL_ENTRY)&(_ZTI12S19849C15_nt[0]),
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C4__8S19849C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C4__8S19849C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C4__8S19849C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C4__8S19849C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void _ZN8S19849C6D1Ev();
extern void _ZN8S19849C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&_ZN8S19849C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C6D0Ev,
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C6__8S19849C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__8S19849C6__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D1Ev,_ZThn12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C6D0Ev,_ZThn12_N8S19849C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C6__8S19849C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19849C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev),
};
extern void _ZN8S19849C9D1Ev();
extern void _ZN8S19849C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C9__8S19849C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&_ZN8S19849C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C9D0Ev,
};
extern void _ZN9S19849C10D1Ev();
extern void _ZN9S19849C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&_ZN9S19849C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19849C10D0Ev,
};
extern void _ZN8S19849C4D1Ev();
extern void _ZN8S19849C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&_ZN8S19849C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D1Ev,_ZTvn12_n20_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C4D0Ev,_ZTvn12_n20_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19849C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D1Ev,_ZTv0_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19849C10D0Ev,_ZTv0_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D1Ev,_ZTvn12_n20_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19849C10D0Ev,_ZTvn12_n20_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D1Ev,_ZTv0_n12_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19849C10D0Ev,_ZTv0_n12_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C1[] = {
  ABISELECT(192,124),
  ABISELECT(152,100),
  ABISELECT(192,124),
  (VTBL_ENTRY)&(_ZTI9S19849C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D1Ev,_ZTv0_n16_N9S19849C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19849C10D0Ev,_ZTv0_n16_N9S19849C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19849C10__8S19849C9__8S19849C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D1Ev,_ZThn12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19849C9D0Ev,_ZThn12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19849C9__8S19849C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C6__8S19849C9__8S19849C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D1Ev,_ZTv0_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19849C9D0Ev,_ZTv0_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D1Ev,_ZTvn12_n20_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19849C9D0Ev,_ZTvn12_n20_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19849C9__8S19849C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D1Ev,_ZTv0_n12_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C9D0Ev,_ZTv0_n12_N8S19849C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C9__8S19849C1[] = {
  ABISELECT(176,112),
  ABISELECT(152,100),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S19849C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D1Ev,_ZTv0_n16_N8S19849C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19849C9D0Ev,_ZTv0_n16_N8S19849C9D0Ev),
};
extern void _ZN8S19849C8D1Ev();
extern void _ZN8S19849C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19849C8__A1__8S19849C1[] = {
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&_ZN8S19849C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19849C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S19849C8D1Ev,_ZThn100_N8S19849C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S19849C8D0Ev,_ZThn100_N8S19849C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19849C8__A1__8S19849C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19849C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev),
};
static  VTT_ENTRY vtt_S19849C1[] = {
  {&(_ZTV8S19849C1[12]),  12,74},
  {&(_tg__ZTV8S19849C3__8S19849C1[10]),  10,13},
  {&(_tg__ZTV8S19849C4__8S19849C3__8S19849C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C3__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C9__8S19849C3__8S19849C1[7]),  7,9},
  {&(_tg__ZTV9S19849C108S19849C9__8S19849C3__8S19849C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S19849C108S19849C9__8S19849C3__8S19849C1[2]),  2,4},
  {&(_tg__ZTV8S19849C3__8S19849C1[10]),  10,13},
  {&(_tg__ZTV11S20760C5_nt__8S19849C3__8S19849C1[3]),  3,5},
  {&(_tg__ZTV12S19849C15_nt__8S19849C1[3]),  3,3},
  {&(_ZTV8S19849C1[24]),  24,74},
  {&(_ZTV8S19849C1[29]),  29,74},
  {&(_ZTV8S19849C1[36]),  36,74},
  {&(_ZTV8S19849C1[41]),  41,74},
  {&(_ZTV8S19849C1[46]),  46,74},
  {&(_ZTV8S19849C1[55]),  55,74},
  {&(_ZTV8S19849C1[63]),  63,74},
  {&(_ZTV8S19849C1[67]),  67,74},
  {&(_ZTV8S19849C1[12]),  12,74},
  {&(_ZTV8S19849C1[72]),  72,74},
  {&(_ZTV8S19849C1[18]),  18,74},
  {&(_tg__ZTV8S19849C4__8S19849C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C4__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C4__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C4__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C4__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C1[4]),  4,6},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C88S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C8__8S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C6__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C9__8S19849C1[6]),  6,8},
  {&(_tg__ZTV9S19849C108S19849C9__8S19849C1[6]),  6,8},
  {&(_tg__ZTV8S19849C49S19849C108S19849C9__A1__8S19849C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19849C49S19849C108S19849C9__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C49S19849C108S19849C9__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19849C49S19849C108S19849C9__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19849C108S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__9S19849C108S19849C9__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__9S19849C108S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19849C108S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__9S19849C108S19849C9__8S19849C1[4]),  4,6},
  {&(_tg__ZTV9S19849C10__8S19849C9__8S19849C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C6__8S19849C9__8S19849C1[5]),  5,7},
  {&(_tg__ZTV8S19849C88S19849C6__8S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19849C9__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S19849C8__A1__8S19849C9__8S19849C1[4]),  4,6},
  {&(_tg__ZTV8S19849C8__A1__8S19849C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19849C8__A1__8S19849C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19849C1[];
extern  VTBL_ENTRY _ZTV8S19849C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19849C1[];
static VTBL_ENTRY alt_thunk_names305[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D0Ev,_ZTv0_n12_N8S19849C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D0Ev,_ZThn44_N8S19849C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C6D1Ev,_ZTv0_n12_N8S19849C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19849C6D1Ev,_ZThn44_N8S19849C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D0Ev,_ZTv0_n12_N8S19849C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C8D0Ev,_ZThn100_N8S19849C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D0Ev,_ZThn32_N8S19849C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C8D1Ev,_ZTv0_n12_N8S19849C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C8D1Ev,_ZThn100_N8S19849C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19849C8D1Ev,_ZThn32_N8S19849C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D0Ev,_ZTv0_n20_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D0Ev,_ZThn44_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C4D1Ev,_ZTv0_n20_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C4D1Ev,_ZThn44_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D0Ev,_ZTv0_n12_N8S19849C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D0Ev,_ZThn88_N8S19849C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D0Ev,_ZThn16_N8S19849C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C4D1Ev,_ZTv0_n12_N8S19849C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19849C4D1Ev,_ZThn88_N8S19849C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C4D1Ev,_ZThn16_N8S19849C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D0Ev,_ZTv0_n28_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C3D0Ev,_ZThn112_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C3D1Ev,_ZTv0_n28_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C3D1Ev,_ZThn112_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D0Ev,_ZTv0_n20_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C3D0Ev,_ZThn56_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C3D1Ev,_ZTv0_n20_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C3D1Ev,_ZThn56_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D0Ev,_ZTv0_n12_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C3D0Ev,_ZThn148_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C3D0Ev,_ZThn100_N8S19849C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C3D0Ev,_ZThn28_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C3D1Ev,_ZTv0_n12_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C3D1Ev,_ZThn148_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C3D1Ev,_ZThn100_N8S19849C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C3D1Ev,_ZThn28_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D0Ev,_ZTv0_n24_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C3D0Ev,_ZThn12_N8S19849C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C3D1Ev,_ZTv0_n24_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C3D1Ev,_ZThn12_N8S19849C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D0Ev,_ZTv0_n16_N8S19849C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C3D1Ev,_ZTv0_n16_N8S19849C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19849C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C1D0Ev,_ZTv0_n28_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C1D0Ev,_ZThn112_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19849C1D1Ev,_ZTv0_n28_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19849C1D1Ev,_ZThn112_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C1D0Ev,_ZTv0_n20_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C1D0Ev,_ZThn56_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19849C1D1Ev,_ZTv0_n20_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19849C1D1Ev,_ZThn56_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C1D0Ev,_ZTv0_n12_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C1D0Ev,_ZThn148_N8S19849C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C1D0Ev,_ZThn100_N8S19849C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C1D0Ev,_ZThn28_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19849C1D1Ev,_ZTv0_n12_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19849C1D1Ev,_ZThn148_N8S19849C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19849C1D1Ev,_ZThn100_N8S19849C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19849C1D1Ev,_ZThn28_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C1D0Ev,_ZTv0_n24_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C1D0Ev,_ZThn12_N8S19849C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19849C1D1Ev,_ZTv0_n24_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19849C1D1Ev,_ZThn12_N8S19849C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C1D0Ev,_ZTv0_n16_N8S19849C1D0Ev), // 
  (VTBL_ENTRY)_ZN8S19849C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19849C1D1Ev,_ZTv0_n16_N8S19849C1D1Ev), // 
  (VTBL_ENTRY)_ZN8S19849C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19849C1 = {  "S19849C1", // class name
  bases_S19849C1, 19,
  &(vtc_S19849C1[0]), // expected_vtbl_contents
  &(vtt_S19849C1[0]), // expected_vtt_contents
  ABISELECT(272,164), // object size
  NSPAIRA(_ZTI8S19849C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19849C1),74, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19849C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names305,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C8  : virtual S20760C9 {
  virtual  ~S19848C8(); // _ZN8S19848C8D2Ev
  S19848C8(); // tgen
};
//SIG(-1 S19848C8) C1{ VBC2{ vd m FL} vd}


 S19848C8 ::~S19848C8(){ note_dtor("S19848C8", this);}
S19848C8 ::S19848C8(){ note_ctor("S19848C8", this);} // tgen

static void Test_S19848C8()
{
  extern Class_Descriptor cd_S19848C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19848C8, buf);
    S19848C8 *dp, &lv = *(dp=new (buf) S19848C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19848C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19848C8)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(8,4), "S19848C8");
    test_class_info(&lv, &cd_S19848C8);
    dp->~S19848C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C8(Test_S19848C8, "S19848C8", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19848C8C1Ev();
extern void _ZN8S19848C8D2Ev();
Name_Map name_map_S19848C8[] = {
  NSPAIR(_ZN8S19848C8C1Ev),
  NSPAIR(_ZN8S19848C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19848C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C8[];
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn8_N8S19848C8D1Ev,_ZThn4_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn8_N8S19848C8D0Ev,_ZThn4_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C8[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C8[];
static  VTT_ENTRY vtt_S19848C8[] = {
  {&(_ZTV8S19848C8[3]),  3,10},
  {&(_ZTV8S19848C8[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
static VTBL_ENTRY alt_thunk_names306[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19848C8D0Ev,_ZThn4_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19848C8D1Ev,_ZThn4_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C8 = {  "S19848C8", // class name
  bases_S19848C8, 1,
  &(vtc_S19848C8[0]), // expected_vtbl_contents
  &(vtt_S19848C8[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19848C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19848C8),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C8),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names306,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C6  : S20760C9 , virtual S20760C13 , S19848C8 {
  ::S20760C13 s19848c6f0;
  ~S19848C6(); // tgen
  S19848C6(); // tgen
};
//SIG(-1 S19848C6) C1{ BC2{ vd m FL} VBC3{ vd m Fi[6]} BC4{ VBC2 vd} FC3}


S19848C6 ::~S19848C6(){ note_dtor("S19848C6", this);} // tgen
S19848C6 ::S19848C6(){ note_ctor("S19848C6", this);} // tgen

static void Test_S19848C6()
{
  extern Class_Descriptor cd_S19848C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,22)];
    init_test(&cd_S19848C6, buf);
    S19848C6 *dp, &lv = *(dp=new (buf) S19848C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S19848C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19848C6)");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19848C6");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(56,44), "S19848C6");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(88,72), "S19848C6");
    check_base_class_offset(lv, (S19848C8*), ABISELECT(16,12), "S19848C6");
    check_field_offset(lv, s19848c6f0, ABISELECT(24,16), "S19848C6.s19848c6f0");
    test_class_info(&lv, &cd_S19848C6);
    dp->~S19848C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C6(Test_S19848C6, "S19848C6", ABISELECT(104,84));

#else // __cplusplus

extern void _ZN8S19848C6C1Ev();
extern void _ZN8S19848C6D1Ev();
Name_Map name_map_S19848C6[] = {
  NSPAIR(_ZN8S19848C6C1Ev),
  NSPAIR(_ZN8S19848C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
static Base_Class bases_S19848C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C13,    ABISELECT(56,44), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    ABISELECT(88,72), //bcp->offset
    16, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C6[];
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn88_N8S19848C6D1Ev,_ZThn72_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn88_N8S19848C6D0Ev,_ZThn72_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C6[] = {
  ABISELECT(88,72),
  ABISELECT(56,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
  ABISELECT(72,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
  ABISELECT(-88,-72),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C6[];
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6[] = {
  ABISELECT(72,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn72_N8S19848C8D1Ev,_ZThn60_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn72_N8S19848C8D0Ev,_ZThn60_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__8S19848C6[] = {
  ABISELECT(-72,-60),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C6[] = {
  {&(_ZTV8S19848C6[4]),  4,21},
  {&(_tg__ZTV8S19848C8__8S19848C6[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__8S19848C6[3]),  3,5},
  {&(_ZTV8S19848C6[14]),  14,21},
  {&(_ZTV8S19848C6[9]),  9,21},
  {&(_ZTV8S19848C6[19]),  19,21},
};
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
static VTBL_ENTRY alt_thunk_names307[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19848C8D0Ev,_ZThn60_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19848C8D1Ev,_ZThn60_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19848C6D0Ev,_ZThn72_N8S19848C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19848C6D1Ev,_ZThn72_N8S19848C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C6 = {  "S19848C6", // class name
  bases_S19848C6, 4,
  &(vtc_S19848C6[0]), // expected_vtbl_contents
  &(vtt_S19848C6[0]), // expected_vtt_contents
  ABISELECT(104,84), // object size
  NSPAIRA(_ZTI8S19848C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19848C6),21, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C6),6, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names307,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C4  : virtual S20760C13 , virtual S19848C6 {
  long double s19848c4f0;
  ~S19848C4(); // tgen
  S19848C4(); // tgen
};
//SIG(-1 S19848C4) C1{ VBC2{ vd m Fi[6]} VBC3{ BC4{ vd m FL} VBC2 BC5{ VBC4 vd} FC2} FD}


S19848C4 ::~S19848C4(){ note_dtor("S19848C4", this);} // tgen
S19848C4 ::S19848C4(){ note_ctor("S19848C4", this);} // tgen

static void Test_S19848C4()
{
  extern Class_Descriptor cd_S19848C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(10,26)];
    init_test(&cd_S19848C4, buf);
    S19848C4 *dp, &lv = *(dp=new (buf) S19848C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S19848C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C4)");
    check_base_class_offset(lv, (S20760C13*), ABISELECT(32,16), "S19848C4");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(32,16), "S19848C4");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(64,44), "S19848C4");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(120,88), "S19848C4");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(80,56), "S19848C4");
    check_base_class_offset(lv, (S19848C6*), ABISELECT(64,44), "S19848C4");
    check_field_offset(lv, s19848c4f0, ABISELECT(16,4), "S19848C4.s19848c4f0");
    test_class_info(&lv, &cd_S19848C4);
    dp->~S19848C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C4(Test_S19848C4, "S19848C4", ABISELECT(144,100));

#else // __cplusplus

extern void _ZN8S19848C4C1Ev();
extern void _ZN8S19848C4D1Ev();
Name_Map name_map_S19848C4[] = {
  NSPAIR(_ZN8S19848C4C1Ev),
  NSPAIR(_ZN8S19848C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
static Base_Class bases_S19848C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(120,88), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(80,56), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(64,44), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C4[];
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C4[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C4[];
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C4[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C4[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C4[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C4[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
static  VTT_ENTRY vtt_S19848C4[] = {
  {&(_ZTV8S19848C4[5]),  5,29},
  {&(_ZTV8S19848C4[10]),  10,29},
  {&(_ZTV8S19848C4[17]),  17,29},
  {&(_ZTV8S19848C4[22]),  22,29},
  {&(_ZTV8S19848C4[27]),  27,29},
  {&(_tg__ZTV8S19848C6__8S19848C4[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C4[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
static VTBL_ENTRY alt_thunk_names308[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C4 = {  "S19848C4", // class name
  bases_S19848C4, 5,
  &(vtc_S19848C4[0]), // expected_vtbl_contents
  &(vtt_S19848C4[0]), // expected_vtt_contents
  ABISELECT(144,100), // object size
  NSPAIRA(_ZTI8S19848C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19848C4),29, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C4),11, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names308,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C10  : S4161C4_nt , S19848C4 , S20760C22_nt , virtual S19848C8 {
  virtual  ~S19848C10(); // _ZN9S19848C10D2Ev
  S19848C10(); // tgen
};
//SIG(-1 S19848C10) C1{ BC2{ m Fp} BC3{ VBC4{ vd m Fi[6]} VBC5{ BC6{ vd m FL} VBC4 BC7{ VBC6 vd} FC4} FD} BC8{ vd m} VBC7 vd}


 S19848C10 ::~S19848C10(){ note_dtor("S19848C10", this);}
S19848C10 ::S19848C10(){ note_ctor("S19848C10", this);} // tgen

static void Test_S19848C10()
{
  extern Class_Descriptor cd_S19848C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,29)];
    init_test(&cd_S19848C10, buf);
    S19848C10 *dp, &lv = *(dp=new (buf) S19848C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,112), "sizeof(S19848C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C10)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(32,16), "S19848C10");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*), ABISELECT(48,24), "S19848C10");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(48,24), "S19848C10");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(80,52), "S19848C10");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(136,96), "S19848C10");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(136,96), "S19848C10");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(96,64), "S19848C10");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*), ABISELECT(80,52), "S19848C10");
    check_base_class_offset(lv, (S19848C4*), 0, "S19848C10");
    check_base_class_offset(lv, (S20760C22_nt*), ABISELECT(40,20), "S19848C10");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*), ABISELECT(152,108), "S19848C10");
    test_class_info(&lv, &cd_S19848C10);
    dp->~S19848C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C10(Test_S19848C10, "S19848C10", ABISELECT(160,112));

#else // __cplusplus

extern void _ZN9S19848C10C1Ev();
extern void _ZN9S19848C10D2Ev();
Name_Map name_map_S19848C10[] = {
  NSPAIR(_ZN9S19848C10C1Ev),
  NSPAIR(_ZN9S19848C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
static Base_Class bases_S19848C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C13,    ABISELECT(48,24), //bcp->offset
    12, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,96), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(96,64), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(80,52), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19848C4,    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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    ABISELECT(40,20), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19848C8,    ABISELECT(152,108), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19848C10[];
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
extern void ABISELECT(_ZThn40_N9S19848C10D1Ev,_ZThn20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn40_N9S19848C10D0Ev,_ZThn20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C10[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19848C10D1Ev,_ZThn20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S19848C10D0Ev,_ZThn20_N9S19848C10D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19848C10[];
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C4__9S19848C10[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C4__9S19848C10[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4__9S19848C10[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4__9S19848C10[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C4__9S19848C10[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C10[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C10[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__9S19848C10[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__9S19848C10[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__9S19848C10[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__9S19848C10[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C10[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__9S19848C10[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C10[] = {
  {&(_ZTV9S19848C10[6]),  6,40},
  {&(_tg__ZTV8S19848C4__9S19848C10[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C4__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C4__9S19848C10[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C4__9S19848C10[3]),  3,5},
  {&(_ZTV9S19848C10[15]),  15,40},
  {&(_ZTV9S19848C10[22]),  22,40},
  {&(_ZTV9S19848C10[27]),  27,40},
  {&(_ZTV9S19848C10[32]),  32,40},
  {&(_ZTV9S19848C10[38]),  38,40},
  {&(_tg__ZTV8S19848C6__9S19848C10[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C10[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__9S19848C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
static VTBL_ENTRY alt_thunk_names309[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C10 = {  "S19848C10", // class name
  bases_S19848C10, 9,
  &(vtc_S19848C10[0]), // expected_vtbl_contents
  &(vtt_S19848C10[0]), // expected_vtt_contents
  ABISELECT(160,112), // object size
  NSPAIRA(_ZTI9S19848C10),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19848C10),40, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19848C10),19, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names309,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C9  : S20760C9 , S19848C10 {
  virtual  ~S19848C9(); // _ZN8S19848C9D2Ev
  S19848C9(); // tgen
};
//SIG(-1 S19848C9) C1{ BC2{ vd m FL} BC3{ BC4{ m Fp} BC5{ VBC6{ vd m Fi[6]} VBC7{ BC2 VBC6 BC8{ VBC2 vd} FC6} FD} BC9{ vd m} VBC8 vd} vd}


 S19848C9 ::~S19848C9(){ note_dtor("S19848C9", this);}
S19848C9 ::S19848C9(){ note_ctor("S19848C9", this);} // tgen

static void Test_S19848C9()
{
  extern Class_Descriptor cd_S19848C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S19848C9, buf);
    S19848C9 *dp, &lv = *(dp=new (buf) S19848C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S19848C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C9)");
    /*is_ambiguous_... S19848C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*), 0, "S19848C9");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C10*), ABISELECT(48,28), "S19848C9");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*)(S19848C10*), ABISELECT(64,36), "S19848C9");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(64,36), "S19848C9");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(96,64), "S19848C9");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(152,108), "S19848C9");
    /*is_ambiguous_... S19848C9::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(152,108), "S19848C9");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(112,76), "S19848C9");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*)(S19848C10*), ABISELECT(96,64), "S19848C9");
    check_base_class_offset(lv, (S19848C4*)(S19848C10*), ABISELECT(16,12), "S19848C9");
    check_base_class_offset(lv, (S20760C22_nt*)(S19848C10*), ABISELECT(56,32), "S19848C9");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*)(S19848C10*), ABISELECT(168,120), "S19848C9");
    check_base_class_offset(lv, (S19848C10*), ABISELECT(16,12), "S19848C9");
    test_class_info(&lv, &cd_S19848C9);
    dp->~S19848C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C9(Test_S19848C9, "S19848C9", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S19848C9C1Ev();
extern void _ZN8S19848C9D2Ev();
Name_Map name_map_S19848C9[] = {
  NSPAIR(_ZN8S19848C9C1Ev),
  NSPAIR(_ZN8S19848C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C10;
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
static Base_Class bases_S19848C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S4161C4_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_S20760C13,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,108), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(112,76), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(96,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19848C4,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(56,32), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19848C8,    ABISELECT(168,120), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19848C10,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //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 _ZTI8S19848C9[];
extern void _ZN8S19848C9D1Ev();
extern void _ZN8S19848C9D0Ev();
extern void ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C9D1Ev,_ZThn32_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C9D0Ev,_ZThn32_N8S19848C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C9D1Ev,_ZThn36_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C9D0Ev,_ZThn36_N8S19848C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn96_N8S19848C9D1Ev,_ZThn64_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn96_N8S19848C9D0Ev,_ZThn64_N8S19848C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C9D1Ev,_ZThn108_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C9D0Ev,_ZThn108_N8S19848C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S19848C9D1Ev,_ZThn120_N8S19848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S19848C9D0Ev,_ZThn120_N8S19848C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C9[] = {
  ABISELECT(168,120),
  ABISELECT(152,108),
  ABISELECT(96,64),
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&_ZN8S19848C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C9D0Ev,
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19848C9D1Ev,_ZThn32_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S19848C9D0Ev,_ZThn32_N8S19848C9D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
  ABISELECT(-96,-64),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-76),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev),
  ABISELECT(-152,-108),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
  ABISELECT(-168,-120),
  ABISELECT(-16,-12),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C9[];
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19848C10__8S19848C9[] = {
  ABISELECT(152,108),
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(136,96),
  ABISELECT(80,52),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C49S19848C10__8S19848C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19848C10__8S19848C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C10__8S19848C9[] = {
  ABISELECT(-80,-52),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C10__8S19848C9[] = {
  ABISELECT(40,32),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19848C10__8S19848C9[] = {
  ABISELECT(-136,-96),
  ABISELECT(-136,-96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
extern void ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C10__8S19848C9[] = {
  ABISELECT(-152,-108),
  ABISELECT(-16,-12),
  ABISELECT(-152,-108),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C9[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C9[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C9[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C9[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C9[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C9[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__8S19848C9[] = {
  ABISELECT(16,12),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C9[] = {
  {&(_ZTV8S19848C9[6]),  6,48},
  {&(_tg__ZTV9S19848C10__8S19848C9[6]),  6,8},
  {&(_tg__ZTV8S19848C49S19848C10__8S19848C9[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C49S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C49S19848C10__8S19848C9[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C49S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C49S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C6__9S19848C10__8S19848C9[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19848C10__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C10__8S19848C9[4]),  4,6},
  {&(_ZTV8S19848C9[14]),  14,48},
  {&(_ZTV8S19848C9[23]),  23,48},
  {&(_ZTV8S19848C9[30]),  30,48},
  {&(_ZTV8S19848C9[35]),  35,48},
  {&(_ZTV8S19848C9[40]),  40,48},
  {&(_ZTV8S19848C9[46]),  46,48},
  {&(_tg__ZTV8S19848C6__8S19848C9[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__8S19848C9[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__8S19848C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C9[];
extern  VTBL_ENTRY _ZTV8S19848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C9[];
static VTBL_ENTRY alt_thunk_names310[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D0Ev,_ZThn108_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19848C10D1Ev,_ZThn108_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D0Ev,_ZThn52_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19848C10D1Ev,_ZThn52_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D0Ev,_ZThn96_N9S19848C10D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D0Ev,_ZThn24_N9S19848C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19848C10D1Ev,_ZThn96_N9S19848C10D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19848C10D1Ev,_ZThn24_N9S19848C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D0Ev,_ZThn52_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C4D1Ev,_ZThn52_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D0Ev,_ZThn96_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D0Ev,_ZThn24_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C4D1Ev,_ZThn96_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C4D1Ev,_ZThn24_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19848C9D0Ev,_ZThn120_N8S19848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19848C9D1Ev,_ZThn120_N8S19848C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C9D0Ev,_ZThn64_N8S19848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C9D1Ev,_ZThn64_N8S19848C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C9D0Ev,_ZThn108_N8S19848C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C9D0Ev,_ZThn36_N8S19848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C9D1Ev,_ZThn108_N8S19848C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C9D1Ev,_ZThn36_N8S19848C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C9 = {  "S19848C9", // class name
  bases_S19848C9, 11,
  &(vtc_S19848C9[0]), // expected_vtbl_contents
  &(vtt_S19848C9[0]), // expected_vtt_contents
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S19848C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19848C9),48, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C9),26, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names310,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C3  : virtual S19848C4 , virtual S19848C9 , S4228C27 , virtual S20759C5_nt {
  virtual  ~S19848C3(); // _ZN8S19848C3D2Ev
  virtual void  v1(); // _ZN8S19848C32v1Ev
  S19848C3(); // tgen
};
//SIG(-1 S19848C3) C1{ VBC2{ VBC3{ vd m Fi[6]} VBC4{ BC5{ vd m FL} VBC3 BC6{ VBC5 vd} FC3} FD} VBC7{ BC5 BC8{ BC9{ m Fp} BC2 BC10{ vd m} VBC6 vd} vd} BC11{ m} VBC12{ vd m Fl} vd v1}


 S19848C3 ::~S19848C3(){ note_dtor("S19848C3", this);}
void  S19848C3 ::v1(){vfunc_called(this, "_ZN8S19848C32v1Ev");}
S19848C3 ::S19848C3(){ note_ctor("S19848C3", this);} // tgen

static void Test_S19848C3()
{
  extern Class_Descriptor cd_S19848C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,38)];
    init_test(&cd_S19848C3, buf);
    S19848C3 *dp, &lv = *(dp=new (buf) S19848C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,148), "sizeof(S19848C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C3)");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19848C4*), ABISELECT(48,20), "S19848C3");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(48,20), "S19848C3");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(48,20), "S19848C3");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(80,48), "S19848C3");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(136,92), "S19848C3");
    /*is_ambiguous_... S19848C3::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(136,92), "S19848C3");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(96,60), "S19848C3");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C6*)(S19848C4*), ABISELECT(80,48), "S19848C3");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(80,48), "S19848C3");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C4*), ABISELECT(16,4), "S19848C3");
    /*is_ambiguous_... S19848C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C9*), ABISELECT(160,104), "S19848C3");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C10*)(S19848C9*), ABISELECT(208,132), "S19848C3");
    check_base_class_offset(lv, (S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(176,116), "S19848C3");
    check_base_class_offset(lv, (S20760C22_nt*)(S19848C10*)(S19848C9*), ABISELECT(216,136), "S19848C3");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*)(S19848C10*)(S19848C9*), 0, "S19848C3");
    check_base_class_offset(lv, (S19848C10*)(S19848C9*), ABISELECT(176,116), "S19848C3");
    check_base_class_offset(lv, (S19848C9*), ABISELECT(160,104), "S19848C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S19848C3");
    check_base_class_offset(lv, (S20759C5_nt*), ABISELECT(224,140), "S19848C3");
    test_class_info(&lv, &cd_S19848C3);
    dp->~S19848C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C3(Test_S19848C3, "S19848C3", ABISELECT(240,148));

#else // __cplusplus

extern void _ZN8S19848C3C1Ev();
extern void _ZN8S19848C3D2Ev();
Name_Map name_map_S19848C3[] = {
  NSPAIR(_ZN8S19848C3C1Ev),
  NSPAIR(_ZN8S19848C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C10;
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
extern Class_Descriptor cd_S19848C9;
extern VTBL_ENTRY _ZTI8S19848C9[];
extern  VTBL_ENTRY _ZTV8S19848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
static Base_Class bases_S19848C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C13,    ABISELECT(48,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(136,92), //bcp->offset
    38, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(96,60), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(80,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19848C4,    ABISELECT(16,4), //bcp->offset
    13, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C9,    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
    8, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(208,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19848C4,    ABISELECT(176,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(216,136), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19848C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19848C10,    ABISELECT(176,116), //bcp->offset
    52, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19848C9,    ABISELECT(160,104), //bcp->offset
    43, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20759C5_nt,    ABISELECT(224,140), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C3[];
extern void ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev)();
extern void _ZN8S19848C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev)();
extern void _ZN8S19848C3D0Ev() __attribute__((weak));
extern void _ZN8S19848C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C3D1Ev,_ZThn4_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19848C3D0Ev,_ZThn4_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19848C3D1Ev,_ZThn20_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19848C3D0Ev,_ZThn20_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S19848C3D1Ev,_ZThn48_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn80_N8S19848C3D0Ev,_ZThn48_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C3D1Ev,_ZThn92_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C3D0Ev,_ZThn92_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S19848C3D1Ev,_ZThn104_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S19848C3D0Ev,_ZThn104_N8S19848C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn224_N8S19848C3D1Ev,_ZThn140_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn224_N8S19848C3D0Ev,_ZThn140_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C3[] = {
  ABISELECT(224,140),
  0,
  ABISELECT(160,104),
  ABISELECT(80,48),
  ABISELECT(48,20),
  ABISELECT(16,4),
  0,
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19848C32v1Ev,
  ABISELECT(-16,-4),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev),
  ABISELECT(-48,-20),
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev),
  ABISELECT(40,32),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev),
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
  ABISELECT(-160,-104),
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev),
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-176,-116),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev),
  ABISELECT(-216,-136),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C3[];
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C4__8S19848C3[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C4__8S19848C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4__8S19848C3[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C4__8S19848C3[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C3[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C3[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C3[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C3[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C3[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C9D1Ev();
extern void _ZN8S19848C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C9__8S19848C3[] = {
  ABISELECT(-160,-104),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&_ZN8S19848C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C9D0Ev,
};
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C3[] = {
  ABISELECT(176,116),
  ABISELECT(136,92),
  ABISELECT(176,116),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19848C10__8S19848C9__8S19848C3[] = {
  ABISELECT(-176,-116),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C9__8S19848C3[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C9__8S19848C3[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C3[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19848C9__8S19848C3[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C9__8S19848C3[] = {
  ABISELECT(160,104),
  ABISELECT(136,92),
  ABISELECT(160,104),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C3[] = {
  ABISELECT(136,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn136_N8S19848C8D1Ev,_ZThn92_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn136_N8S19848C8D0Ev,_ZThn92_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__8S19848C3[] = {
  ABISELECT(-136,-92),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C3[] = {
  {&(_ZTV8S19848C3[10]),  10,69},
  {&(_ZTV8S19848C3[19]),  19,69},
  {&(_ZTV8S19848C3[24]),  24,69},
  {&(_ZTV8S19848C3[31]),  31,69},
  {&(_ZTV8S19848C3[36]),  36,69},
  {&(_ZTV8S19848C3[41]),  41,69},
  {&(_ZTV8S19848C3[50]),  50,69},
  {&(_ZTV8S19848C3[58]),  58,69},
  {&(_ZTV8S19848C3[62]),  62,69},
  {&(_ZTV8S19848C3[10]),  10,69},
  {&(_ZTV8S19848C3[67]),  67,69},
  {&(_tg__ZTV8S19848C4__8S19848C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C4__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C4__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C4__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C3[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C9__8S19848C3[6]),  6,8},
  {&(_tg__ZTV9S19848C108S19848C9__8S19848C3[6]),  6,8},
  {&(_tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C3[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C3[4]),  4,6},
  {&(_tg__ZTV9S19848C10__8S19848C9__8S19848C3[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C9__8S19848C3[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19848C9__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__8S19848C9__8S19848C3[4]),  4,6},
  {&(_tg__ZTV8S19848C8__A1__8S19848C3[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__8S19848C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C3[];
extern  VTBL_ENTRY _ZTV8S19848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C3[];
static VTBL_ENTRY alt_thunk_names311[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C8D0Ev,_ZThn92_N8S19848C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C8D1Ev,_ZThn92_N8S19848C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19848C3D0Ev,_ZThn104_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19848C3D1Ev,_ZThn104_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C3D0Ev,_ZThn48_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19848C3D1Ev,_ZThn48_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19848C3D0Ev,_ZThn140_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C3D0Ev,_ZThn92_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C3D0Ev,_ZThn20_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19848C3D1Ev,_ZThn140_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19848C3D1Ev,_ZThn92_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19848C3D1Ev,_ZThn20_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19848C3D0Ev,_ZThn4_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19848C3D1Ev,_ZThn4_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C3 = {  "S19848C3", // class name
  bases_S19848C3, 15,
  &(vtc_S19848C3[0]), // expected_vtbl_contents
  &(vtt_S19848C3[0]), // expected_vtt_contents
  ABISELECT(240,148), // object size
  NSPAIRA(_ZTI8S19848C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19848C3),69, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C3),42, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names311,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19848C15  : virtual S4161C4_nt {
  int s19848c15f0;
  ~S19848C15(); // tgen
  S19848C15(); // tgen
};
//SIG(-1 S19848C15) C1{ VBC2{ m Fp} Fi}


S19848C15 ::~S19848C15(){ note_dtor("S19848C15", this);} // tgen
S19848C15 ::S19848C15(){ note_ctor("S19848C15", this);} // tgen

static void Test_S19848C15()
{
  extern Class_Descriptor cd_S19848C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19848C15, buf);
    S19848C15 *dp, &lv = *(dp=new (buf) S19848C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19848C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19848C15)");
    check_base_class_offset(lv, (S4161C4_nt*), ABISELECT(16,8), "S19848C15");
    check_field_offset(lv, s19848c15f0, ABISELECT(8,4), "S19848C15.s19848c15f0");
    test_class_info(&lv, &cd_S19848C15);
    dp->~S19848C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C15(Test_S19848C15, "S19848C15", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19848C15C1Ev();
extern void _ZN9S19848C15D1Ev();
Name_Map name_map_S19848C15[] = {
  NSPAIR(_ZN9S19848C15C1Ev),
  NSPAIR(_ZN9S19848C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
static Base_Class bases_S19848C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4161C4_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19848C15[];
static  VTBL_ENTRY vtc_S19848C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C15[0]),
};
extern VTBL_ENTRY _ZTV9S19848C15[];
static  VTT_ENTRY vtt_S19848C15[] = {
  {&(_ZTV9S19848C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19848C15[];
extern  VTBL_ENTRY _ZTV9S19848C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C15[];
Class_Descriptor cd_S19848C15 = {  "S19848C15", // class name
  bases_S19848C15, 1,
  &(vtc_S19848C15[0]), // expected_vtbl_contents
  &(vtt_S19848C15[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19848C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19848C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19848C15),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  S19848C1  : virtual S4228C37 , S19848C3 , S19848C15 {
  virtual  ~S19848C1(); // _ZN8S19848C1D2Ev
  S19848C1(); // tgen
};
//SIG(1 S19848C1) C1{ VBC2{ m} BC3{ VBC4{ VBC5{ vd m Fi[6]} VBC6{ BC7{ vd m FL} VBC5 BC8{ VBC7 vd} FC5} FD} VBC9{ BC7 BC10{ BC11{ m Fp} BC4 BC12{ vd m} VBC8 vd} vd} BC13{ m} VBC14{ vd m Fl} vd v1} BC15{ VBC11 Fi} vd}


 S19848C1 ::~S19848C1(){ note_dtor("S19848C1", this);}
S19848C1 ::S19848C1(){ note_ctor("S19848C1", this);} // tgen

static void Test_S19848C1()
{
  extern Class_Descriptor cd_S19848C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,41)];
    init_test(&cd_S19848C1, buf);
    S19848C1 *dp, &lv = *(dp=new (buf) S19848C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,160), "sizeof(S19848C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19848C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19848C1");
    /*is_ambiguous_... S19848C1::S19848C4 */ AMB_check_base_class_offset(lv, (S20760C13*)(S19848C4*), ABISELECT(64,28), "S19848C1");
    check_base_class_offset(lv, (S20760C13*)(S19848C6*), ABISELECT(64,28), "S19848C1");
    check_base_class_offset(lv, (S20760C13*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(64,28), "S19848C1");
    /*is_ambiguous_... S19848C6::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C6*), ABISELECT(96,56), "S19848C1");
    check_base_class_offset(lv, (S20760C9*)(S19848C8*)(S19848C6*), ABISELECT(152,100), "S19848C1");
    /*is_ambiguous_... S19848C1::S19848C8 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C8*), ABISELECT(152,100), "S19848C1");
    check_base_class_offset(lv, (S19848C8*)(S19848C6*), ABISELECT(112,68), "S19848C1");
    /*is_ambiguous_... S19848C1::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C6*)(S19848C4*), ABISELECT(96,56), "S19848C1");
    check_base_class_offset(lv, (S19848C6*)(S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(96,56), "S19848C1");
    /*is_ambiguous_... S19848C3::S19848C4 */ AMB_check_base_class_offset(lv, (S19848C4*)(S19848C3*), ABISELECT(32,12), "S19848C1");
    /*is_ambiguous_... S19848C9::S20760C9 */ AMB_check_base_class_offset(lv, (S20760C9*)(S19848C9*), ABISELECT(176,112), "S19848C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C10*)(S19848C9*), ABISELECT(224,140), "S19848C1");
    check_base_class_offset(lv, (S19848C4*)(S19848C10*)(S19848C9*), ABISELECT(192,124), "S19848C1");
    check_base_class_offset(lv, (S20760C22_nt*)(S19848C10*)(S19848C9*), ABISELECT(232,144), "S19848C1");
    /*is_ambiguous_... S19848C10::S19848C8 */ AMB_check_base_class_offset(lv, (S19848C8*)(S19848C10*)(S19848C9*), 0, "S19848C1");
    check_base_class_offset(lv, (S19848C10*)(S19848C9*), ABISELECT(192,124), "S19848C1");
    check_base_class_offset(lv, (S19848C9*)(S19848C3*), ABISELECT(176,112), "S19848C1");
    check_base_class_offset(lv, (S4228C27*)(S19848C3*), 0, "S19848C1");
    check_base_class_offset(lv, (S20759C5_nt*)(S19848C3*), ABISELECT(240,148), "S19848C1");
    check_base_class_offset(lv, (S19848C3*), 0, "S19848C1");
    check_base_class_offset(lv, (S4161C4_nt*)(S19848C15*), ABISELECT(256,156), "S19848C1");
    check_base_class_offset(lv, (S19848C15*), ABISELECT(8,4), "S19848C1");
    test_class_info(&lv, &cd_S19848C1);
    dp->~S19848C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19848C1(Test_S19848C1, "S19848C1", ABISELECT(272,160));

#else // __cplusplus

extern void _ZN8S19848C1C1Ev();
extern void _ZN8S19848C1D2Ev();
Name_Map name_map_S19848C1[] = {
  NSPAIR(_ZN8S19848C1C1Ev),
  NSPAIR(_ZN8S19848C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C6;
extern VTBL_ENTRY _ZTI8S19848C6[];
extern  VTBL_ENTRY _ZTV8S19848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C6[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19848C4;
extern VTBL_ENTRY _ZTI8S19848C4[];
extern  VTBL_ENTRY _ZTV8S19848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C4[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
extern Class_Descriptor cd_S19848C8;
extern VTBL_ENTRY _ZTI8S19848C8[];
extern  VTBL_ENTRY _ZTV8S19848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C8[];
extern Class_Descriptor cd_S19848C10;
extern VTBL_ENTRY _ZTI9S19848C10[];
extern  VTBL_ENTRY _ZTV9S19848C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C10[];
extern Class_Descriptor cd_S19848C9;
extern VTBL_ENTRY _ZTI8S19848C9[];
extern  VTBL_ENTRY _ZTV8S19848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S20759C5_nt;
extern VTBL_ENTRY _ZTI11S20759C5_nt[];
extern  VTBL_ENTRY _ZTV11S20759C5_nt[];
extern Class_Descriptor cd_S19848C3;
extern VTBL_ENTRY _ZTI8S19848C3[];
extern  VTBL_ENTRY _ZTV8S19848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C3[];
extern Class_Descriptor cd_S4161C4_nt;
extern VTBL_ENTRY _ZTI10S4161C4_nt[];
extern Class_Descriptor cd_S19848C15;
extern VTBL_ENTRY _ZTI9S19848C15[];
extern  VTBL_ENTRY _ZTV9S19848C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19848C15[];
static Base_Class bases_S19848C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20760C13,    ABISELECT(64,28), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20760C9,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20760C9,    ABISELECT(152,100), //bcp->offset
    43, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19848C8,    ABISELECT(112,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //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
    5, //immediately_derived
  0, 0},
  {&cd_S19848C6,    ABISELECT(96,56), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19848C4,    ABISELECT(32,12), //bcp->offset
    18, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20760C9,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4161C4_nt,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19848C4,    ABISELECT(192,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20760C22_nt,    ABISELECT(232,144), //bcp->offset
    65, //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
    10, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19848C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19848C10,    ABISELECT(192,124), //bcp->offset
    57, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19848C9,    ABISELECT(176,112), //bcp->offset
    48, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20759C5_nt,    ABISELECT(240,148), //bcp->offset
    69, //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
    16, //immediately_derived
  0, 1},
  {&cd_S19848C3,    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_S4161C4_nt,    ABISELECT(256,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19848C15,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19848C1[];
extern void ABISELECT(_ZTv0_n32_N8S19848C1D1Ev,_ZTv0_n16_N8S19848C1D1Ev)();
extern void _ZN8S19848C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C1D0Ev,_ZTv0_n16_N8S19848C1D0Ev)();
extern void _ZN8S19848C1D0Ev() __attribute__((weak));
extern void _ZN8S19848C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19848C1D1Ev,_ZTv0_n24_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C1D1Ev,_ZThn12_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19848C1D0Ev,_ZTv0_n24_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C1D0Ev,_ZThn12_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C1D1Ev,_ZThn28_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C1D0Ev,_ZThn28_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C1D1Ev,_ZTv0_n20_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19848C1D1Ev,_ZThn56_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C1D0Ev,_ZTv0_n20_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19848C1D0Ev,_ZThn56_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n40_N8S19848C1D1Ev,_ZTvn12_n20_N8S19848C1D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C1D0Ev,_ZTvn12_n20_N8S19848C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C1D1Ev,_ZThn100_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C1D0Ev,_ZThn100_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C1D1Ev,_ZTv0_n28_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19848C1D1Ev,_ZThn112_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C1D0Ev,_ZTv0_n28_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19848C1D0Ev,_ZThn112_N8S19848C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n56_N8S19848C1D1Ev,_ZTvn12_n28_N8S19848C1D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19848C1D0Ev,_ZTvn12_n28_N8S19848C1D0Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C1D1Ev,_ZTvn32_n28_N8S19848C1D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C1D0Ev,_ZTvn32_n28_N8S19848C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19848C1D1Ev,_ZThn148_N8S19848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S19848C1D0Ev,_ZThn148_N8S19848C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19848C1[] = {
  ABISELECT(256,156),
  0,
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C1D1Ev,_ZTv0_n16_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C1D0Ev,_ZTv0_n16_N8S19848C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19848C32v1Ev,
  ABISELECT(248,152),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C1D1Ev,_ZTv0_n24_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C1D0Ev,_ZTv0_n24_N8S19848C1D0Ev),
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C1D1Ev,_ZTv0_n20_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C1D0Ev,_ZTv0_n20_N8S19848C1D0Ev),
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C1D1Ev,_ZTvn12_n20_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C1D0Ev,_ZTvn12_n20_N8S19848C1D0Ev),
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C1D1Ev,_ZTv0_n28_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C1D0Ev,_ZTv0_n28_N8S19848C1D0Ev),
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C1D1Ev,_ZTvn12_n28_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C1D0Ev,_ZTvn12_n28_N8S19848C1D0Ev),
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C1D1Ev,_ZTvn32_n28_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C1D0Ev,_ZTvn32_n28_N8S19848C1D0Ev),
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19848C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19848C1[];
extern void ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev)();
extern void _ZN8S19848C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev)();
extern void _ZN8S19848C3D0Ev() __attribute__((weak));
extern void _ZN8S19848C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C3__8S19848C1[] = {
  ABISELECT(240,148),
  0,
  ABISELECT(176,112),
  ABISELECT(96,56),
  ABISELECT(64,28),
  ABISELECT(32,12),
  0,
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19848C32v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C3D1Ev,_ZThn12_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C3D0Ev,_ZThn12_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C4__8S19848C3__8S19848C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C3D1Ev,_ZThn28_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C3D0Ev,_ZThn28_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C3__8S19848C1[] = {
  ABISELECT(-64,-28),
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19848C3D1Ev,_ZThn56_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19848C3D0Ev,_ZThn56_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C3__8S19848C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C3__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D1Ev,_ZTvn12_n20_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C3D0Ev,_ZTvn12_n20_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C3D1Ev,_ZThn100_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C3D0Ev,_ZThn100_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C3__8S19848C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S19848C3D1Ev,_ZThn112_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S19848C3D0Ev,_ZThn112_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C9__8S19848C3__8S19848C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19848C108S19848C9__8S19848C3__8S19848C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D1Ev,_ZTvn12_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n56_N8S19848C3D0Ev,_ZTvn12_n28_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev)();
extern void ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S20760C22_nt9S19848C108S19848C9__8S19848C3__8S19848C1[] = {
  ABISELECT(-232,-144),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D1Ev,_ZTvn32_n28_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n56_N8S19848C3D0Ev,_ZTvn32_n28_N8S19848C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev)();
extern void ABISELECT(_ZThn240_N8S19848C3D1Ev,_ZThn148_N8S19848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev)();
extern void ABISELECT(_ZThn240_N8S19848C3D0Ev,_ZThn148_N8S19848C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20759C5_nt__8S19848C3__8S19848C1[] = {
  ABISELECT(-240,-148),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S19848C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19848C15__8S19848C1[] = {
  ABISELECT(248,152),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C15[0]),
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C4__8S19848C1[] = {
  ABISELECT(120,88),
  ABISELECT(64,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C4__8S19848C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C4__8S19848C1[] = {
  ABISELECT(-64,-44),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(-80,-56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
extern void ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C4__8S19848C1[] = {
  ABISELECT(-120,-88),
  ABISELECT(-120,-88),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void _ZN8S19848C6D1Ev();
extern void _ZN8S19848C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C1[] = {
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&_ZN8S19848C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C6D0Ev,
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C1[] = {
  ABISELECT(40,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C1[] = {
  ABISELECT(-40,-32),
  ABISELECT(-40,-32),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C6__8S19848C1[] = {
  ABISELECT(32,28),
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__8S19848C6__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D1Ev,_ZThn12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C6D0Ev,_ZThn12_N8S19848C6D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev)();
extern void ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C6__8S19848C1[] = {
  ABISELECT(-56,-44),
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S19848C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev),
};
extern void _ZN8S19848C9D1Ev();
extern void _ZN8S19848C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C9__8S19848C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-24,-12),
  ABISELECT(-80,-56),
  ABISELECT(-112,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&_ZN8S19848C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C9D0Ev,
};
extern void _ZN9S19848C10D1Ev();
extern void _ZN9S19848C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&_ZN9S19848C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19848C10D0Ev,
};
extern void _ZN8S19848C4D1Ev();
extern void _ZN8S19848C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&_ZN8S19848C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D1Ev,_ZTvn12_n20_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C4D0Ev,_ZTvn12_n20_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI8S19848C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(128,96),
  ABISELECT(128,96),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(96,68),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(96,68),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D1Ev,_ZTv0_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19848C10D0Ev,_ZTv0_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D1Ev,_ZTvn12_n20_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N9S19848C10D0Ev,_ZTvn12_n20_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D1Ev,_ZTv0_n12_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19848C10D0Ev,_ZTv0_n12_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C1[] = {
  ABISELECT(192,124),
  ABISELECT(152,100),
  ABISELECT(192,124),
  (VTBL_ENTRY)&(_ZTI9S19848C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D1Ev,_ZTv0_n16_N9S19848C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19848C10D0Ev,_ZTv0_n16_N9S19848C10D0Ev),
};
extern void ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19848C10__8S19848C9__8S19848C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-40,-24),
  ABISELECT(-96,-68),
  ABISELECT(-128,-96),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D1Ev,_ZThn12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19848C9D0Ev,_ZThn12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20760C13__8S19848C9__8S19848C1[] = {
  ABISELECT(112,84),
  ABISELECT(112,84),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C6__8S19848C9__8S19848C1[] = {
  ABISELECT(80,56),
  ABISELECT(56,44),
  ABISELECT(-32,-28),
  ABISELECT(80,56),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D1Ev,_ZTv0_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19848C9D0Ev,_ZTv0_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C1[] = {
  ABISELECT(40,32),
  ABISELECT(64,44),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D1Ev,_ZTvn12_n20_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n40_N8S19848C9D0Ev,_ZTvn12_n20_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20760C9__A2__8S19848C9__8S19848C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D1Ev,_ZTv0_n12_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C9D0Ev,_ZTv0_n12_N8S19848C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C9__8S19848C1[] = {
  ABISELECT(176,112),
  ABISELECT(152,100),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI8S19848C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D1Ev,_ZTv0_n16_N8S19848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19848C9D0Ev,_ZTv0_n16_N8S19848C9D0Ev),
};
extern void _ZN8S19848C8D1Ev();
extern void _ZN8S19848C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19848C8__A1__8S19848C1[] = {
  ABISELECT(152,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&_ZN8S19848C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19848C8D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev)();
extern void ABISELECT(_ZThn152_N8S19848C8D1Ev,_ZThn100_N8S19848C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev)();
extern void ABISELECT(_ZThn152_N8S19848C8D0Ev,_ZThn100_N8S19848C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19848C8__A1__8S19848C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S19848C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev),
};
static  VTT_ENTRY vtt_S19848C1[] = {
  {&(_ZTV8S19848C1[12]),  12,74},
  {&(_tg__ZTV8S19848C3__8S19848C1[10]),  10,13},
  {&(_tg__ZTV8S19848C4__8S19848C3__8S19848C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C3__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C9__8S19848C3__8S19848C1[7]),  7,9},
  {&(_tg__ZTV9S19848C108S19848C9__8S19848C3__8S19848C1[6]),  6,8},
  {&(_tg__ZTV12S20760C22_nt9S19848C108S19848C9__8S19848C3__8S19848C1[2]),  2,4},
  {&(_tg__ZTV8S19848C3__8S19848C1[10]),  10,13},
  {&(_tg__ZTV11S20759C5_nt__8S19848C3__8S19848C1[3]),  3,5},
  {&(_tg__ZTV9S19848C15__8S19848C1[3]),  3,3},
  {&(_ZTV8S19848C1[24]),  24,74},
  {&(_ZTV8S19848C1[29]),  29,74},
  {&(_ZTV8S19848C1[36]),  36,74},
  {&(_ZTV8S19848C1[41]),  41,74},
  {&(_ZTV8S19848C1[46]),  46,74},
  {&(_ZTV8S19848C1[55]),  55,74},
  {&(_ZTV8S19848C1[63]),  63,74},
  {&(_ZTV8S19848C1[67]),  67,74},
  {&(_ZTV8S19848C1[12]),  12,74},
  {&(_ZTV8S19848C1[72]),  72,74},
  {&(_ZTV8S19848C1[18]),  18,74},
  {&(_tg__ZTV8S19848C4__8S19848C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C4__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C4__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C4__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C4__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C1[4]),  4,6},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C88S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__8S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C8__8S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C6__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C9__8S19848C1[6]),  6,8},
  {&(_tg__ZTV9S19848C108S19848C9__8S19848C1[6]),  6,8},
  {&(_tg__ZTV8S19848C49S19848C108S19848C9__A1__8S19848C1[5]),  5,7},
  {&(_tg__ZTV9S20760C13__8S19848C49S19848C108S19848C9__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C49S19848C108S19848C9__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__8S19848C49S19848C108S19848C9__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV9S20760C13__9S19848C108S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__9S19848C108S19848C9__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__9S19848C108S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A1__9S19848C108S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__9S19848C108S19848C9__8S19848C1[4]),  4,6},
  {&(_tg__ZTV9S19848C10__8S19848C9__8S19848C1[6]),  6,8},
  {&(_tg__ZTV9S20760C13__8S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C6__8S19848C9__8S19848C1[5]),  5,7},
  {&(_tg__ZTV8S19848C88S19848C6__8S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__A2__8S19848C9__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S19848C8__A1__8S19848C9__8S19848C1[4]),  4,6},
  {&(_tg__ZTV8S19848C8__A1__8S19848C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19848C8__A1__8S19848C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19848C1[];
extern  VTBL_ENTRY _ZTV8S19848C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19848C1[];
static VTBL_ENTRY alt_thunk_names312[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D0Ev,_ZTv0_n12_N8S19848C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D0Ev,_ZThn44_N8S19848C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C6D1Ev,_ZTv0_n12_N8S19848C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19848C6D1Ev,_ZThn44_N8S19848C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D0Ev,_ZTv0_n12_N8S19848C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C8D0Ev,_ZThn100_N8S19848C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D0Ev,_ZThn32_N8S19848C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C8D1Ev,_ZTv0_n12_N8S19848C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C8D1Ev,_ZThn100_N8S19848C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19848C8D1Ev,_ZThn32_N8S19848C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D0Ev,_ZTv0_n20_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D0Ev,_ZThn44_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C4D1Ev,_ZTv0_n20_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C4D1Ev,_ZThn44_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D0Ev,_ZTv0_n12_N8S19848C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D0Ev,_ZThn88_N8S19848C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D0Ev,_ZThn16_N8S19848C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C4D1Ev,_ZTv0_n12_N8S19848C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19848C4D1Ev,_ZThn88_N8S19848C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C4D1Ev,_ZThn16_N8S19848C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D0Ev,_ZTv0_n28_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C3D0Ev,_ZThn112_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C3D1Ev,_ZTv0_n28_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C3D1Ev,_ZThn112_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D0Ev,_ZTv0_n20_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C3D0Ev,_ZThn56_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C3D1Ev,_ZTv0_n20_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C3D1Ev,_ZThn56_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D0Ev,_ZTv0_n12_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C3D0Ev,_ZThn148_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C3D0Ev,_ZThn100_N8S19848C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C3D0Ev,_ZThn28_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C3D1Ev,_ZTv0_n12_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C3D1Ev,_ZThn148_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C3D1Ev,_ZThn100_N8S19848C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C3D1Ev,_ZThn28_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D0Ev,_ZTv0_n24_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C3D0Ev,_ZThn12_N8S19848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C3D1Ev,_ZTv0_n24_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C3D1Ev,_ZThn12_N8S19848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D0Ev,_ZTv0_n16_N8S19848C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C3D1Ev,_ZTv0_n16_N8S19848C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19848C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C1D0Ev,_ZTv0_n28_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C1D0Ev,_ZThn112_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19848C1D1Ev,_ZTv0_n28_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19848C1D1Ev,_ZThn112_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C1D0Ev,_ZTv0_n20_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C1D0Ev,_ZThn56_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19848C1D1Ev,_ZTv0_n20_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19848C1D1Ev,_ZThn56_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C1D0Ev,_ZTv0_n12_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C1D0Ev,_ZThn148_N8S19848C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C1D0Ev,_ZThn100_N8S19848C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C1D0Ev,_ZThn28_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19848C1D1Ev,_ZTv0_n12_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S19848C1D1Ev,_ZThn148_N8S19848C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19848C1D1Ev,_ZThn100_N8S19848C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19848C1D1Ev,_ZThn28_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C1D0Ev,_ZTv0_n24_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C1D0Ev,_ZThn12_N8S19848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19848C1D1Ev,_ZTv0_n24_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19848C1D1Ev,_ZThn12_N8S19848C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C1D0Ev,_ZTv0_n16_N8S19848C1D0Ev), // 
  (VTBL_ENTRY)_ZN8S19848C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19848C1D1Ev,_ZTv0_n16_N8S19848C1D1Ev), // 
  (VTBL_ENTRY)_ZN8S19848C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19848C1 = {  "S19848C1", // class name
  bases_S19848C1, 19,
  &(vtc_S19848C1[0]), // expected_vtbl_contents
  &(vtt_S19848C1[0]), // expected_vtt_contents
  ABISELECT(272,160), // object size
  NSPAIRA(_ZTI8S19848C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19848C1),74, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19848C1),55, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names312,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5436C3  {
  char s5436c3f0;
  int s5436c3f1;
  void *s5436c3f2[3];
  char s5436c3f3[3];
  ::S4228C19_nt s5436c3f4;
  char s5436c3f5;
  void *s5436c3f6;
  int s5436c3f7[2];
  virtual  ~S5436C3(); // _ZN7S5436C3D1Ev
  virtual void  v9(); // _ZN7S5436C32v9Ev
  virtual void  v10(); // _ZN7S5436C33v10Ev
  virtual void  v11(); // _ZN7S5436C33v11Ev
  virtual void  v12(); // _ZN7S5436C33v12Ev
  virtual void  v13(); // _ZN7S5436C33v13Ev
  virtual void  v14(); // _ZN7S5436C33v14Ev
  virtual void  v15(); // _ZN7S5436C33v15Ev
  virtual void  v16(); // _ZN7S5436C33v16Ev
  virtual void  v17(); // _ZN7S5436C33v17Ev
  virtual void  v18(); // _ZN7S5436C33v18Ev
  virtual void  v19(); // _ZN7S5436C33v19Ev
  virtual void  v20(); // _ZN7S5436C33v20Ev
  virtual void  v21(); // _ZN7S5436C33v21Ev
  virtual void  v22(); // _ZN7S5436C33v22Ev
  S5436C3(); // tgen
};
//SIG(-1 S5436C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S5436C3 ::~S5436C3(){ note_dtor("S5436C3", this);}
void  S5436C3 ::v9(){vfunc_called(this, "_ZN7S5436C32v9Ev");}
void  S5436C3 ::v10(){vfunc_called(this, "_ZN7S5436C33v10Ev");}
void  S5436C3 ::v11(){vfunc_called(this, "_ZN7S5436C33v11Ev");}
void  S5436C3 ::v12(){vfunc_called(this, "_ZN7S5436C33v12Ev");}
void  S5436C3 ::v13(){vfunc_called(this, "_ZN7S5436C33v13Ev");}
void  S5436C3 ::v14(){vfunc_called(this, "_ZN7S5436C33v14Ev");}
void  S5436C3 ::v15(){vfunc_called(this, "_ZN7S5436C33v15Ev");}
void  S5436C3 ::v16(){vfunc_called(this, "_ZN7S5436C33v16Ev");}
void  S5436C3 ::v17(){vfunc_called(this, "_ZN7S5436C33v17Ev");}
void  S5436C3 ::v18(){vfunc_called(this, "_ZN7S5436C33v18Ev");}
void  S5436C3 ::v19(){vfunc_called(this, "_ZN7S5436C33v19Ev");}
void  S5436C3 ::v20(){vfunc_called(this, "_ZN7S5436C33v20Ev");}
void  S5436C3 ::v21(){vfunc_called(this, "_ZN7S5436C33v21Ev");}
void  S5436C3 ::v22(){vfunc_called(this, "_ZN7S5436C33v22Ev");}
S5436C3 ::S5436C3(){ note_ctor("S5436C3", this);} // tgen

static void Test_S5436C3()
{
  extern Class_Descriptor cd_S5436C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S5436C3, buf);
    S5436C3 *dp, &lv = *(dp=new (buf) S5436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S5436C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5436C3)");
    check_field_offset(lv, s5436c3f0, ABISELECT(8,4), "S5436C3.s5436c3f0");
    check_field_offset(lv, s5436c3f1, ABISELECT(12,8), "S5436C3.s5436c3f1");
    check_field_offset(lv, s5436c3f2, ABISELECT(16,12), "S5436C3.s5436c3f2");
    check_field_offset(lv, s5436c3f3, ABISELECT(40,24), "S5436C3.s5436c3f3");
    check_field_offset(lv, s5436c3f4, ABISELECT(48,28), "S5436C3.s5436c3f4");
    check_field_offset(lv, s5436c3f5, ABISELECT(64,40), "S5436C3.s5436c3f5");
    check_field_offset(lv, s5436c3f6, ABISELECT(72,44), "S5436C3.s5436c3f6");
    check_field_offset(lv, s5436c3f7, ABISELECT(80,48), "S5436C3.s5436c3f7");
    test_class_info(&lv, &cd_S5436C3);
    dp->~S5436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5436C3(Test_S5436C3, "S5436C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S5436C3C1Ev();
extern void _ZN7S5436C3D1Ev();
Name_Map name_map_S5436C3[] = {
  NSPAIR(_ZN7S5436C3C1Ev),
  NSPAIR(_ZN7S5436C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5436C3[];
extern void _ZN7S5436C3D1Ev();
extern void _ZN7S5436C3D0Ev();
extern void _ZN7S5436C32v9Ev();
extern void _ZN7S5436C33v10Ev();
extern void _ZN7S5436C33v11Ev();
extern void _ZN7S5436C33v12Ev();
extern void _ZN7S5436C33v13Ev();
extern void _ZN7S5436C33v14Ev();
extern void _ZN7S5436C33v15Ev();
extern void _ZN7S5436C33v16Ev();
extern void _ZN7S5436C33v17Ev();
extern void _ZN7S5436C33v18Ev();
extern void _ZN7S5436C33v19Ev();
extern void _ZN7S5436C33v20Ev();
extern void _ZN7S5436C33v21Ev();
extern void _ZN7S5436C33v22Ev();
static  VTBL_ENTRY vtc_S5436C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5436C3[0]),
  (VTBL_ENTRY)&_ZN7S5436C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5436C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5436C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v22Ev,
};
extern VTBL_ENTRY _ZTI7S5436C3[];
extern  VTBL_ENTRY _ZTV7S5436C3[];
Class_Descriptor cd_S5436C3 = {  "S5436C3", // class name
  0,0,//no base classes
  &(vtc_S5436C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S5436C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5436C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5436C2  : S5436C3 {
  char s5436c2f0;
  void *s5436c2f1[2];
  virtual  ~S5436C2(); // _ZN7S5436C2D1Ev
  virtual void  v23(); // _ZN7S5436C23v23Ev
  S5436C2(); // tgen
};
//SIG(-1 S5436C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S5436C2 ::~S5436C2(){ note_dtor("S5436C2", this);}
void  S5436C2 ::v23(){vfunc_called(this, "_ZN7S5436C23v23Ev");}
S5436C2 ::S5436C2(){ note_ctor("S5436C2", this);} // tgen

static void Test_S5436C2()
{
  extern Class_Descriptor cd_S5436C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S5436C2, buf);
    S5436C2 *dp, &lv = *(dp=new (buf) S5436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S5436C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5436C2)");
    check_base_class_offset(lv, (S5436C3*), 0, "S5436C2");
    check_field_offset(lv, s5436c2f0, ABISELECT(88,56), "S5436C2.s5436c2f0");
    check_field_offset(lv, s5436c2f1, ABISELECT(96,60), "S5436C2.s5436c2f1");
    test_class_info(&lv, &cd_S5436C2);
    dp->~S5436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5436C2(Test_S5436C2, "S5436C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S5436C2C1Ev();
extern void _ZN7S5436C2D1Ev();
Name_Map name_map_S5436C2[] = {
  NSPAIR(_ZN7S5436C2C1Ev),
  NSPAIR(_ZN7S5436C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5436C3;
extern VTBL_ENTRY _ZTI7S5436C3[];
extern  VTBL_ENTRY _ZTV7S5436C3[];
static Base_Class bases_S5436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5436C2[];
extern void _ZN7S5436C2D1Ev();
extern void _ZN7S5436C2D0Ev();
extern void _ZN7S5436C32v9Ev();
extern void _ZN7S5436C33v10Ev();
extern void _ZN7S5436C33v11Ev();
extern void _ZN7S5436C33v12Ev();
extern void _ZN7S5436C33v13Ev();
extern void _ZN7S5436C33v14Ev();
extern void _ZN7S5436C33v15Ev();
extern void _ZN7S5436C33v16Ev();
extern void _ZN7S5436C33v17Ev();
extern void _ZN7S5436C33v18Ev();
extern void _ZN7S5436C33v19Ev();
extern void _ZN7S5436C33v20Ev();
extern void _ZN7S5436C33v21Ev();
extern void _ZN7S5436C33v22Ev();
extern void _ZN7S5436C23v23Ev();
static  VTBL_ENTRY vtc_S5436C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5436C2[0]),
  (VTBL_ENTRY)&_ZN7S5436C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5436C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5436C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5436C23v23Ev,
};
extern VTBL_ENTRY _ZTI7S5436C2[];
extern  VTBL_ENTRY _ZTV7S5436C2[];
Class_Descriptor cd_S5436C2 = {  "S5436C2", // class name
  bases_S5436C2, 1,
  &(vtc_S5436C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S5436C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5436C2),19, //virtual function table var
  2, // 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  S5436C1  : S5436C2 {
  int s5436c1f0[5];
  virtual  ~S5436C1(); // _ZN7S5436C1D1Ev
  virtual void  v1(); // _ZN7S5436C12v1Ev
  virtual void  v2(); // _ZN7S5436C12v2Ev
  virtual void  v3(); // _ZN7S5436C12v3Ev
  virtual void  v4(); // _ZN7S5436C12v4Ev
  virtual void  v5(); // _ZN7S5436C12v5Ev
  virtual void  v6(); // _ZN7S5436C12v6Ev
  virtual void  v7(); // _ZN7S5436C12v7Ev
  virtual void  v8(); // _ZN7S5436C12v8Ev
  S5436C1(); // tgen
};
//SIG(1 S5436C1) C1{ BC2{ BC3{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v23 Fc Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 Fi[5]}


 S5436C1 ::~S5436C1(){ note_dtor("S5436C1", this);}
void  S5436C1 ::v1(){vfunc_called(this, "_ZN7S5436C12v1Ev");}
void  S5436C1 ::v2(){vfunc_called(this, "_ZN7S5436C12v2Ev");}
void  S5436C1 ::v3(){vfunc_called(this, "_ZN7S5436C12v3Ev");}
void  S5436C1 ::v4(){vfunc_called(this, "_ZN7S5436C12v4Ev");}
void  S5436C1 ::v5(){vfunc_called(this, "_ZN7S5436C12v5Ev");}
void  S5436C1 ::v6(){vfunc_called(this, "_ZN7S5436C12v6Ev");}
void  S5436C1 ::v7(){vfunc_called(this, "_ZN7S5436C12v7Ev");}
void  S5436C1 ::v8(){vfunc_called(this, "_ZN7S5436C12v8Ev");}
S5436C1 ::S5436C1(){ note_ctor("S5436C1", this);} // tgen

static void Test_S5436C1()
{
  extern Class_Descriptor cd_S5436C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S5436C1, buf);
    S5436C1 *dp, &lv = *(dp=new (buf) S5436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S5436C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5436C1)");
    check_base_class_offset(lv, (S5436C3*)(S5436C2*), 0, "S5436C1");
    check_base_class_offset(lv, (S5436C2*), 0, "S5436C1");
    check_field_offset(lv, s5436c1f0, ABISELECT(112,68), "S5436C1.s5436c1f0");
    test_class_info(&lv, &cd_S5436C1);
    dp->~S5436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5436C1(Test_S5436C1, "S5436C1", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S5436C1C1Ev();
extern void _ZN7S5436C1D1Ev();
Name_Map name_map_S5436C1[] = {
  NSPAIR(_ZN7S5436C1C1Ev),
  NSPAIR(_ZN7S5436C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5436C3;
extern VTBL_ENTRY _ZTI7S5436C3[];
extern  VTBL_ENTRY _ZTV7S5436C3[];
extern Class_Descriptor cd_S5436C2;
extern VTBL_ENTRY _ZTI7S5436C2[];
extern  VTBL_ENTRY _ZTV7S5436C2[];
static Base_Class bases_S5436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5436C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5436C1[];
extern void _ZN7S5436C1D1Ev();
extern void _ZN7S5436C1D0Ev();
extern void _ZN7S5436C32v9Ev();
extern void _ZN7S5436C33v10Ev();
extern void _ZN7S5436C33v11Ev();
extern void _ZN7S5436C33v12Ev();
extern void _ZN7S5436C33v13Ev();
extern void _ZN7S5436C33v14Ev();
extern void _ZN7S5436C33v15Ev();
extern void _ZN7S5436C33v16Ev();
extern void _ZN7S5436C33v17Ev();
extern void _ZN7S5436C33v18Ev();
extern void _ZN7S5436C33v19Ev();
extern void _ZN7S5436C33v20Ev();
extern void _ZN7S5436C33v21Ev();
extern void _ZN7S5436C33v22Ev();
extern void _ZN7S5436C23v23Ev();
extern void _ZN7S5436C12v1Ev();
extern void _ZN7S5436C12v2Ev();
extern void _ZN7S5436C12v3Ev();
extern void _ZN7S5436C12v4Ev();
extern void _ZN7S5436C12v5Ev();
extern void _ZN7S5436C12v6Ev();
extern void _ZN7S5436C12v7Ev();
extern void _ZN7S5436C12v8Ev();
static  VTBL_ENTRY vtc_S5436C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5436C1[0]),
  (VTBL_ENTRY)&_ZN7S5436C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5436C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5436C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5436C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5436C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v6Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v7Ev,
  (VTBL_ENTRY)&_ZN7S5436C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S5436C1[];
extern  VTBL_ENTRY _ZTV7S5436C1[];
Class_Descriptor cd_S5436C1 = {  "S5436C1", // class name
  bases_S5436C1, 2,
  &(vtc_S5436C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S5436C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5436C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C5  : S4228C37 , virtual S4228C27 {
  ::S4228C37 s7252c5f0;
  ~S7252C5(); // tgen
  S7252C5(); // tgen
};
//SIG(-1 S7252C5) C1{ BC2{ m} VBC3{ m} FC2}


S7252C5 ::~S7252C5(){ note_dtor("S7252C5", this);} // tgen
S7252C5 ::S7252C5(){ note_ctor("S7252C5", this);} // tgen

static void Test_S7252C5()
{
  extern Class_Descriptor cd_S7252C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7252C5, buf);
    S7252C5 *dp, &lv = *(dp=new (buf) S7252C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7252C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C5)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7252C5");
    check_base_class_offset(lv, (S4228C27*), 0, "S7252C5");
    check_field_offset(lv, s7252c5f0, ABISELECT(8,4), "S7252C5.s7252c5f0");
    test_class_info(&lv, &cd_S7252C5);
    dp->~S7252C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C5(Test_S7252C5, "S7252C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7252C5C1Ev();
extern void _ZN7S7252C5D1Ev();
Name_Map name_map_S7252C5[] = {
  NSPAIR(_ZN7S7252C5C1Ev),
  NSPAIR(_ZN7S7252C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7252C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7252C5[];
static  VTBL_ENTRY vtc_S7252C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
extern VTBL_ENTRY _ZTV7S7252C5[];
static  VTT_ENTRY vtt_S7252C5[] = {
  {&(_ZTV7S7252C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
Class_Descriptor cd_S7252C5 = {  "S7252C5", // class name
  bases_S7252C5, 2,
  &(vtc_S7252C5[0]), // expected_vtbl_contents
  &(vtt_S7252C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7252C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7252C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C5),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  S7252C8  : S4228C27 , virtual S4228C37 , virtual S7252C5 {
  void *s7252c8f0;
  ~S7252C8(); // tgen
  S7252C8(); // tgen
};
//SIG(-1 S7252C8) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S7252C8 ::~S7252C8(){ note_dtor("S7252C8", this);} // tgen
S7252C8 ::S7252C8(){ note_ctor("S7252C8", this);} // tgen

static void Test_S7252C8()
{
  extern Class_Descriptor cd_S7252C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S7252C8, buf);
    S7252C8 *dp, &lv = *(dp=new (buf) S7252C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7252C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C8)");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S7252C8");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S7252C8");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(16,8), "S7252C8");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(25,13), "S7252C8");
    check_base_class_offset(lv, (S7252C5*), ABISELECT(16,8), "S7252C8");
    check_field_offset(lv, s7252c8f0, ABISELECT(8,4), "S7252C8.s7252c8f0");
    test_class_info(&lv, &cd_S7252C8);
    dp->~S7252C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C8(Test_S7252C8, "S7252C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7252C8C1Ev();
extern void _ZN7S7252C8D1Ev();
Name_Map name_map_S7252C8[] = {
  NSPAIR(_ZN7S7252C8C1Ev),
  NSPAIR(_ZN7S7252C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
static Base_Class bases_S7252C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C8[];
static  VTBL_ENTRY vtc_S7252C8[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
extern VTBL_ENTRY _ZTV7S7252C8[];
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C8[] = {
  {&(_ZTV7S7252C8[5]),  5,8},
  {&(_ZTV7S7252C8[8]),  8,8},
  {&(_tg__ZTV7S7252C5__7S7252C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
Class_Descriptor cd_S7252C8 = {  "S7252C8", // class name
  bases_S7252C8, 5,
  &(vtc_S7252C8[0]), // expected_vtbl_contents
  &(vtt_S7252C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7252C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7252C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C8),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C3  : S3423C8_nt , virtual S7252C5 , S7252C8 , S4228C27 {
  char s7252c3f0;
  virtual  ~S7252C3(); // _ZN7S7252C3D2Ev
  S7252C3(); // tgen
};
//SIG(-1 S7252C3) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S7252C3 ::~S7252C3(){ note_dtor("S7252C3", this);}
S7252C3 ::S7252C3(){ note_ctor("S7252C3", this);} // tgen

static void Test_S7252C3()
{
  extern Class_Descriptor cd_S7252C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S7252C3, buf);
    S7252C3 *dp, &lv = *(dp=new (buf) S7252C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S7252C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C3)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S7252C3");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(24,16), "S7252C3");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(33,21), "S7252C3");
    check_base_class_offset(lv, (S7252C5*), ABISELECT(24,16), "S7252C3");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*), ABISELECT(24,16), "S7252C3");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*), 0, "S7252C3");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*), 0, "S7252C3");
    check_base_class_offset(lv, (S7252C8*), 0, "S7252C3");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), ABISELECT(20,12), "S7252C3");
    check_field_offset(lv, s7252c3f0, ABISELECT(20,12), "S7252C3.s7252c3f0");
    test_class_info(&lv, &cd_S7252C3);
    dp->~S7252C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C3(Test_S7252C3, "S7252C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S7252C3C1Ev();
extern void _ZN7S7252C3D2Ev();
Name_Map name_map_S7252C3[] = {
  NSPAIR(_ZN7S7252C3C1Ev),
  NSPAIR(_ZN7S7252C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7252C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C3[];
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY vtc_S7252C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
extern VTBL_ENTRY _ZTV7S7252C3[];
static  VTBL_ENTRY _tg__ZTV7S7252C8__7S7252C3[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C8__7S7252C3[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C3[] = {
  {&(_ZTV7S7252C3[5]),  5,10},
  {&(_tg__ZTV7S7252C8__7S7252C3[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C8__7S7252C3[3]),  3,3},
  {&(_ZTV7S7252C3[10]),  10,10},
  {&(_tg__ZTV7S7252C5__7S7252C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
Class_Descriptor cd_S7252C3 = {  "S7252C3", // class name
  bases_S7252C3, 8,
  &(vtc_S7252C3[0]), // expected_vtbl_contents
  &(vtt_S7252C3[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S7252C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7252C3),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C11  : virtual S7252C3 {
  int s7252c11f0;
  virtual  ~S7252C11(); // _ZN8S7252C11D2Ev
  S7252C11(); // tgen
};
//SIG(-1 S7252C11) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S7252C11 ::~S7252C11(){ note_dtor("S7252C11", this);}
S7252C11 ::S7252C11(){ note_ctor("S7252C11", this);} // tgen

static void Test_S7252C11()
{
  extern Class_Descriptor cd_S7252C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S7252C11, buf);
    S7252C11 *dp, &lv = *(dp=new (buf) S7252C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S7252C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C11)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(32,16), "S7252C11");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(40,24), "S7252C11");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), 0, "S7252C11");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(40,24), "S7252C11");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(40,24), "S7252C11");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(16,8), "S7252C11");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C11");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(16,8), "S7252C11");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(36,20), "S7252C11");
    check_base_class_offset(lv, (S7252C3*), ABISELECT(16,8), "S7252C11");
    check_field_offset(lv, s7252c11f0, ABISELECT(8,4), "S7252C11.s7252c11f0");
    test_class_info(&lv, &cd_S7252C11);
    dp->~S7252C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C11(Test_S7252C11, "S7252C11", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S7252C11C1Ev();
extern void _ZN8S7252C11D2Ev();
Name_Map name_map_S7252C11[] = {
  NSPAIR(_ZN8S7252C11C1Ev),
  NSPAIR(_ZN8S7252C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
static Base_Class bases_S7252C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C5,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C8,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    8, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C11[];
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C11[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
extern VTBL_ENTRY _ZTV8S7252C11[];
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__8S7252C11[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__8S7252C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__8S7252C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C11[] = {
  {&(_ZTV8S7252C11[6]),  6,19},
  {&(_ZTV8S7252C11[14]),  14,19},
  {&(_ZTV8S7252C11[19]),  19,19},
  {&(_tg__ZTV7S7252C3__8S7252C11[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__8S7252C11[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__8S7252C11[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__8S7252C11[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
static VTBL_ENTRY alt_thunk_names313[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C11 = {  "S7252C11", // class name
  bases_S7252C11, 9,
  &(vtc_S7252C11[0]), // expected_vtbl_contents
  &(vtt_S7252C11[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S7252C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7252C11),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C11),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names313,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C12  : virtual S4228C37 , S4228C27 {
  ~S7252C12(); // tgen
  S7252C12(); // tgen
};
//SIG(-1 S7252C12) C1{ VBC2{ m} BC3{ m}}


S7252C12 ::~S7252C12(){ note_dtor("S7252C12", this);} // tgen
S7252C12 ::S7252C12(){ note_ctor("S7252C12", this);} // tgen

static void Test_S7252C12()
{
  extern Class_Descriptor cd_S7252C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7252C12, buf);
    S7252C12 *dp, &lv = *(dp=new (buf) S7252C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7252C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C12)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7252C12");
    check_base_class_offset(lv, (S4228C27*), 0, "S7252C12");
    test_class_info(&lv, &cd_S7252C12);
    dp->~S7252C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C12(Test_S7252C12, "S7252C12", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7252C12C1Ev();
extern void _ZN8S7252C12D1Ev();
Name_Map name_map_S7252C12[] = {
  NSPAIR(_ZN8S7252C12C1Ev),
  NSPAIR(_ZN8S7252C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7252C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C12[];
static  VTBL_ENTRY vtc_S7252C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern VTBL_ENTRY _ZTV8S7252C12[];
static  VTT_ENTRY vtt_S7252C12[] = {
  {&(_ZTV8S7252C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
Class_Descriptor cd_S7252C12 = {  "S7252C12", // class name
  bases_S7252C12, 2,
  &(vtc_S7252C12[0]), // expected_vtbl_contents
  &(vtt_S7252C12[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7252C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7252C12),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C12),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  S7252C13  : S7252C8 {
  __tsi64 s7252c13f0[10];
  virtual  ~S7252C13(); // _ZN8S7252C13D2Ev
  S7252C13(); // tgen
};
//SIG(-1 S7252C13) C1{ BC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} vd FL[10]}


 S7252C13 ::~S7252C13(){ note_dtor("S7252C13", this);}
S7252C13 ::S7252C13(){ note_ctor("S7252C13", this);} // tgen

static void Test_S7252C13()
{
  extern Class_Descriptor cd_S7252C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,25)];
    init_test(&cd_S7252C13, buf);
    S7252C13 *dp, &lv = *(dp=new (buf) S7252C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,96), "sizeof(S7252C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C13)");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*), 0, "S7252C13");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*), 0, "S7252C13");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(96,88), "S7252C13");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(105,93), "S7252C13");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*), ABISELECT(96,88), "S7252C13");
    check_base_class_offset(lv, (S7252C8*), 0, "S7252C13");
    check_field_offset(lv, s7252c13f0, ABISELECT(16,8), "S7252C13.s7252c13f0");
    test_class_info(&lv, &cd_S7252C13);
    dp->~S7252C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C13(Test_S7252C13, "S7252C13", ABISELECT(112,96));

#else // __cplusplus

extern void _ZN8S7252C13C1Ev();
extern void _ZN8S7252C13D2Ev();
Name_Map name_map_S7252C13[] = {
  NSPAIR(_ZN8S7252C13C1Ev),
  NSPAIR(_ZN8S7252C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
static Base_Class bases_S7252C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C37,    ABISELECT(96,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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(105,93), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C5,    ABISELECT(96,88), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7252C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C13[];
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY vtc_S7252C13[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
extern VTBL_ENTRY _ZTV8S7252C13[];
static  VTBL_ENTRY _tg__ZTV7S7252C8__8S7252C13[] = {
  ABISELECT(105,93),
  ABISELECT(96,88),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C8__8S7252C13[] = {
  ABISELECT(9,5),
  ABISELECT(-96,-88),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTT_ENTRY vtt_S7252C13[] = {
  {&(_ZTV8S7252C13[5]),  5,10},
  {&(_tg__ZTV7S7252C8__8S7252C13[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C8__8S7252C13[3]),  3,3},
  {&(_ZTV8S7252C13[10]),  10,10},
  {&(_tg__ZTV7S7252C5__8S7252C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
Class_Descriptor cd_S7252C13 = {  "S7252C13", // class name
  bases_S7252C13, 6,
  &(vtc_S7252C13[0]), // expected_vtbl_contents
  &(vtt_S7252C13[0]), // expected_vtt_contents
  ABISELECT(112,96), // object size
  NSPAIRA(_ZTI8S7252C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7252C13),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C9  : virtual S4228C23 , virtual S7252C11 , virtual S7252C12 , virtual S7252C13 {
  virtual  ~S7252C9(); // _ZN7S7252C9D2Ev
  S7252C9(); // tgen
};
//SIG(-1 S7252C9) C1{ VBC2{ m} VBC3{ VBC4{ BC5{ m Fi} VBC6{ BC7{ m} VBC8{ m} FC7} BC9{ BC8 VBC7 VBC6 Fp} BC8 vd Fc} vd Fi} VBC10{ VBC7 BC8} VBC11{ BC9 vd FL[10]} vd}


 S7252C9 ::~S7252C9(){ note_dtor("S7252C9", this);}
S7252C9 ::S7252C9(){ note_ctor("S7252C9", this);} // tgen

static void Test_S7252C9()
{
  extern Class_Descriptor cd_S7252C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S7252C9, buf);
    S7252C9 *dp, &lv = *(dp=new (buf) S7252C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S7252C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C9)");
    check_base_class_offset(lv, (S4228C23*), 0, "S7252C9");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(40,20), "S7252C9");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(48,28), "S7252C9");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), ABISELECT(57,33), "S7252C9");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(48,28), "S7252C9");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(48,28), "S7252C9");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C13*), ABISELECT(48,28), "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(24,12), "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C9");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C13*), 0, "S7252C9");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(24,12), "S7252C9");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(44,24), "S7252C9");
    check_base_class_offset(lv, (S7252C3*)(S7252C11*), ABISELECT(24,12), "S7252C9");
    check_base_class_offset(lv, (S7252C11*), ABISELECT(8,4), "S7252C9");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), 0, "S7252C9");
    check_base_class_offset(lv, (S7252C12*), 0, "S7252C9");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C13*), ABISELECT(64,36), "S7252C9");
    check_base_class_offset(lv, (S7252C8*)(S7252C13*), ABISELECT(64,36), "S7252C9");
    check_base_class_offset(lv, (S7252C13*), ABISELECT(64,36), "S7252C9");
    test_class_info(&lv, &cd_S7252C9);
    dp->~S7252C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C9(Test_S7252C9, "S7252C9", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN7S7252C9C1Ev();
extern void _ZN7S7252C9D2Ev();
Name_Map name_map_S7252C9[] = {
  NSPAIR(_ZN7S7252C9C1Ev),
  NSPAIR(_ZN7S7252C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
extern Class_Descriptor cd_S7252C11;
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S7252C13;
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
static Base_Class bases_S7252C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3423C8_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_S4228C37,    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_S4228C27,    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
    4, //immediately_derived
  0, 1},
  {&cd_S7252C5,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //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
    7, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    7, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    9, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7252C11,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7252C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7252C13,    ABISELECT(64,36), //bcp->offset
    32, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C9[];
extern void _ZN7S7252C9D1Ev();
extern void _ZN7S7252C9D0Ev();
extern void ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C9D1Ev,_ZThn36_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C9D0Ev,_ZThn36_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C9[] = {
  ABISELECT(64,36),
  0,
  ABISELECT(57,33),
  ABISELECT(48,28),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&_ZN7S7252C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C9D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
  ABISELECT(9,5),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  ABISELECT(-64,-36),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7252C9[];
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(49,29),
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11__7S7252C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__7S7252C9[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C9[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__7S7252C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C88S7252C13__A1__7S7252C9[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13__7S7252C9[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
static  VTT_ENTRY vtt_S7252C9[] = {
  {&(_ZTV7S7252C9[10]),  10,40},
  {&(_ZTV7S7252C9[19]),  19,40},
  {&(_ZTV7S7252C9[27]),  27,40},
  {&(_ZTV7S7252C9[32]),  32,40},
  {&(_ZTV7S7252C9[10]),  10,40},
  {&(_ZTV7S7252C9[38]),  38,40},
  {&(_tg__ZTV8S7252C11__7S7252C9[6]),  6,8},
  {&(_tg__ZTV7S7252C3__8S7252C11__7S7252C9[6]),  6,8},
  {&(_tg__ZTV7S7252C5__8S7252C11__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C3__7S7252C9[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__7S7252C9[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C9[3]),  3,3},
  {&(_tg__ZTV8S7252C12__7S7252C9[3]),  3,3},
  {&(_tg__ZTV8S7252C13__7S7252C9[5]),  5,7},
  {&(_tg__ZTV7S7252C88S7252C13__A1__7S7252C9[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C9[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C13__7S7252C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C9[];
extern  VTBL_ENTRY _ZTV7S7252C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C9[];
static VTBL_ENTRY alt_thunk_names314[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D0Ev,_ZThn8_N8S7252C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S7252C11D1Ev,_ZThn8_N8S7252C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C9D0Ev,_ZThn36_N7S7252C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C9D1Ev,_ZThn36_N7S7252C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C9 = {  "S7252C9", // class name
  bases_S7252C9, 16,
  &(vtc_S7252C9[0]), // expected_vtbl_contents
  &(vtt_S7252C9[0]), // expected_vtt_contents
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI7S7252C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7252C9),40, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C9),19, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names314,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C14  : virtual S7252C12 {
  virtual  ~S7252C14(); // _ZN8S7252C14D2Ev
  S7252C14(); // tgen
};
//SIG(-1 S7252C14) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S7252C14 ::~S7252C14(){ note_dtor("S7252C14", this);}
S7252C14 ::S7252C14(){ note_ctor("S7252C14", this);} // tgen

static void Test_S7252C14()
{
  extern Class_Descriptor cd_S7252C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7252C14, buf);
    S7252C14 *dp, &lv = *(dp=new (buf) S7252C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7252C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C14)");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C14");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), 0, "S7252C14");
    check_base_class_offset(lv, (S7252C12*), 0, "S7252C14");
    test_class_info(&lv, &cd_S7252C14);
    dp->~S7252C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C14(Test_S7252C14, "S7252C14", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S7252C14C1Ev();
extern void _ZN8S7252C14D2Ev();
Name_Map name_map_S7252C14[] = {
  NSPAIR(_ZN8S7252C14C1Ev),
  NSPAIR(_ZN8S7252C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
static Base_Class bases_S7252C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7252C14[];
extern void _ZN8S7252C14D1Ev();
extern void _ZN8S7252C14D0Ev();
static  VTBL_ENTRY vtc_S7252C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
  (VTBL_ENTRY)&_ZN8S7252C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C14D0Ev,
};
extern VTBL_ENTRY _ZTV8S7252C14[];
static  VTBL_ENTRY _tg__ZTV8S7252C12__8S7252C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
static  VTT_ENTRY vtt_S7252C14[] = {
  {&(_ZTV8S7252C14[4]),  4,6},
  {&(_ZTV8S7252C14[4]),  4,6},
  {&(_tg__ZTV8S7252C12__8S7252C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7252C14[];
extern  VTBL_ENTRY _ZTV8S7252C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C14[];
Class_Descriptor cd_S7252C14 = {  "S7252C14", // class name
  bases_S7252C14, 3,
  &(vtc_S7252C14[0]), // expected_vtbl_contents
  &(vtt_S7252C14[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S7252C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7252C14),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7252C14),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  S7252C2  : virtual S7252C3 , virtual S7252C9 , S7252C14 {
  int s7252c2f0[2];
  ~S7252C2(); // tgen
  S7252C2(); // tgen
};
//SIG(-1 S7252C2) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} VBC8{ VBC9{ m} VBC10{ VBC2 vd Fi} VBC11{ VBC5 BC6} VBC12{ BC7 vd FL[10]} vd} BC13{ VBC11 vd} Fi[2]}


S7252C2 ::~S7252C2(){ note_dtor("S7252C2", this);} // tgen
S7252C2 ::S7252C2(){ note_ctor("S7252C2", this);} // tgen

static void Test_S7252C2()
{
  extern Class_Descriptor cd_S7252C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S7252C2, buf);
    S7252C2 *dp, &lv = *(dp=new (buf) S7252C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S7252C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C2)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(32,20), "S7252C2");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(40,28), "S7252C2");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), 0, "S7252C2");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(40,28), "S7252C2");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(40,28), "S7252C2");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C13*), ABISELECT(40,28), "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C2");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C13*), 0, "S7252C2");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C2");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(36,24), "S7252C2");
    check_base_class_offset(lv, (S7252C3*), ABISELECT(16,12), "S7252C2");
    check_base_class_offset(lv, (S7252C3*)(S7252C11*), ABISELECT(16,12), "S7252C2");
    check_base_class_offset(lv, (S4228C23*)(S7252C9*), 0, "S7252C2");
    check_base_class_offset(lv, (S7252C11*)(S7252C9*), ABISELECT(64,40), "S7252C2");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), ABISELECT(56,36), "S7252C2");
    check_base_class_offset(lv, (S7252C12*)(S7252C9*), ABISELECT(56,36), "S7252C2");
    check_base_class_offset(lv, (S7252C12*)(S7252C14*), ABISELECT(56,36), "S7252C2");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C2");
    check_base_class_offset(lv, (S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C2");
    check_base_class_offset(lv, (S7252C13*)(S7252C9*), ABISELECT(80,48), "S7252C2");
    check_base_class_offset(lv, (S7252C9*), ABISELECT(56,36), "S7252C2");
    check_base_class_offset(lv, (S7252C14*), 0, "S7252C2");
    check_field_offset(lv, s7252c2f0, ABISELECT(8,4), "S7252C2.s7252c2f0");
    test_class_info(&lv, &cd_S7252C2);
    dp->~S7252C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C2(Test_S7252C2, "S7252C2", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN7S7252C2C1Ev();
extern void _ZN7S7252C2D1Ev();
Name_Map name_map_S7252C2[] = {
  NSPAIR(_ZN7S7252C2C1Ev),
  NSPAIR(_ZN7S7252C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S7252C11;
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S7252C13;
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
extern Class_Descriptor cd_S7252C9;
extern VTBL_ENTRY _ZTI7S7252C9[];
extern  VTBL_ENTRY _ZTV7S7252C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C9[];
extern Class_Descriptor cd_S7252C14;
extern VTBL_ENTRY _ZTI8S7252C14[];
extern  VTBL_ENTRY _ZTV8S7252C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C14[];
static Base_Class bases_S7252C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C5,    ABISELECT(40,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C8,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    6, //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_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C11,    ABISELECT(64,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7252C12,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7252C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7252C13,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7252C9,    ABISELECT(56,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7252C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C2[];
extern void _ZN7S7252C2D1Ev();
extern void _ZN7S7252C2D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C2[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&_ZN7S7252C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C2D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7252C2[];
extern void _ZN8S7252C14D1Ev();
extern void _ZN8S7252C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C14__7S7252C2[] = {
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
  (VTBL_ENTRY)&_ZN8S7252C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__8S7252C14__7S7252C2[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
};
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__7S7252C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C2[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
extern void _ZN7S7252C9D1Ev();
extern void _ZN7S7252C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C9__7S7252C2[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&_ZN7S7252C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C9__7S7252C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C9__7S7252C2[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C9__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C9__7S7252C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11__7S7252C2[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__7S7252C2[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C88S7252C13__A1__7S7252C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13__7S7252C2[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
static  VTT_ENTRY vtt_S7252C2[] = {
  {&(_ZTV7S7252C2[11]),  11,54},
  {&(_tg__ZTV8S7252C14__7S7252C2[4]),  4,6},
  {&(_tg__ZTV8S7252C12__8S7252C14__7S7252C2[3]),  3,3},
  {&(_ZTV7S7252C2[19]),  19,54},
  {&(_ZTV7S7252C2[24]),  24,54},
  {&(_ZTV7S7252C2[35]),  35,54},
  {&(_ZTV7S7252C2[44]),  44,54},
  {&(_ZTV7S7252C2[35]),  35,54},
  {&(_ZTV7S7252C2[52]),  52,54},
  {&(_tg__ZTV7S7252C3__7S7252C2[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__7S7252C2[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C2[10]),  10,12},
  {&(_tg__ZTV8S7252C11__7S7252C9__7S7252C2[7]),  7,9},
  {&(_tg__ZTV7S7252C3__7S7252C9__7S7252C2[6]),  6,8},
  {&(_tg__ZTV7S7252C5__7S7252C9__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C2[10]),  10,12},
  {&(_tg__ZTV8S7252C13__7S7252C9__7S7252C2[6]),  6,8},
  {&(_tg__ZTV8S7252C11__7S7252C2[6]),  6,8},
  {&(_tg__ZTV7S7252C3__8S7252C11__7S7252C2[6]),  6,8},
  {&(_tg__ZTV7S7252C5__8S7252C11__7S7252C2[3]),  3,3},
  {&(_tg__ZTV8S7252C12__7S7252C2[3]),  3,3},
  {&(_tg__ZTV8S7252C13__7S7252C2[5]),  5,7},
  {&(_tg__ZTV7S7252C88S7252C13__A1__7S7252C2[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C2[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C13__7S7252C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C2[];
extern  VTBL_ENTRY _ZTV7S7252C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C2[];
static VTBL_ENTRY alt_thunk_names315[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C2 = {  "S7252C2", // class name
  bases_S7252C2, 18,
  &(vtc_S7252C2[0]), // expected_vtbl_contents
  &(vtt_S7252C2[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI7S7252C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7252C2),54, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C2),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names315,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7252C1  : S7252C2 {
  virtual  ~S7252C1(); // _ZN7S7252C1D2Ev
  S7252C1(); // tgen
};
//SIG(1 S7252C1) C1{ BC2{ VBC3{ BC4{ m Fi} VBC5{ BC6{ m} VBC7{ m} FC6} BC8{ BC7 VBC6 VBC5 Fp} BC7 vd Fc} VBC9{ VBC10{ m} VBC11{ VBC3 vd Fi} VBC12{ VBC6 BC7} VBC13{ BC8 vd FL[10]} vd} BC14{ VBC12 vd} Fi[2]} vd}


 S7252C1 ::~S7252C1(){ note_dtor("S7252C1", this);}
S7252C1 ::S7252C1(){ note_ctor("S7252C1", this);} // tgen

static void Test_S7252C1()
{
  extern Class_Descriptor cd_S7252C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,35)];
    init_test(&cd_S7252C1, buf);
    S7252C1 *dp, &lv = *(dp=new (buf) S7252C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,136), "sizeof(S7252C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7252C1)");
    check_base_class_offset(lv, (S3423C8_nt*)(S7252C3*), ABISELECT(32,20), "S7252C1");
    check_base_class_offset(lv, (S4228C37*)(S7252C5*), ABISELECT(40,28), "S7252C1");
    check_base_class_offset(lv, (S4228C27*)(S7252C5*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C5*)(S7252C3*), ABISELECT(40,28), "S7252C1");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C3*), ABISELECT(40,28), "S7252C1");
    check_base_class_offset(lv, (S7252C5*)(S7252C8*)(S7252C13*), ABISELECT(40,28), "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C3*), 0, "S7252C1");
    check_base_class_offset(lv, (S4228C37*)(S7252C12*), 0, "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S7252C8*)(S7252C13*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C8*)(S7252C3*), ABISELECT(16,12), "S7252C1");
    /*is_ambiguous_... S7252C3::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C3*), ABISELECT(36,24), "S7252C1");
    check_base_class_offset(lv, (S7252C3*)(S7252C2*), ABISELECT(16,12), "S7252C1");
    check_base_class_offset(lv, (S7252C3*)(S7252C11*), ABISELECT(16,12), "S7252C1");
    check_base_class_offset(lv, (S4228C23*)(S7252C9*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C11*)(S7252C9*), ABISELECT(64,40), "S7252C1");
    check_base_class_offset(lv, (S4228C27*)(S7252C12*), ABISELECT(56,36), "S7252C1");
    check_base_class_offset(lv, (S7252C12*)(S7252C9*), ABISELECT(56,36), "S7252C1");
    check_base_class_offset(lv, (S7252C12*)(S7252C14*)(S7252C2*), ABISELECT(56,36), "S7252C1");
    /*is_ambiguous_... S7252C8::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C1");
    check_base_class_offset(lv, (S7252C8*)(S7252C13*), ABISELECT(80,48), "S7252C1");
    check_base_class_offset(lv, (S7252C13*)(S7252C9*), ABISELECT(80,48), "S7252C1");
    check_base_class_offset(lv, (S7252C9*)(S7252C2*), ABISELECT(56,36), "S7252C1");
    check_base_class_offset(lv, (S7252C14*)(S7252C2*), 0, "S7252C1");
    check_base_class_offset(lv, (S7252C2*), 0, "S7252C1");
    test_class_info(&lv, &cd_S7252C1);
    dp->~S7252C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7252C1(Test_S7252C1, "S7252C1", ABISELECT(176,136));

#else // __cplusplus

extern void _ZN7S7252C1C1Ev();
extern void _ZN7S7252C1D2Ev();
Name_Map name_map_S7252C1[] = {
  NSPAIR(_ZN7S7252C1C1Ev),
  NSPAIR(_ZN7S7252C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C5;
extern VTBL_ENTRY _ZTI7S7252C5[];
extern  VTBL_ENTRY _ZTV7S7252C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C5[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C3;
extern VTBL_ENTRY _ZTI7S7252C3[];
extern  VTBL_ENTRY _ZTV7S7252C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C3[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S7252C11;
extern VTBL_ENTRY _ZTI8S7252C11[];
extern  VTBL_ENTRY _ZTV8S7252C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C11[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C12;
extern VTBL_ENTRY _ZTI8S7252C12[];
extern  VTBL_ENTRY _ZTV8S7252C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C12[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7252C8;
extern VTBL_ENTRY _ZTI7S7252C8[];
extern  VTBL_ENTRY _ZTV7S7252C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C8[];
extern Class_Descriptor cd_S7252C13;
extern VTBL_ENTRY _ZTI8S7252C13[];
extern  VTBL_ENTRY _ZTV8S7252C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C13[];
extern Class_Descriptor cd_S7252C9;
extern VTBL_ENTRY _ZTI7S7252C9[];
extern  VTBL_ENTRY _ZTV7S7252C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C9[];
extern Class_Descriptor cd_S7252C14;
extern VTBL_ENTRY _ZTI8S7252C14[];
extern  VTBL_ENTRY _ZTV8S7252C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7252C14[];
extern Class_Descriptor cd_S7252C2;
extern VTBL_ENTRY _ZTI7S7252C2[];
extern  VTBL_ENTRY _ZTV7S7252C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C2[];
static Base_Class bases_S7252C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C5,    ABISELECT(40,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    6, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C8,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7252C3,    ABISELECT(16,12), //bcp->offset
    13, //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
    3, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7252C11,    ABISELECT(64,40), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    12, //immediately_derived
  0, 0},
  {&cd_S7252C12,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S4228C27,    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
    14, //immediately_derived
  0, 0},
  {&cd_S7252C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7252C13,    ABISELECT(80,48), //bcp->offset
    46, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7252C9,    ABISELECT(56,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S7252C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7252C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7252C1[];
extern void _ZN7S7252C1D1Ev();
extern void _ZN7S7252C1D0Ev();
extern void ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7252C1D1Ev,_ZThn12_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7252C1D0Ev,_ZThn12_N7S7252C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C1D1Ev,_ZTv0_n44_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7252C1D1Ev,_ZThn36_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C1D0Ev,_ZTv0_n44_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7252C1D0Ev,_ZThn36_N7S7252C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C1D1Ev,_ZTv0_n28_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C1D1Ev,_ZThn40_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C1D0Ev,_ZTv0_n28_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C1D0Ev,_ZThn40_N7S7252C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7252C1D1Ev,_ZThn48_N7S7252C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7252C1D0Ev,_ZThn48_N7S7252C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7252C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&_ZN7S7252C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C1D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C1D1Ev,_ZTv0_n44_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C1D0Ev,_ZTv0_n44_N7S7252C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C1D1Ev,_ZTv0_n28_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C1D0Ev,_ZTv0_n28_N7S7252C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7252C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7252C1[];
extern void _ZN7S7252C2D1Ev();
extern void _ZN7S7252C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C2__7S7252C1[] = {
  ABISELECT(80,48),
  ABISELECT(64,40),
  0,
  ABISELECT(56,36),
  0,
  ABISELECT(40,28),
  ABISELECT(16,12),
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&_ZN7S7252C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C2D0Ev,
};
extern void _ZN8S7252C14D1Ev();
extern void _ZN8S7252C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C147S7252C2__7S7252C1[] = {
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
  (VTBL_ENTRY)&_ZN8S7252C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__8S7252C147S7252C2__7S7252C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S7252C14[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C2__7S7252C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C2__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
};
extern void ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7252C9__7S7252C2__7S7252C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev),
};
extern void ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C2__7S7252C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C2__7S7252C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7252C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev),
};
extern void _ZN7S7252C3D1Ev();
extern void _ZN7S7252C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
  (VTBL_ENTRY)&_ZN7S7252C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C3D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C87S7252C3__7S7252C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C3__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7252C3[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C1[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C5[0]),
};
extern void _ZN7S7252C9D1Ev();
extern void _ZN7S7252C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7252C9__7S7252C1[] = {
  ABISELECT(24,12),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-16,-8),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&_ZN7S7252C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7252C9D0Ev,
};
extern void ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C9__7S7252C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__7S7252C9__7S7252C1[] = {
  ABISELECT(40,24),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C9__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
};
extern void ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev)();
extern void ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C9__7S7252C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7252C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev),
};
extern void _ZN8S7252C11D1Ev();
extern void _ZN8S7252C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C11__7S7252C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  ABISELECT(-24,-12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&_ZN8S7252C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C11D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7252C3__8S7252C11__7S7252C1[] = {
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  ABISELECT(24,16),
  ABISELECT(-16,-12),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D1Ev,_ZTv0_n24_N8S7252C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S7252C11D0Ev,_ZTv0_n24_N8S7252C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C11__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S7252C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S7252C12__7S7252C1[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C12[0]),
};
extern void _ZN8S7252C13D1Ev();
extern void _ZN8S7252C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7252C13__7S7252C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
  (VTBL_ENTRY)&_ZN8S7252C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7252C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7252C88S7252C13__A1__7S7252C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-40,-20),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI7S7252C8[0]),
};
static  VTBL_ENTRY _tg__ZTV7S7252C5__8S7252C13__7S7252C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S7252C13[0]),
};
static  VTT_ENTRY vtt_S7252C1[] = {
  {&(_ZTV7S7252C1[11]),  11,54},
  {&(_tg__ZTV7S7252C2__7S7252C1[11]),  11,13},
  {&(_tg__ZTV8S7252C147S7252C2__7S7252C1[4]),  4,6},
  {&(_tg__ZTV8S7252C12__8S7252C147S7252C2__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C3__7S7252C2__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C5__7S7252C2__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C2__7S7252C1[11]),  11,13},
  {&(_tg__ZTV8S7252C11__7S7252C2__7S7252C1[7]),  7,9},
  {&(_tg__ZTV7S7252C9__7S7252C2__7S7252C1[11]),  11,13},
  {&(_tg__ZTV8S7252C13__7S7252C2__7S7252C1[6]),  6,8},
  {&(_ZTV7S7252C1[19]),  19,54},
  {&(_ZTV7S7252C1[24]),  24,54},
  {&(_ZTV7S7252C1[35]),  35,54},
  {&(_ZTV7S7252C1[44]),  44,54},
  {&(_ZTV7S7252C1[35]),  35,54},
  {&(_ZTV7S7252C1[52]),  52,54},
  {&(_tg__ZTV7S7252C3__7S7252C1[5]),  5,7},
  {&(_tg__ZTV7S7252C87S7252C3__7S7252C1[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C87S7252C3__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C3__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C5__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C1[10]),  10,12},
  {&(_tg__ZTV8S7252C11__7S7252C9__7S7252C1[7]),  7,9},
  {&(_tg__ZTV7S7252C3__7S7252C9__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C5__7S7252C9__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C9__7S7252C1[10]),  10,12},
  {&(_tg__ZTV8S7252C13__7S7252C9__7S7252C1[6]),  6,8},
  {&(_tg__ZTV8S7252C11__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C3__8S7252C11__7S7252C1[6]),  6,8},
  {&(_tg__ZTV7S7252C5__8S7252C11__7S7252C1[3]),  3,3},
  {&(_tg__ZTV8S7252C12__7S7252C1[3]),  3,3},
  {&(_tg__ZTV8S7252C13__7S7252C1[5]),  5,7},
  {&(_tg__ZTV7S7252C88S7252C13__A1__7S7252C1[5]),  5,5},
  {&(_tg__ZTV7S7252C5__7S7252C88S7252C13__A1__7S7252C1[3]),  3,3},
  {&(_tg__ZTV7S7252C5__8S7252C13__7S7252C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7252C1[];
extern  VTBL_ENTRY _ZTV7S7252C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7252C1[];
static VTBL_ENTRY alt_thunk_names316[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D0Ev,_ZTv0_n24_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D0Ev,_ZThn12_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C9D1Ev,_ZTv0_n24_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7252C9D1Ev,_ZThn12_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D0Ev,_ZTv0_n28_N7S7252C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D0Ev,_ZThn4_N7S7252C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C9D1Ev,_ZTv0_n28_N7S7252C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S7252C9D1Ev,_ZThn4_N7S7252C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D0Ev,_ZTv0_n28_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D0Ev,_ZThn40_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C2D1Ev,_ZTv0_n28_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C2D1Ev,_ZThn40_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D0Ev,_ZTv0_n44_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D0Ev,_ZThn36_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C2D1Ev,_ZTv0_n44_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C2D1Ev,_ZThn36_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D0Ev,_ZTv0_n24_N7S7252C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D0Ev,_ZThn48_N7S7252C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D0Ev,_ZThn12_N7S7252C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C2D1Ev,_ZTv0_n24_N7S7252C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C2D1Ev,_ZThn48_N7S7252C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C2D1Ev,_ZThn12_N7S7252C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C1D0Ev,_ZTv0_n28_N7S7252C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C1D0Ev,_ZThn40_N7S7252C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7252C1D1Ev,_ZTv0_n28_N7S7252C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7252C1D1Ev,_ZThn40_N7S7252C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C1D0Ev,_ZTv0_n44_N7S7252C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C1D0Ev,_ZThn36_N7S7252C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N7S7252C1D1Ev,_ZTv0_n44_N7S7252C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7252C1D1Ev,_ZThn36_N7S7252C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C1D0Ev,_ZTv0_n24_N7S7252C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C1D0Ev,_ZThn48_N7S7252C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C1D0Ev,_ZThn12_N7S7252C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7252C1D1Ev,_ZTv0_n24_N7S7252C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7252C1D1Ev,_ZThn48_N7S7252C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7252C1D1Ev,_ZThn12_N7S7252C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7252C1 = {  "S7252C1", // class name
  bases_S7252C1, 19,
  &(vtc_S7252C1[0]), // expected_vtbl_contents
  &(vtt_S7252C1[0]), // expected_vtt_contents
  ABISELECT(176,136), // object size
  NSPAIRA(_ZTI7S7252C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7252C1),54, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7252C1),35, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names316,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5325C3  {
  char s5325c3f0;
  int s5325c3f1;
  void *s5325c3f2[3];
  char s5325c3f3[3];
  ::S4228C19_nt s5325c3f4;
  char s5325c3f5;
  void *s5325c3f6;
  int s5325c3f7[2];
  virtual  ~S5325C3(); // _ZN7S5325C3D1Ev
  virtual void  v6(); // _ZN7S5325C32v6Ev
  virtual void  v7(); // _ZN7S5325C32v7Ev
  virtual void  v8(); // _ZN7S5325C32v8Ev
  virtual void  v9(); // _ZN7S5325C32v9Ev
  virtual void  v10(); // _ZN7S5325C33v10Ev
  virtual void  v11(); // _ZN7S5325C33v11Ev
  virtual void  v12(); // _ZN7S5325C33v12Ev
  virtual void  v13(); // _ZN7S5325C33v13Ev
  virtual void  v14(); // _ZN7S5325C33v14Ev
  virtual void  v15(); // _ZN7S5325C33v15Ev
  virtual void  v16(); // _ZN7S5325C33v16Ev
  virtual void  v17(); // _ZN7S5325C33v17Ev
  virtual void  v18(); // _ZN7S5325C33v18Ev
  virtual void  v19(); // _ZN7S5325C33v19Ev
  S5325C3(); // tgen
};
//SIG(-1 S5325C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S5325C3 ::~S5325C3(){ note_dtor("S5325C3", this);}
void  S5325C3 ::v6(){vfunc_called(this, "_ZN7S5325C32v6Ev");}
void  S5325C3 ::v7(){vfunc_called(this, "_ZN7S5325C32v7Ev");}
void  S5325C3 ::v8(){vfunc_called(this, "_ZN7S5325C32v8Ev");}
void  S5325C3 ::v9(){vfunc_called(this, "_ZN7S5325C32v9Ev");}
void  S5325C3 ::v10(){vfunc_called(this, "_ZN7S5325C33v10Ev");}
void  S5325C3 ::v11(){vfunc_called(this, "_ZN7S5325C33v11Ev");}
void  S5325C3 ::v12(){vfunc_called(this, "_ZN7S5325C33v12Ev");}
void  S5325C3 ::v13(){vfunc_called(this, "_ZN7S5325C33v13Ev");}
void  S5325C3 ::v14(){vfunc_called(this, "_ZN7S5325C33v14Ev");}
void  S5325C3 ::v15(){vfunc_called(this, "_ZN7S5325C33v15Ev");}
void  S5325C3 ::v16(){vfunc_called(this, "_ZN7S5325C33v16Ev");}
void  S5325C3 ::v17(){vfunc_called(this, "_ZN7S5325C33v17Ev");}
void  S5325C3 ::v18(){vfunc_called(this, "_ZN7S5325C33v18Ev");}
void  S5325C3 ::v19(){vfunc_called(this, "_ZN7S5325C33v19Ev");}
S5325C3 ::S5325C3(){ note_ctor("S5325C3", this);} // tgen

static void Test_S5325C3()
{
  extern Class_Descriptor cd_S5325C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S5325C3, buf);
    S5325C3 *dp, &lv = *(dp=new (buf) S5325C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S5325C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5325C3)");
    check_field_offset(lv, s5325c3f0, ABISELECT(8,4), "S5325C3.s5325c3f0");
    check_field_offset(lv, s5325c3f1, ABISELECT(12,8), "S5325C3.s5325c3f1");
    check_field_offset(lv, s5325c3f2, ABISELECT(16,12), "S5325C3.s5325c3f2");
    check_field_offset(lv, s5325c3f3, ABISELECT(40,24), "S5325C3.s5325c3f3");
    check_field_offset(lv, s5325c3f4, ABISELECT(48,28), "S5325C3.s5325c3f4");
    check_field_offset(lv, s5325c3f5, ABISELECT(64,40), "S5325C3.s5325c3f5");
    check_field_offset(lv, s5325c3f6, ABISELECT(72,44), "S5325C3.s5325c3f6");
    check_field_offset(lv, s5325c3f7, ABISELECT(80,48), "S5325C3.s5325c3f7");
    test_class_info(&lv, &cd_S5325C3);
    dp->~S5325C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5325C3(Test_S5325C3, "S5325C3", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S5325C3C1Ev();
extern void _ZN7S5325C3D1Ev();
Name_Map name_map_S5325C3[] = {
  NSPAIR(_ZN7S5325C3C1Ev),
  NSPAIR(_ZN7S5325C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5325C3[];
extern void _ZN7S5325C3D1Ev();
extern void _ZN7S5325C3D0Ev();
extern void _ZN7S5325C32v6Ev();
extern void _ZN7S5325C32v7Ev();
extern void _ZN7S5325C32v8Ev();
extern void _ZN7S5325C32v9Ev();
extern void _ZN7S5325C33v10Ev();
extern void _ZN7S5325C33v11Ev();
extern void _ZN7S5325C33v12Ev();
extern void _ZN7S5325C33v13Ev();
extern void _ZN7S5325C33v14Ev();
extern void _ZN7S5325C33v15Ev();
extern void _ZN7S5325C33v16Ev();
extern void _ZN7S5325C33v17Ev();
extern void _ZN7S5325C33v18Ev();
extern void _ZN7S5325C33v19Ev();
static  VTBL_ENTRY vtc_S5325C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5325C3[0]),
  (VTBL_ENTRY)&_ZN7S5325C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5325C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v19Ev,
};
extern VTBL_ENTRY _ZTI7S5325C3[];
extern  VTBL_ENTRY _ZTV7S5325C3[];
Class_Descriptor cd_S5325C3 = {  "S5325C3", // class name
  0,0,//no base classes
  &(vtc_S5325C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S5325C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5325C3),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5325C2  : S5325C3 {
  char s5325c2f0;
  void *s5325c2f1[2];
  virtual  ~S5325C2(); // _ZN7S5325C2D1Ev
  virtual void  v20(); // _ZN7S5325C23v20Ev
  S5325C2(); // tgen
};
//SIG(-1 S5325C2) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 Fc Fp[2]}


 S5325C2 ::~S5325C2(){ note_dtor("S5325C2", this);}
void  S5325C2 ::v20(){vfunc_called(this, "_ZN7S5325C23v20Ev");}
S5325C2 ::S5325C2(){ note_ctor("S5325C2", this);} // tgen

static void Test_S5325C2()
{
  extern Class_Descriptor cd_S5325C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S5325C2, buf);
    S5325C2 *dp, &lv = *(dp=new (buf) S5325C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S5325C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5325C2)");
    check_base_class_offset(lv, (S5325C3*), 0, "S5325C2");
    check_field_offset(lv, s5325c2f0, ABISELECT(88,56), "S5325C2.s5325c2f0");
    check_field_offset(lv, s5325c2f1, ABISELECT(96,60), "S5325C2.s5325c2f1");
    test_class_info(&lv, &cd_S5325C2);
    dp->~S5325C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5325C2(Test_S5325C2, "S5325C2", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN7S5325C2C1Ev();
extern void _ZN7S5325C2D1Ev();
Name_Map name_map_S5325C2[] = {
  NSPAIR(_ZN7S5325C2C1Ev),
  NSPAIR(_ZN7S5325C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5325C3;
extern VTBL_ENTRY _ZTI7S5325C3[];
extern  VTBL_ENTRY _ZTV7S5325C3[];
static Base_Class bases_S5325C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5325C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5325C2[];
extern void _ZN7S5325C2D1Ev();
extern void _ZN7S5325C2D0Ev();
extern void _ZN7S5325C32v6Ev();
extern void _ZN7S5325C32v7Ev();
extern void _ZN7S5325C32v8Ev();
extern void _ZN7S5325C32v9Ev();
extern void _ZN7S5325C33v10Ev();
extern void _ZN7S5325C33v11Ev();
extern void _ZN7S5325C33v12Ev();
extern void _ZN7S5325C33v13Ev();
extern void _ZN7S5325C33v14Ev();
extern void _ZN7S5325C33v15Ev();
extern void _ZN7S5325C33v16Ev();
extern void _ZN7S5325C33v17Ev();
extern void _ZN7S5325C33v18Ev();
extern void _ZN7S5325C33v19Ev();
extern void _ZN7S5325C23v20Ev();
static  VTBL_ENTRY vtc_S5325C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5325C2[0]),
  (VTBL_ENTRY)&_ZN7S5325C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5325C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5325C23v20Ev,
};
extern VTBL_ENTRY _ZTI7S5325C2[];
extern  VTBL_ENTRY _ZTV7S5325C2[];
Class_Descriptor cd_S5325C2 = {  "S5325C2", // class name
  bases_S5325C2, 1,
  &(vtc_S5325C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI7S5325C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5325C2),19, //virtual function table var
  2, // 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  S5325C1  : S5325C2 {
  char s5325c1f0[3];
  int s5325c1f1[2];
  void *s5325c1f2;
  virtual  ~S5325C1(); // _ZN7S5325C1D1Ev
  virtual void  v1(); // _ZN7S5325C12v1Ev
  virtual void  v2(); // _ZN7S5325C12v2Ev
  virtual void  v3(); // _ZN7S5325C12v3Ev
  virtual void  v4(); // _ZN7S5325C12v4Ev
  virtual void  v5(); // _ZN7S5325C12v5Ev
  S5325C1(); // tgen
};
//SIG(1 S5325C1) C1{ BC2{ BC3{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 Fc Fi Fp[3] Fc[3] FC4{ m Fp Fi FC5{ m}} Fc Fp Fi[2]} vd v20 Fc Fp[2]} vd v1 v2 v3 v4 v5 Fc[3] Fi[2] Fp}


 S5325C1 ::~S5325C1(){ note_dtor("S5325C1", this);}
void  S5325C1 ::v1(){vfunc_called(this, "_ZN7S5325C12v1Ev");}
void  S5325C1 ::v2(){vfunc_called(this, "_ZN7S5325C12v2Ev");}
void  S5325C1 ::v3(){vfunc_called(this, "_ZN7S5325C12v3Ev");}
void  S5325C1 ::v4(){vfunc_called(this, "_ZN7S5325C12v4Ev");}
void  S5325C1 ::v5(){vfunc_called(this, "_ZN7S5325C12v5Ev");}
S5325C1 ::S5325C1(){ note_ctor("S5325C1", this);} // tgen

static void Test_S5325C1()
{
  extern Class_Descriptor cd_S5325C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,22)];
    init_test(&cd_S5325C1, buf);
    S5325C1 *dp, &lv = *(dp=new (buf) S5325C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,84), "sizeof(S5325C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5325C1)");
    check_base_class_offset(lv, (S5325C3*)(S5325C2*), 0, "S5325C1");
    check_base_class_offset(lv, (S5325C2*), 0, "S5325C1");
    check_field_offset(lv, s5325c1f0, ABISELECT(112,68), "S5325C1.s5325c1f0");
    check_field_offset(lv, s5325c1f1, ABISELECT(116,72), "S5325C1.s5325c1f1");
    check_field_offset(lv, s5325c1f2, ABISELECT(128,80), "S5325C1.s5325c1f2");
    test_class_info(&lv, &cd_S5325C1);
    dp->~S5325C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5325C1(Test_S5325C1, "S5325C1", ABISELECT(136,84));

#else // __cplusplus

extern void _ZN7S5325C1C1Ev();
extern void _ZN7S5325C1D1Ev();
Name_Map name_map_S5325C1[] = {
  NSPAIR(_ZN7S5325C1C1Ev),
  NSPAIR(_ZN7S5325C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5325C3;
extern VTBL_ENTRY _ZTI7S5325C3[];
extern  VTBL_ENTRY _ZTV7S5325C3[];
extern Class_Descriptor cd_S5325C2;
extern VTBL_ENTRY _ZTI7S5325C2[];
extern  VTBL_ENTRY _ZTV7S5325C2[];
static Base_Class bases_S5325C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5325C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5325C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S5325C1[];
extern void _ZN7S5325C1D1Ev();
extern void _ZN7S5325C1D0Ev();
extern void _ZN7S5325C32v6Ev();
extern void _ZN7S5325C32v7Ev();
extern void _ZN7S5325C32v8Ev();
extern void _ZN7S5325C32v9Ev();
extern void _ZN7S5325C33v10Ev();
extern void _ZN7S5325C33v11Ev();
extern void _ZN7S5325C33v12Ev();
extern void _ZN7S5325C33v13Ev();
extern void _ZN7S5325C33v14Ev();
extern void _ZN7S5325C33v15Ev();
extern void _ZN7S5325C33v16Ev();
extern void _ZN7S5325C33v17Ev();
extern void _ZN7S5325C33v18Ev();
extern void _ZN7S5325C33v19Ev();
extern void _ZN7S5325C23v20Ev();
extern void _ZN7S5325C12v1Ev();
extern void _ZN7S5325C12v2Ev();
extern void _ZN7S5325C12v3Ev();
extern void _ZN7S5325C12v4Ev();
extern void _ZN7S5325C12v5Ev();
static  VTBL_ENTRY vtc_S5325C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5325C1[0]),
  (VTBL_ENTRY)&_ZN7S5325C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5325C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5325C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5325C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5325C23v20Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5325C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S5325C1[];
extern  VTBL_ENTRY _ZTV7S5325C1[];
Class_Descriptor cd_S5325C1 = {  "S5325C1", // class name
  bases_S5325C1, 2,
  &(vtc_S5325C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,84), // object size
  NSPAIRA(_ZTI7S5325C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5325C1),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  S19224C5  : S4228C27 , virtual S4228C37 {
  ::S4228C27 s19224c5f0;
  ~S19224C5(); // tgen
  S19224C5(); // tgen
};
//SIG(-1 S19224C5) C1{ BC2{ m} VBC3{ m} FC2}


S19224C5 ::~S19224C5(){ note_dtor("S19224C5", this);} // tgen
S19224C5 ::S19224C5(){ note_ctor("S19224C5", this);} // tgen

static void Test_S19224C5()
{
  extern Class_Descriptor cd_S19224C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19224C5, buf);
    S19224C5 *dp, &lv = *(dp=new (buf) S19224C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19224C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C5)");
    check_base_class_offset(lv, (S4228C27*), 0, "S19224C5");
    check_base_class_offset(lv, (S4228C37*), 0, "S19224C5");
    check_field_offset(lv, s19224c5f0, ABISELECT(8,4), "S19224C5.s19224c5f0");
    test_class_info(&lv, &cd_S19224C5);
    dp->~S19224C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C5(Test_S19224C5, "S19224C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19224C5C1Ev();
extern void _ZN8S19224C5D1Ev();
Name_Map name_map_S19224C5[] = {
  NSPAIR(_ZN8S19224C5C1Ev),
  NSPAIR(_ZN8S19224C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S19224C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19224C5[];
static  VTBL_ENTRY vtc_S19224C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
extern VTBL_ENTRY _ZTV8S19224C5[];
static  VTT_ENTRY vtt_S19224C5[] = {
  {&(_ZTV8S19224C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
Class_Descriptor cd_S19224C5 = {  "S19224C5", // class name
  bases_S19224C5, 2,
  &(vtc_S19224C5[0]), // expected_vtbl_contents
  &(vtt_S19224C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19224C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19224C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C5),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  S19224C2  : S4228C37 , virtual S4228C27 , virtual S19224C5 {
  void *s19224c2f0;
  ~S19224C2(); // tgen
  S19224C2(); // tgen
};
//SIG(-1 S19224C2) C1{ BC2{ m} VBC3{ m} VBC4{ BC3 VBC2 FC3} Fp}


S19224C2 ::~S19224C2(){ note_dtor("S19224C2", this);} // tgen
S19224C2 ::S19224C2(){ note_ctor("S19224C2", this);} // tgen

static void Test_S19224C2()
{
  extern Class_Descriptor cd_S19224C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19224C2, buf);
    S19224C2 *dp, &lv = *(dp=new (buf) S19224C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19224C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C2)");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), 0, "S19224C2");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*), 0, "S19224C2");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(16,8), "S19224C2");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(25,13), "S19224C2");
    check_base_class_offset(lv, (S19224C5*), ABISELECT(16,8), "S19224C2");
    check_field_offset(lv, s19224c2f0, ABISELECT(8,4), "S19224C2.s19224c2f0");
    test_class_info(&lv, &cd_S19224C2);
    dp->~S19224C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C2(Test_S19224C2, "S19224C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19224C2C1Ev();
extern void _ZN8S19224C2D1Ev();
Name_Map name_map_S19224C2[] = {
  NSPAIR(_ZN8S19224C2C1Ev),
  NSPAIR(_ZN8S19224C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
static Base_Class bases_S19224C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(25,13), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C2[];
static  VTBL_ENTRY vtc_S19224C2[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
extern VTBL_ENTRY _ZTV8S19224C2[];
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C2[] = {
  {&(_ZTV8S19224C2[5]),  5,8},
  {&(_ZTV8S19224C2[8]),  8,8},
  {&(_tg__ZTV8S19224C5__8S19224C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
Class_Descriptor cd_S19224C2 = {  "S19224C2", // class name
  bases_S19224C2, 5,
  &(vtc_S19224C2[0]), // expected_vtbl_contents
  &(vtt_S19224C2[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19224C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19224C2),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C2),3, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C9  : virtual S4228C27 , S4228C37 {
  ~S19224C9(); // tgen
  S19224C9(); // tgen
};
//SIG(-1 S19224C9) C1{ VBC2{ m} BC3{ m}}


S19224C9 ::~S19224C9(){ note_dtor("S19224C9", this);} // tgen
S19224C9 ::S19224C9(){ note_ctor("S19224C9", this);} // tgen

static void Test_S19224C9()
{
  extern Class_Descriptor cd_S19224C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19224C9, buf);
    S19224C9 *dp, &lv = *(dp=new (buf) S19224C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19224C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C9)");
    check_base_class_offset(lv, (S4228C27*), 0, "S19224C9");
    check_base_class_offset(lv, (S4228C37*), 0, "S19224C9");
    test_class_info(&lv, &cd_S19224C9);
    dp->~S19224C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C9(Test_S19224C9, "S19224C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19224C9C1Ev();
extern void _ZN8S19224C9D1Ev();
Name_Map name_map_S19224C9[] = {
  NSPAIR(_ZN8S19224C9C1Ev),
  NSPAIR(_ZN8S19224C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S19224C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C9[];
static  VTBL_ENTRY vtc_S19224C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
extern VTBL_ENTRY _ZTV8S19224C9[];
static  VTT_ENTRY vtt_S19224C9[] = {
  {&(_ZTV8S19224C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
Class_Descriptor cd_S19224C9 = {  "S19224C9", // class name
  bases_S19224C9, 2,
  &(vtc_S19224C9[0]), // expected_vtbl_contents
  &(vtt_S19224C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19224C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19224C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C9),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  S19224C8  : S4228C37 , S19224C9 , S19224C5 {
  virtual  ~S19224C8(); // _ZN8S19224C8D2Ev
  S19224C8(); // tgen
};
//SIG(-1 S19224C8) C1{ BC2{ m} BC3{ VBC4{ m} BC2} BC5{ BC4 VBC2 FC4} vd}


 S19224C8 ::~S19224C8(){ note_dtor("S19224C8", this);}
S19224C8 ::S19224C8(){ note_ctor("S19224C8", this);} // tgen

static void Test_S19224C8()
{
  extern Class_Descriptor cd_S19224C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19224C8, buf);
    S19224C8 *dp, &lv = *(dp=new (buf) S19224C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19224C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C8)");
    /*is_ambiguous_... S19224C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(8,4), "S19224C8");
    check_base_class_offset(lv, (S4228C27*)(S19224C9*), 0, "S19224C8");
    check_base_class_offset(lv, (S4228C37*)(S19224C9*), 0, "S19224C8");
    check_base_class_offset(lv, (S19224C9*), 0, "S19224C8");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(8,4), "S19224C8");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(17,9), "S19224C8");
    check_base_class_offset(lv, (S19224C5*), ABISELECT(8,4), "S19224C8");
    test_class_info(&lv, &cd_S19224C8);
    dp->~S19224C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C8(Test_S19224C8, "S19224C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19224C8C1Ev();
extern void _ZN8S19224C8D2Ev();
Name_Map name_map_S19224C8[] = {
  NSPAIR(_ZN8S19224C8C1Ev),
  NSPAIR(_ZN8S19224C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
static Base_Class bases_S19224C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    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_S19224C5,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C8[];
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY vtc_S19224C8[] = {
  ABISELECT(17,9),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
  ABISELECT(9,5),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
extern VTBL_ENTRY _ZTV8S19224C8[];
static  VTBL_ENTRY _tg__ZTV8S19224C9__8S19224C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C8[] = {
  {&(_ZTV8S19224C8[4]),  4,9},
  {&(_tg__ZTV8S19224C9__8S19224C8[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8[3]),  3,3},
  {&(_ZTV8S19224C8[9]),  9,9},
};
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
Class_Descriptor cd_S19224C8 = {  "S19224C8", // class name
  bases_S19224C8, 7,
  &(vtc_S19224C8[0]), // expected_vtbl_contents
  &(vtt_S19224C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19224C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19224C8),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C10  : virtual S19224C2 {
  char s19224c10f0:8;
  ~S19224C10(); // tgen
  S19224C10(); // tgen
};
//SIG(-1 S19224C10) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} Fc:8}


S19224C10 ::~S19224C10(){ note_dtor("S19224C10", this);} // tgen
S19224C10 ::S19224C10(){ note_ctor("S19224C10", this);} // tgen

static void Test_S19224C10()
{
  extern Class_Descriptor cd_S19224C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S19224C10, buf);
    S19224C10 *dp, &lv = *(dp=new (buf) S19224C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19224C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C10)");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), ABISELECT(16,8), "S19224C10");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C10");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(32,16), "S19224C10");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), 0, "S19224C10");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(32,16), "S19224C10");
    check_base_class_offset(lv, (S19224C2*), ABISELECT(16,8), "S19224C10");
    set_bf_and_test(lv, s19224c10f0, ABISELECT(8,4), 0, 8, 1, "S19224C10");
    set_bf_and_test(lv, s19224c10f0, ABISELECT(8,4), 0, 8, hide_sll(1LL<<7), "S19224C10");
    test_class_info(&lv, &cd_S19224C10);
    dp->~S19224C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C10(Test_S19224C10, "S19224C10", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S19224C10C1Ev();
extern void _ZN9S19224C10D1Ev();
Name_Map name_map_S19224C10[] = {
  NSPAIR(_ZN9S19224C10C1Ev),
  NSPAIR(_ZN9S19224C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
static Base_Class bases_S19224C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C5,    ABISELECT(32,16), //bcp->offset
    11, //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(16,8), //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19224C10[];
static  VTBL_ENTRY vtc_S19224C10[] = {
  0,
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
extern VTBL_ENTRY _ZTV9S19224C10[];
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C10[] = {
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__9S19224C10[] = {
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C10[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C10[] = {
  {&(_ZTV9S19224C10[6]),  6,14},
  {&(_ZTV9S19224C10[11]),  11,14},
  {&(_ZTV9S19224C10[14]),  14,14},
  {&(_tg__ZTV8S19224C2__9S19224C10[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__9S19224C10[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19224C10[];
extern  VTBL_ENTRY _ZTV9S19224C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C10[];
Class_Descriptor cd_S19224C10 = {  "S19224C10", // class name
  bases_S19224C10, 6,
  &(vtc_S19224C10[0]), // expected_vtbl_contents
  &(vtt_S19224C10[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S19224C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19224C10),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19224C10),6, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C13  : S3423C8_nt , virtual S19224C5 , S19224C2 , S4228C37 {
  char s19224c13f0;
  virtual  ~S19224C13(); // _ZN9S19224C13D2Ev
  S19224C13(); // tgen
};
//SIG(-1 S19224C13) C1{ BC2{ m Fi} VBC3{ BC4{ m} VBC5{ m} FC4} BC6{ BC5 VBC4 VBC3 Fp} BC5 vd Fc}


 S19224C13 ::~S19224C13(){ note_dtor("S19224C13", this);}
S19224C13 ::S19224C13(){ note_ctor("S19224C13", this);} // tgen

static void Test_S19224C13()
{
  extern Class_Descriptor cd_S19224C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19224C13, buf);
    S19224C13 *dp, &lv = *(dp=new (buf) S19224C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19224C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C13)");
    check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(16,8), "S19224C13");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(24,16), "S19224C13");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(33,21), "S19224C13");
    check_base_class_offset(lv, (S19224C5*), ABISELECT(24,16), "S19224C13");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(24,16), "S19224C13");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), 0, "S19224C13");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C13");
    check_base_class_offset(lv, (S19224C2*), 0, "S19224C13");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*), ABISELECT(20,12), "S19224C13");
    check_field_offset(lv, s19224c13f0, ABISELECT(20,12), "S19224C13.s19224c13f0");
    test_class_info(&lv, &cd_S19224C13);
    dp->~S19224C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C13(Test_S19224C13, "S19224C13", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S19224C13C1Ev();
extern void _ZN9S19224C13D2Ev();
Name_Map name_map_S19224C13[] = {
  NSPAIR(_ZN9S19224C13C1Ev),
  NSPAIR(_ZN9S19224C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S19224C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C27,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(33,21), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19224C5,    ABISELECT(24,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4228C37,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19224C13[];
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY vtc_S19224C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
extern VTBL_ENTRY _ZTV9S19224C13[];
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C13[] = {
  ABISELECT(33,21),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__9S19224C13[] = {
  ABISELECT(9,5),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C13[] = {
  {&(_ZTV9S19224C13[5]),  5,10},
  {&(_tg__ZTV8S19224C2__9S19224C13[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__9S19224C13[3]),  3,3},
  {&(_ZTV9S19224C13[10]),  10,10},
  {&(_tg__ZTV8S19224C5__9S19224C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
Class_Descriptor cd_S19224C13 = {  "S19224C13", // class name
  bases_S19224C13, 8,
  &(vtc_S19224C13[0]), // expected_vtbl_contents
  &(vtt_S19224C13[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S19224C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19224C13),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19224C13),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C12  : virtual S19224C13 {
  int s19224c12f0;
  virtual  ~S19224C12(); // _ZN9S19224C12D2Ev
  S19224C12(); // tgen
};
//SIG(-1 S19224C12) C1{ VBC2{ BC3{ m Fi} VBC4{ BC5{ m} VBC6{ m} FC5} BC7{ BC6 VBC5 VBC4 Fp} BC6 vd Fc} vd Fi}


 S19224C12 ::~S19224C12(){ note_dtor("S19224C12", this);}
S19224C12 ::S19224C12(){ note_ctor("S19224C12", this);} // tgen

static void Test_S19224C12()
{
  extern Class_Descriptor cd_S19224C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19224C12, buf);
    S19224C12 *dp, &lv = *(dp=new (buf) S19224C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19224C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C12)");
    check_base_class_offset(lv, (S3423C8_nt*)(S19224C13*), ABISELECT(32,16), "S19224C12");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(40,24), "S19224C12");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*), 0, "S19224C12");
    check_base_class_offset(lv, (S19224C5*)(S19224C13*), ABISELECT(40,24), "S19224C12");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*)(S19224C13*), ABISELECT(40,24), "S19224C12");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*)(S19224C13*), ABISELECT(16,8), "S19224C12");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*)(S19224C13*), 0, "S19224C12");
    check_base_class_offset(lv, (S19224C2*)(S19224C13*), ABISELECT(16,8), "S19224C12");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C13*), ABISELECT(36,20), "S19224C12");
    check_base_class_offset(lv, (S19224C13*), ABISELECT(16,8), "S19224C12");
    check_field_offset(lv, s19224c12f0, ABISELECT(8,4), "S19224C12.s19224c12f0");
    test_class_info(&lv, &cd_S19224C12);
    dp->~S19224C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C12(Test_S19224C12, "S19224C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S19224C12C1Ev();
extern void _ZN9S19224C12D2Ev();
Name_Map name_map_S19224C12[] = {
  NSPAIR(_ZN9S19224C12C1Ev),
  NSPAIR(_ZN9S19224C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C13;
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
static Base_Class bases_S19224C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_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
    8, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    3, //immediately_derived
  0, 0},
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C5,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C2,    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
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19224C13,    ABISELECT(16,8), //bcp->offset
    8, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19224C12[];
extern void _ZN9S19224C12D1Ev();
extern void _ZN9S19224C12D0Ev();
extern void ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S19224C12D1Ev,_ZThn8_N9S19224C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S19224C12D0Ev,_ZThn8_N9S19224C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19224C12[] = {
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&_ZN9S19224C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C12D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
};
extern VTBL_ENTRY _ZTV9S19224C12[];
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C13__9S19224C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C29S19224C13__9S19224C12[] = {
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C29S19224C13__9S19224C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13__9S19224C12[] = {
  ABISELECT(-40,-24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C12[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTT_ENTRY vtt_S19224C12[] = {
  {&(_ZTV9S19224C12[6]),  6,19},
  {&(_ZTV9S19224C12[14]),  14,19},
  {&(_ZTV9S19224C12[19]),  19,19},
  {&(_tg__ZTV9S19224C13__9S19224C12[5]),  5,7},
  {&(_tg__ZTV8S19224C29S19224C13__9S19224C12[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C29S19224C13__9S19224C12[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C13__9S19224C12[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19224C12[];
extern  VTBL_ENTRY _ZTV9S19224C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C12[];
static VTBL_ENTRY alt_thunk_names317[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19224C12D0Ev,_ZThn8_N9S19224C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19224C12D1Ev,_ZThn8_N9S19224C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19224C12 = {  "S19224C12", // class name
  bases_S19224C12, 9,
  &(vtc_S19224C12[0]), // expected_vtbl_contents
  &(vtt_S19224C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S19224C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19224C12),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19224C12),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names317,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C7  : virtual S19224C8 , virtual S19224C2 , S19224C10 , virtual S3423C8_nt , S19224C12 {
  ~S19224C7(); // tgen
  S19224C7(); // tgen
};
//SIG(-1 S19224C7) C1{ VBC2{ BC3{ m} BC4{ VBC5{ m} BC3} BC6{ BC5 VBC3 FC5} vd} VBC7{ BC3 VBC5 VBC6 Fp} BC8{ VBC7 Fc:8} VBC9{ m Fi} BC10{ VBC11{ BC9 VBC6 BC7 BC3 vd Fc} vd Fi}}


S19224C7 ::~S19224C7(){ note_dtor("S19224C7", this);} // tgen
S19224C7 ::S19224C7(){ note_ctor("S19224C7", this);} // tgen

static void Test_S19224C7()
{
  extern Class_Descriptor cd_S19224C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S19224C7, buf);
    S19224C7 *dp, &lv = *(dp=new (buf) S19224C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S19224C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C7)");
    /*is_ambiguous_... S19224C8::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C8*), ABISELECT(40,20), "S19224C7");
    check_base_class_offset(lv, (S4228C27*)(S19224C9*)(S19224C8*), 0, "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C7");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*)(S19224C13*), 0, "S19224C7");
    check_base_class_offset(lv, (S4228C37*)(S19224C9*)(S19224C8*), ABISELECT(32,16), "S19224C7");
    check_base_class_offset(lv, (S19224C9*)(S19224C8*), ABISELECT(32,16), "S19224C7");
    check_base_class_offset(lv, (S4228C27*)(S19224C5*)(S19224C8*), ABISELECT(40,20), "S19224C7");
    check_base_class_offset(lv, (S4228C37*)(S19224C5*)(S19224C8*), 0, "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*), 0, "S19224C7");
    check_base_class_offset(lv, (S19224C5*)(S19224C8*), ABISELECT(40,20), "S19224C7");
    check_base_class_offset(lv, (S19224C8*), ABISELECT(32,16), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), ABISELECT(56,28), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(72,36), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(72,36), "S19224C7");
    check_base_class_offset(lv, (S19224C5*)(S19224C13*), ABISELECT(72,36), "S19224C7");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*)(S19224C13*), ABISELECT(72,36), "S19224C7");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C2*), ABISELECT(56,28), "S19224C7");
    check_base_class_offset(lv, (S19224C2*)(S19224C10*), ABISELECT(56,28), "S19224C7");
    check_base_class_offset(lv, (S19224C10*), 0, "S19224C7");
    /*is_ambiguous_... S19224C7::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*), ABISELECT(84,44), "S19224C7");
    check_base_class_offset(lv, (S3423C8_nt*)(S19224C13*), ABISELECT(104,56), "S19224C7");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*)(S19224C13*), ABISELECT(88,48), "S19224C7");
    check_base_class_offset(lv, (S19224C2*)(S19224C13*), ABISELECT(88,48), "S19224C7");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C13*), ABISELECT(108,60), "S19224C7");
    check_base_class_offset(lv, (S19224C13*)(S19224C12*), ABISELECT(88,48), "S19224C7");
    check_base_class_offset(lv, (S19224C12*), ABISELECT(16,8), "S19224C7");
    test_class_info(&lv, &cd_S19224C7);
    dp->~S19224C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C7(Test_S19224C7, "S19224C7", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S19224C7C1Ev();
extern void _ZN8S19224C7D1Ev();
Name_Map name_map_S19224C7[] = {
  NSPAIR(_ZN8S19224C7C1Ev),
  NSPAIR(_ZN8S19224C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C8;
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S19224C10;
extern VTBL_ENTRY _ZTI9S19224C10[];
extern  VTBL_ENTRY _ZTV9S19224C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C13;
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
extern Class_Descriptor cd_S19224C12;
extern VTBL_ENTRY _ZTI9S19224C12[];
extern  VTBL_ENTRY _ZTV9S19224C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C12[];
static Base_Class bases_S19224C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S19224C9,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C5,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19224C8,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    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
    11, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    10, //immediately_derived
  0, 0},
  {&cd_S19224C5,    ABISELECT(72,36), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(56,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19224C10,    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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3423C8_nt,    ABISELECT(84,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3423C8_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
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19224C2,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(108,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
    18, //immediately_derived
  0, 0},
  {&cd_S19224C13,    ABISELECT(88,48), //bcp->offset
    37, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19224C12,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C7[];
extern void _ZN8S19224C7D1Ev();
extern void _ZN8S19224C7D0Ev();
extern void ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn88_N8S19224C7D1Ev,_ZThn48_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn88_N8S19224C7D0Ev,_ZThn48_N8S19224C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19224C7[] = {
  ABISELECT(88,48),
  ABISELECT(84,44),
  ABISELECT(32,16),
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&_ZN8S19224C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C7D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev),
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19224C7[];
static  VTBL_ENTRY _tg__ZTV9S19224C10__8S19224C7[] = {
  0,
  ABISELECT(72,36),
  0,
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C10__8S19224C7[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C10__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
extern void _ZN9S19224C12D1Ev();
extern void _ZN9S19224C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C12__8S19224C7[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(56,28),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&_ZN9S19224C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev)();
extern void ABISELECT(_ZThn72_N9S19224C12D1Ev,_ZThn40_N9S19224C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev)();
extern void ABISELECT(_ZThn72_N9S19224C12D0Ev,_ZThn40_N9S19224C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19224C13__9S19224C12__8S19224C7[] = {
  ABISELECT(-72,-40),
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C12__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
};
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C8__8S19224C7[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C98S19224C8__8S19224C7[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__8S19224C7[] = {
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8__8S19224C7[] = {
  ABISELECT(-40,-20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__8S19224C7[] = {
  ABISELECT(-56,-28),
  ABISELECT(16,8),
  ABISELECT(-56,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__A1__8S19224C7[] = {
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C13__8S19224C7[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C29S19224C13__A1__8S19224C7[] = {
  ABISELECT(-88,-48),
  ABISELECT(-16,-12),
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13__8S19224C7[] = {
  ABISELECT(-72,-36),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
static  VTT_ENTRY vtt_S19224C7[] = {
  {&(_ZTV8S19224C7[9]),  9,45},
  {&(_tg__ZTV9S19224C10__8S19224C7[6]),  6,6},
  {&(_tg__ZTV8S19224C2__9S19224C10__8S19224C7[5]),  5,5},
  {&(_tg__ZTV8S19224C5__9S19224C10__8S19224C7[3]),  3,3},
  {&(_tg__ZTV9S19224C12__8S19224C7[6]),  6,8},
  {&(_tg__ZTV9S19224C13__9S19224C12__8S19224C7[6]),  6,8},
  {&(_tg__ZTV8S19224C5__9S19224C12__8S19224C7[3]),  3,3},
  {&(_ZTV8S19224C7[24]),  24,45},
  {&(_ZTV8S19224C7[29]),  29,45},
  {&(_ZTV8S19224C7[34]),  34,45},
  {&(_ZTV8S19224C7[37]),  37,45},
  {&(_ZTV8S19224C7[17]),  17,45},
  {&(_ZTV8S19224C7[43]),  43,45},
  {&(_tg__ZTV8S19224C8__8S19224C7[4]),  4,6},
  {&(_tg__ZTV8S19224C98S19224C8__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C58S19224C8__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C2__8S19224C7[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C5__A1__8S19224C7[3]),  3,3},
  {&(_tg__ZTV9S19224C13__8S19224C7[5]),  5,7},
  {&(_tg__ZTV8S19224C29S19224C13__A1__8S19224C7[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C7[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C13__8S19224C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C7[];
extern  VTBL_ENTRY _ZTV8S19224C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C7[];
static VTBL_ENTRY alt_thunk_names318[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19224C12D0Ev,_ZThn40_N9S19224C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N9S19224C12D1Ev,_ZThn40_N9S19224C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C7D0Ev,_ZThn48_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C7D1Ev,_ZThn48_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19224C7 = {  "S19224C7", // class name
  bases_S19224C7, 20,
  &(vtc_S19224C7[0]), // expected_vtbl_contents
  &(vtt_S19224C7[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S19224C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19224C7),45, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C7),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names318,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19224C1  : virtual S19224C2 , virtual S4228C23 , virtual S19224C7 , S19224C8 {
  ~S19224C1(); // tgen
  S19224C1(); // tgen
};
//SIG(1 S19224C1) C1{ VBC2{ BC3{ m} VBC4{ m} VBC5{ BC4 VBC3 FC4} Fp} VBC6{ m} VBC7{ VBC8{ BC3 BC9{ VBC4 BC3} BC5 vd} VBC2 BC10{ VBC2 Fc:8} VBC11{ m Fi} BC12{ VBC13{ BC11 VBC5 BC2 BC3 vd Fc} vd Fi}} BC8}


S19224C1 ::~S19224C1(){ note_dtor("S19224C1", this);} // tgen
S19224C1 ::S19224C1(){ note_ctor("S19224C1", this);} // tgen

static void Test_S19224C1()
{
  extern Class_Descriptor cd_S19224C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,20)];
    init_test(&cd_S19224C1, buf);
    S19224C1 *dp, &lv = *(dp=new (buf) S19224C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,76), "sizeof(S19224C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19224C1)");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*), ABISELECT(24,12), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C2::S4228C27 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C2*)(S19224C13*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*), ABISELECT(40,20), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C5 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*), ABISELECT(49,25), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*)(S19224C8*), ABISELECT(49,25), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C5*)(S19224C8*), ABISELECT(49,25), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C2*), ABISELECT(40,20), "S19224C1");
    check_base_class_offset(lv, (S19224C5*)(S19224C13*), ABISELECT(40,20), "S19224C1");
    check_base_class_offset(lv, (S19224C5*)(S19224C2*)(S19224C13*), ABISELECT(40,20), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C2*), ABISELECT(24,12), "S19224C1");
    /*is_ambiguous_... S19224C7::S19224C2 */ AMB_check_base_class_offset(lv, (S19224C2*)(S19224C7*), ABISELECT(24,12), "S19224C1");
    check_base_class_offset(lv, (S19224C2*)(S19224C10*)(S19224C7*), ABISELECT(24,12), "S19224C1");
    check_base_class_offset(lv, (S4228C23*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C8*), ABISELECT(96,48), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C9*)(S19224C8*), ABISELECT(88,44), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C9*)(S19224C8*), ABISELECT(88,44), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*)(S19224C8*), ABISELECT(96,48), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C8*), ABISELECT(96,48), "S19224C1");
    check_base_class_offset(lv, (S19224C8*)(S19224C7*), ABISELECT(88,44), "S19224C1");
    check_base_class_offset(lv, (S19224C10*)(S19224C7*), ABISELECT(56,28), "S19224C1");
    /*is_ambiguous_... S19224C7::S3423C8_nt */ AMB_check_base_class_offset(lv, (S3423C8_nt*)(S19224C7*), ABISELECT(108,56), "S19224C1");
    check_base_class_offset(lv, (S3423C8_nt*)(S19224C13*), ABISELECT(128,68), "S19224C1");
    /*is_ambiguous_... S19224C2::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C2*)(S19224C13*), ABISELECT(112,60), "S19224C1");
    check_base_class_offset(lv, (S19224C2*)(S19224C13*), ABISELECT(112,60), "S19224C1");
    /*is_ambiguous_... S19224C13::S4228C37 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C13*), ABISELECT(132,72), "S19224C1");
    check_base_class_offset(lv, (S19224C13*)(S19224C12*)(S19224C7*), ABISELECT(112,60), "S19224C1");
    check_base_class_offset(lv, (S19224C12*)(S19224C7*), ABISELECT(72,36), "S19224C1");
    check_base_class_offset(lv, (S19224C7*), ABISELECT(56,28), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C8*), ABISELECT(8,4), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C37*)(S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C9*)(S19224C8*), 0, "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S4228C27*)(S19224C5*)(S19224C8*), ABISELECT(8,4), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C5*)(S19224C8*), ABISELECT(8,4), "S19224C1");
    /*is_ambiguous_... S19224C1::S19224C8 */ AMB_check_base_class_offset(lv, (S19224C8*), 0, "S19224C1");
    test_class_info(&lv, &cd_S19224C1);
    dp->~S19224C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19224C1(Test_S19224C1, "S19224C1", ABISELECT(136,76));

#else // __cplusplus

extern void _ZN8S19224C1C1Ev();
extern void _ZN8S19224C1D1Ev();
Name_Map name_map_S19224C1[] = {
  NSPAIR(_ZN8S19224C1C1Ev),
  NSPAIR(_ZN8S19224C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C23;
extern VTBL_ENTRY _ZTI8S4228C23[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C8;
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
extern Class_Descriptor cd_S19224C10;
extern VTBL_ENTRY _ZTI9S19224C10[];
extern  VTBL_ENTRY _ZTV9S19224C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C10[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C2;
extern VTBL_ENTRY _ZTI8S19224C2[];
extern  VTBL_ENTRY _ZTV8S19224C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C2[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C13;
extern VTBL_ENTRY _ZTI9S19224C13[];
extern  VTBL_ENTRY _ZTV9S19224C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C13[];
extern Class_Descriptor cd_S19224C12;
extern VTBL_ENTRY _ZTI9S19224C12[];
extern  VTBL_ENTRY _ZTV9S19224C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19224C12[];
extern Class_Descriptor cd_S19224C7;
extern VTBL_ENTRY _ZTI8S19224C7[];
extern  VTBL_ENTRY _ZTV8S19224C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C7[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19224C9;
extern VTBL_ENTRY _ZTI8S19224C9[];
extern  VTBL_ENTRY _ZTV8S19224C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C9[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S19224C5;
extern VTBL_ENTRY _ZTI8S19224C5[];
extern  VTBL_ENTRY _ZTV8S19224C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C5[];
extern Class_Descriptor cd_S19224C8;
extern VTBL_ENTRY _ZTI8S19224C8[];
extern  VTBL_ENTRY _ZTV8S19224C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C8[];
static Base_Class bases_S19224C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    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, 0},
  {&cd_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4228C27,    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
    4, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(49,25), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C5,    ABISELECT(40,20), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19224C2,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C37,    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
    12, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19224C9,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4228C27,    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
    11, //immediately_derived
  0, 0},
  {&cd_S19224C5,    ABISELECT(96,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19224C8,    ABISELECT(88,44), //bcp->offset
    44, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19224C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3423C8_nt,    ABISELECT(108,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, 1},
  {&cd_S3423C8_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
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    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
    17, //immediately_derived
  0, 0},
  {&cd_S19224C2,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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
    19, //immediately_derived
  0, 0},
  {&cd_S4228C37,    ABISELECT(132,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
    19, //immediately_derived
  0, 0},
  {&cd_S19224C13,    ABISELECT(112,60), //bcp->offset
    54, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19224C12,    ABISELECT(72,36), //bcp->offset
    36, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19224C7,    ABISELECT(56,28), //bcp->offset
    24, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4228C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4228C27,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19224C5,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19224C8,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19224C1[];
extern void _ZN8S19224C1D1Ev();
extern void _ZN8S19224C1D0Ev();
extern void ABISELECT(_ZTv0_n80_N8S19224C1D1Ev,_ZTv0_n40_N8S19224C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19224C1D1Ev,_ZThn28_N8S19224C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19224C1D0Ev,_ZTv0_n40_N8S19224C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19224C1D0Ev,_ZThn28_N8S19224C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n80_N8S19224C1D1Ev,_ZTvn8_n40_N8S19224C1D1Ev)();
extern void ABISELECT(_ZTvn16_n80_N8S19224C1D0Ev,_ZTvn8_n40_N8S19224C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S19224C1D1Ev,_ZTv0_n20_N8S19224C1D1Ev)();
extern void ABISELECT(_ZThn88_N8S19224C1D1Ev,_ZThn44_N8S19224C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19224C1D0Ev,_ZTv0_n20_N8S19224C1D0Ev)();
extern void ABISELECT(_ZThn88_N8S19224C1D0Ev,_ZThn44_N8S19224C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C1D1Ev,_ZTv0_n24_N8S19224C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19224C1D1Ev,_ZThn60_N8S19224C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C1D0Ev,_ZTv0_n24_N8S19224C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S19224C1D0Ev,_ZThn60_N8S19224C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19224C1[] = {
  ABISELECT(112,60),
  ABISELECT(108,56),
  ABISELECT(88,44),
  ABISELECT(56,28),
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(49,25),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&_ZN8S19224C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C1D0Ev,
  ABISELECT(41,21),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(9,5),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(-56,-28),
  ABISELECT(56,32),
  ABISELECT(52,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19224C1D1Ev,_ZTv0_n40_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19224C1D0Ev,_ZTv0_n40_N8S19224C1D0Ev),
  ABISELECT(-72,-36),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(40,24),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S19224C1D1Ev,_ZTvn8_n40_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n80_N8S19224C1D0Ev,_ZTvn8_n40_N8S19224C1D0Ev),
  ABISELECT(-88,-44),
  ABISELECT(-39,-19),
  ABISELECT(-88,-44),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C1D1Ev,_ZTv0_n20_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C1D0Ev,_ZTv0_n20_N8S19224C1D0Ev),
  ABISELECT(-47,-23),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  ABISELECT(-112,-60),
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19224C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C1D1Ev,_ZTv0_n24_N8S19224C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C1D0Ev,_ZTv0_n24_N8S19224C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19224C1[];
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C8__A__8S19224C1[] = {
  ABISELECT(49,25),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C98S19224C8__A1__8S19224C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__A2__8S19224C1[] = {
  ABISELECT(41,21),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8__A__8S19224C1[] = {
  ABISELECT(41,21),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__8S19224C1[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C2__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C1[] = {
  ABISELECT(9,5),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
extern void _ZN8S19224C7D1Ev();
extern void _ZN8S19224C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C7__8S19224C1[] = {
  ABISELECT(56,32),
  ABISELECT(52,28),
  ABISELECT(32,16),
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&_ZN8S19224C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C7D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19224C108S19224C7__8S19224C1[] = {
  ABISELECT(-7,-3),
  ABISELECT(-16,-8),
  ABISELECT(-56,-28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__9S19224C108S19224C7__8S19224C1[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C108S19224C7__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19224C10[0]),
};
extern void _ZN9S19224C12D1Ev();
extern void _ZN9S19224C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C128S19224C7__8S19224C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&_ZN9S19224C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C12D0Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev)();
extern void ABISELECT(_ZThn40_N9S19224C12D1Ev,_ZThn24_N9S19224C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev)();
extern void ABISELECT(_ZThn40_N9S19224C12D0Ev,_ZThn24_N9S19224C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19224C13__9S19224C128S19224C7__8S19224C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C128S19224C7__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19224C12[0]),
};
extern void ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19224C8__8S19224C7__8S19224C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-39,-19),
  ABISELECT(-88,-44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__8S19224C7__8S19224C1[] = {
  ABISELECT(-47,-23),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C2__8S19224C7__8S19224C1[] = {
  ABISELECT(25,13),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__A1__8S19224C7__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
};
extern void ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19224C12__8S19224C7__8S19224C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(-23,-11),
  ABISELECT(-32,-16),
  ABISELECT(40,24),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D1Ev,_ZThn8_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S19224C7D0Ev,_ZThn8_N8S19224C7D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev)();
extern void ABISELECT(_ZThn56_N8S19224C7D1Ev,_ZThn32_N8S19224C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev)();
extern void ABISELECT(_ZThn56_N8S19224C7D0Ev,_ZThn32_N8S19224C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19224C13__8S19224C7__8S19224C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19224C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev),
};
extern void _ZN8S19224C8D1Ev();
extern void _ZN8S19224C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19224C8__8S19224C1[] = {
  ABISELECT(-39,-19),
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
  (VTBL_ENTRY)&_ZN8S19224C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19224C8D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C98S19224C8__8S19224C1[] = {
  ABISELECT(-88,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C58S19224C8__A1__8S19224C1[] = {
  ABISELECT(-47,-23),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C8__8S19224C1[] = {
  ABISELECT(-47,-23),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19224C8[0]),
};
extern void _ZN9S19224C13D1Ev();
extern void _ZN9S19224C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19224C13__8S19224C1[] = {
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
  (VTBL_ENTRY)&_ZN9S19224C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19224C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19224C29S19224C13__A1__8S19224C1[] = {
  ABISELECT(-63,-35),
  ABISELECT(-72,-40),
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI8S19224C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19224C5__9S19224C13__8S19224C1[] = {
  ABISELECT(9,5),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S19224C13[0]),
};
static  VTT_ENTRY vtt_S19224C1[] = {
  {&(_ZTV8S19224C1[11]),  11,62},
  {&(_tg__ZTV8S19224C8__A__8S19224C1[4]),  4,6},
  {&(_tg__ZTV8S19224C98S19224C8__A1__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C58S19224C8__A2__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8__A__8S19224C1[3]),  3,3},
  {&(_ZTV8S19224C1[21]),  21,62},
  {&(_ZTV8S19224C1[24]),  24,62},
  {&(_ZTV8S19224C1[34]),  34,62},
  {&(_ZTV8S19224C1[49]),  49,62},
  {&(_ZTV8S19224C1[54]),  54,62},
  {&(_ZTV8S19224C1[42]),  42,62},
  {&(_ZTV8S19224C1[60]),  60,62},
  {&(_ZTV8S19224C1[16]),  16,62},
  {&(_tg__ZTV8S19224C2__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C2__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C7__8S19224C1[9]),  9,11},
  {&(_tg__ZTV9S19224C108S19224C7__8S19224C1[6]),  6,6},
  {&(_tg__ZTV8S19224C2__9S19224C108S19224C7__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__9S19224C108S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV9S19224C128S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV9S19224C13__9S19224C128S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV8S19224C5__9S19224C128S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C8__8S19224C7__8S19224C1[5]),  5,7},
  {&(_tg__ZTV8S19224C58S19224C8__8S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C2__8S19224C7__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__A1__8S19224C7__8S19224C1[3]),  3,3},
  {&(_tg__ZTV9S19224C12__8S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV9S19224C13__8S19224C7__8S19224C1[6]),  6,8},
  {&(_tg__ZTV8S19224C8__8S19224C1[4]),  4,6},
  {&(_tg__ZTV8S19224C98S19224C8__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C58S19224C8__A1__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__8S19224C8__8S19224C1[3]),  3,3},
  {&(_tg__ZTV9S19224C13__8S19224C1[5]),  5,7},
  {&(_tg__ZTV8S19224C29S19224C13__A1__8S19224C1[5]),  5,5},
  {&(_tg__ZTV8S19224C5__8S19224C29S19224C13__A1__8S19224C1[3]),  3,3},
  {&(_tg__ZTV8S19224C5__9S19224C13__8S19224C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19224C1[];
extern  VTBL_ENTRY _ZTV8S19224C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19224C1[];
static VTBL_ENTRY alt_thunk_names319[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D0Ev,_ZTv0_n24_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C7D0Ev,_ZThn32_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C7D1Ev,_ZTv0_n24_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C7D1Ev,_ZThn32_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D0Ev,_ZTv0_n20_N8S19224C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D0Ev,_ZThn16_N8S19224C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C7D1Ev,_ZTv0_n20_N8S19224C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19224C7D1Ev,_ZThn16_N8S19224C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D0Ev,_ZTv0_n24_N9S19224C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19224C12D0Ev,_ZThn24_N9S19224C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19224C12D1Ev,_ZTv0_n24_N9S19224C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S19224C12D1Ev,_ZThn24_N9S19224C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C1D0Ev,_ZTv0_n24_N8S19224C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19224C1D0Ev,_ZThn60_N8S19224C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19224C1D1Ev,_ZTv0_n24_N8S19224C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19224C1D1Ev,_ZThn60_N8S19224C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C1D0Ev,_ZTv0_n20_N8S19224C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C1D0Ev,_ZThn44_N8S19224C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19224C1D1Ev,_ZTv0_n20_N8S19224C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N8S19224C1D1Ev,_ZThn44_N8S19224C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19224C1D0Ev,_ZTv0_n40_N8S19224C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C1D0Ev,_ZThn28_N8S19224C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19224C1D1Ev,_ZTv0_n40_N8S19224C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19224C1D1Ev,_ZThn28_N8S19224C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19224C1 = {  "S19224C1", // class name
  bases_S19224C1, 28,
  &(vtc_S19224C1[0]), // expected_vtbl_contents
  &(vtt_S19224C1[0]), // expected_vtt_contents
  ABISELECT(136,76), // object size
  NSPAIRA(_ZTI8S19224C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19224C1),62, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19224C1),37, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names319,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C4  : virtual S19676C9 {
  virtual  ~S21165C4(); // _ZN8S21165C4D2Ev
  S21165C4(); // tgen
};
//SIG(-1 S21165C4) C1{ VBC2{ vd m Fp Fi Fc FD} vd}


 S21165C4 ::~S21165C4(){ note_dtor("S21165C4", this);}
S21165C4 ::S21165C4(){ note_ctor("S21165C4", this);} // tgen

static void Test_S21165C4()
{
  extern Class_Descriptor cd_S21165C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S21165C4, buf);
    S21165C4 *dp, &lv = *(dp=new (buf) S21165C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S21165C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C4)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(16,4), "S21165C4");
    test_class_info(&lv, &cd_S21165C4);
    dp->~S21165C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C4(Test_S21165C4, "S21165C4", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S21165C4C1Ev();
extern void _ZN8S21165C4D2Ev();
Name_Map name_map_S21165C4[] = {
  NSPAIR(_ZN8S21165C4C1Ev),
  NSPAIR(_ZN8S21165C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
static Base_Class bases_S21165C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C4[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C4[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C4[];
static  VTT_ENTRY vtt_S21165C4[] = {
  {&(_ZTV8S21165C4[3]),  3,10},
  {&(_ZTV8S21165C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
static VTBL_ENTRY alt_thunk_names320[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C4 = {  "S21165C4", // class name
  bases_S21165C4, 1,
  &(vtc_S21165C4[0]), // expected_vtbl_contents
  &(vtt_S21165C4[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S21165C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21165C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names320,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C2  : virtual S19676C9 , S21165C4 {
  void *s21165c2f0[10];
  int s21165c2f1;
  __tsi64 s21165c2f2;
  ~S21165C2(); // tgen
  S21165C2(); // tgen
};
//SIG(-1 S21165C2) C1{ VBC2{ vd m Fp Fi Fc FD} BC3{ VBC2 vd} Fp[10] Fi FL}


S21165C2 ::~S21165C2(){ note_dtor("S21165C2", this);} // tgen
S21165C2 ::S21165C2(){ note_ctor("S21165C2", this);} // tgen

static void Test_S21165C2()
{
  extern Class_Descriptor cd_S21165C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S21165C2, buf);
    S21165C2 *dp, &lv = *(dp=new (buf) S21165C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S21165C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C2)");
    check_base_class_offset(lv, (S19676C9*), ABISELECT(112,56), "S21165C2");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(112,56), "S21165C2");
    check_base_class_offset(lv, (S21165C4*), 0, "S21165C2");
    check_field_offset(lv, s21165c2f0, ABISELECT(8,4), "S21165C2.s21165c2f0");
    check_field_offset(lv, s21165c2f1, ABISELECT(88,44), "S21165C2.s21165c2f1");
    check_field_offset(lv, s21165c2f2, ABISELECT(96,48), "S21165C2.s21165c2f2");
    test_class_info(&lv, &cd_S21165C2);
    dp->~S21165C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C2(Test_S21165C2, "S21165C2", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN8S21165C2C1Ev();
extern void _ZN8S21165C2D1Ev();
Name_Map name_map_S21165C2[] = {
  NSPAIR(_ZN8S21165C2C1Ev),
  NSPAIR(_ZN8S21165C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
static Base_Class bases_S21165C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(112,56), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C2[];
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C2[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C2[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C2[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
static  VTT_ENTRY vtt_S21165C2[] = {
  {&(_ZTV8S21165C2[3]),  3,10},
  {&(_tg__ZTV8S21165C4__8S21165C2[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C2[3]),  3,5},
  {&(_ZTV8S21165C2[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
static VTBL_ENTRY alt_thunk_names321[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C2 = {  "S21165C2", // class name
  bases_S21165C2, 2,
  &(vtc_S21165C2[0]), // expected_vtbl_contents
  &(vtt_S21165C2[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI8S21165C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21165C2),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names321,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C10  : virtual S21165C2 , S21165C4 {
  int s21165c10f0;
  virtual  ~S21165C10(); // _ZN9S21165C10D2Ev
  S21165C10(); // tgen
};
//SIG(-1 S21165C10) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC4 vd Fi}


 S21165C10 ::~S21165C10(){ note_dtor("S21165C10", this);}
S21165C10 ::S21165C10(){ note_ctor("S21165C10", this);} // tgen

static void Test_S21165C10()
{
  extern Class_Descriptor cd_S21165C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,24)];
    init_test(&cd_S21165C10, buf);
    S21165C10 *dp, &lv = *(dp=new (buf) S21165C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,92), "sizeof(S21165C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C10)");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(128,64), "S21165C10");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(128,64), "S21165C10");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(128,64), "S21165C10");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(16,8), "S21165C10");
    check_base_class_offset(lv, (S21165C2*), ABISELECT(16,8), "S21165C10");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*), 0, "S21165C10");
    check_field_offset(lv, s21165c10f0, ABISELECT(8,4), "S21165C10.s21165c10f0");
    test_class_info(&lv, &cd_S21165C10);
    dp->~S21165C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C10(Test_S21165C10, "S21165C10", ABISELECT(176,92));

#else // __cplusplus

extern void _ZN9S21165C10C1Ev();
extern void _ZN9S21165C10D2Ev();
Name_Map name_map_S21165C10[] = {
  NSPAIR(_ZN9S21165C10C1Ev),
  NSPAIR(_ZN9S21165C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
static Base_Class bases_S21165C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(128,64), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21165C4,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21165C10[];
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn8_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn8_N9S21165C10D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S21165C10D1Ev,_ZThn64_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S21165C10D0Ev,_ZThn64_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C10[] = {
  ABISELECT(16,8),
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(112,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S21165C10[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__A1__9S21165C10[] = {
  ABISELECT(128,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21165C4D1Ev,_ZThn64_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21165C4D0Ev,_ZThn64_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__A1__9S21165C10[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__9S21165C10[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__9S21165C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__9S21165C10[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C10[] = {
  {&(_ZTV9S21165C10[4]),  4,17},
  {&(_tg__ZTV8S21165C4__A1__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__A1__9S21165C10[3]),  3,5},
  {&(_ZTV9S21165C10[10]),  10,17},
  {&(_ZTV9S21165C10[15]),  15,17},
  {&(_tg__ZTV8S21165C2__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__9S21165C10[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__9S21165C10[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
static VTBL_ENTRY alt_thunk_names322[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C4D0Ev,_ZThn64_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C4D1Ev,_ZThn64_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21165C10D0Ev,_ZThn64_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S21165C10D1Ev,_ZThn64_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn8_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn8_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C10 = {  "S21165C10", // class name
  bases_S21165C10, 4,
  &(vtc_S21165C10[0]), // expected_vtbl_contents
  &(vtt_S21165C10[0]), // expected_vtt_contents
  ABISELECT(176,92), // object size
  NSPAIRA(_ZTI9S21165C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21165C10),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21165C10),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names322,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C9  : S19676C9 , virtual S21165C4 , virtual S21165C2 , S21165C10 {
  int s21165c9f0;
  virtual  ~S21165C9(); // _ZN8S21165C9D2Ev
  S21165C9(); // tgen
};
//SIG(-1 S21165C9) C1{ BC2{ vd m Fp Fi Fc FD} VBC3{ VBC2 vd} VBC4{ VBC2 BC3 Fp[10] Fi FL} BC5{ VBC4 BC3 vd Fi} vd Fi}


 S21165C9 ::~S21165C9(){ note_dtor("S21165C9", this);}
S21165C9 ::S21165C9(){ note_ctor("S21165C9", this);} // tgen

static void Test_S21165C9()
{
  extern Class_Descriptor cd_S21165C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,33)];
    init_test(&cd_S21165C9, buf);
    S21165C9 *dp, &lv = *(dp=new (buf) S21165C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,128), "sizeof(S21165C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C9)");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*), 0, "S21165C9");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(80,44), "S21165C9");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(80,44), "S21165C9");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(80,44), "S21165C9");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*), ABISELECT(80,44), "S21165C9");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*), ABISELECT(64,40), "S21165C9");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(128,72), "S21165C9");
    check_base_class_offset(lv, (S21165C2*), ABISELECT(128,72), "S21165C9");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*), ABISELECT(128,72), "S21165C9");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*), ABISELECT(48,28), "S21165C9");
    check_base_class_offset(lv, (S21165C10*), ABISELECT(48,28), "S21165C9");
    check_field_offset(lv, s21165c9f0, ABISELECT(60,36), "S21165C9.s21165c9f0");
    test_class_info(&lv, &cd_S21165C9);
    dp->~S21165C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C9(Test_S21165C9, "S21165C9", ABISELECT(240,128));

#else // __cplusplus

extern void _ZN8S21165C9C1Ev();
extern void _ZN8S21165C9D2Ev();
Name_Map name_map_S21165C9[] = {
  NSPAIR(_ZN8S21165C9C1Ev),
  NSPAIR(_ZN8S21165C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
static Base_Class bases_S21165C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19676C9,    ABISELECT(80,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(64,40), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    ABISELECT(128,72), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(128,72), //bcp->offset
    24, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21165C4,    ABISELECT(48,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(48,28), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C9[];
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S21165C9D1Ev,_ZThn44_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S21165C9D0Ev,_ZThn44_N8S21165C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S21165C9D1Ev,_ZThn72_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S21165C9D0Ev,_ZThn72_N8S21165C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C9[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
  ABISELECT(80,44),
  ABISELECT(32,16),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(16,4),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
  ABISELECT(-128,-72),
  ABISELECT(-48,-28),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C9[];
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9[] = {
  ABISELECT(80,44),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C10__A2__8S21165C9[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S21165C4D1Ev,_ZThn16_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S21165C4D0Ev,_ZThn16_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C10__A2__8S21165C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn80_N9S21165C10D1Ev,_ZThn44_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn80_N9S21165C10D0Ev,_ZThn44_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C10__8S21165C9[] = {
  ABISELECT(-80,-44),
  ABISELECT(-48,-28),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn32_N9S21165C10D1Ev,_ZThn16_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn32_N9S21165C10D0Ev,_ZThn16_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C10__8S21165C9[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C9[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__A1__8S21165C9[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C9[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C9[] = {
  {&(_ZTV8S21165C9[5]),  5,30},
  {&(_tg__ZTV9S21165C10__8S21165C9[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C10__A2__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C10__A2__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C10__8S21165C9[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C10__8S21165C9[3]),  3,5},
  {&(_ZTV8S21165C9[17]),  17,30},
  {&(_ZTV8S21165C9[22]),  22,30},
  {&(_ZTV8S21165C9[28]),  28,30},
  {&(_ZTV8S21165C9[11]),  11,30},
  {&(_tg__ZTV8S21165C4__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__A1__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C9[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C9[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
static VTBL_ENTRY alt_thunk_names323[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21165C10D0Ev,_ZThn16_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21165C10D1Ev,_ZThn16_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21165C10D0Ev,_ZThn44_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21165C10D1Ev,_ZThn44_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn4_N8S21165C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21165C4D0Ev,_ZThn16_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn4_N8S21165C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21165C4D1Ev,_ZThn16_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21165C9D0Ev,_ZThn44_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21165C9D1Ev,_ZThn44_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C9D0Ev,_ZThn72_N8S21165C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C9D1Ev,_ZThn72_N8S21165C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C9 = {  "S21165C9", // class name
  bases_S21165C9, 7,
  &(vtc_S21165C9[0]), // expected_vtbl_contents
  &(vtt_S21165C9[0]), // expected_vtt_contents
  ABISELECT(240,128), // object size
  NSPAIRA(_ZTI8S21165C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21165C9),30, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C9),16, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names323,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C8  : virtual S21165C4 , virtual S21165C9 , virtual S19676C2 {
  int s21165c8f0;
  virtual  ~S21165C8(); // _ZN8S21165C8D2Ev
  S21165C8(); // tgen
};
//SIG(-1 S21165C8) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} vd} VBC4{ BC3 VBC2 VBC5{ VBC3 BC2 Fp[10] Fi FL} BC6{ VBC5 BC2 vd Fi} vd Fi} VBC7{ m FC8{} Fi[3]} vd Fi}


 S21165C8 ::~S21165C8(){ note_dtor("S21165C8", this);}
S21165C8 ::S21165C8(){ note_ctor("S21165C8", this);} // tgen

static void Test_S21165C8()
{
  extern Class_Descriptor cd_S21165C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(17,38)];
    init_test(&cd_S21165C8, buf);
    S21165C8 *dp, &lv = *(dp=new (buf) S21165C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,148), "sizeof(S21165C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C8)");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(16,8), "S21165C8");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(16,8), "S21165C8");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(16,8), "S21165C8");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(16,8), "S21165C8");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*), 0, "S21165C8");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C9*), 0, "S21165C8");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C9*), ABISELECT(64,36), "S21165C8");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(128,76), "S21165C8");
    check_base_class_offset(lv, (S21165C2*)(S21165C9*), ABISELECT(128,76), "S21165C8");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*)(S21165C9*), ABISELECT(128,76), "S21165C8");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(112,64), "S21165C8");
    check_base_class_offset(lv, (S21165C10*)(S21165C9*), ABISELECT(112,64), "S21165C8");
    check_base_class_offset(lv, (S21165C9*), ABISELECT(64,36), "S21165C8");
    check_base_class_offset(lv, (S19676C2*), ABISELECT(232,132), "S21165C8");
    check_field_offset(lv, s21165c8f0, ABISELECT(8,4), "S21165C8.s21165c8f0");
    test_class_info(&lv, &cd_S21165C8);
    dp->~S21165C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C8(Test_S21165C8, "S21165C8", ABISELECT(256,148));

#else // __cplusplus

extern void _ZN8S21165C8C1Ev();
extern void _ZN8S21165C8D2Ev();
Name_Map name_map_S21165C8[] = {
  NSPAIR(_ZN8S21165C8C1Ev),
  NSPAIR(_ZN8S21165C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
extern Class_Descriptor cd_S21165C9;
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
static Base_Class bases_S21165C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(16,8), //bcp->offset
    10, //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_S21165C4,    0, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C4,    ABISELECT(128,76), //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
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(128,76), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(112,64), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C9,    ABISELECT(64,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    ABISELECT(232,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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C8[];
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void _ZN8S21165C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void _ZN8S21165C8D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C8D1Ev,_ZThn8_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C8D0Ev,_ZThn8_N8S21165C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C8D1Ev,_ZThn36_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C8D0Ev,_ZThn36_N8S21165C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn128_N8S21165C8D1Ev,_ZThn76_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn128_N8S21165C8D0Ev,_ZThn76_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C8[] = {
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(64,36),
  0,
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev),
  ABISELECT(-64,-36),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C8[];
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C8[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn8_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn8_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C8[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
};
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C8[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C8[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C8[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C8[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9__8S21165C8[] = {
  ABISELECT(64,36),
  ABISELECT(16,8),
  ABISELECT(64,36),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S21165C9__8S21165C8[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9__8S21165C8[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9__8S21165C8[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C8[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__A1__8S21165C8[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C8[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C8[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C8[] = {
  {&(_ZTV8S21165C8[8]),  8,35},
  {&(_ZTV8S21165C8[8]),  8,35},
  {&(_ZTV8S21165C8[13]),  13,35},
  {&(_ZTV8S21165C8[21]),  21,35},
  {&(_ZTV8S21165C8[33]),  33,35},
  {&(_ZTV8S21165C8[27]),  27,35},
  {&(_tg__ZTV8S21165C4__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C8[5]),  5,7},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C4__8S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S21165C9__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV9S21165C10__8S21165C9__8S21165C8[4]),  4,6},
  {&(_tg__ZTV8S21165C2__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__A1__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C8[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21165C8[];
extern  VTBL_ENTRY _ZTV8S21165C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C8[];
static VTBL_ENTRY alt_thunk_names324[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D0Ev,_ZThn8_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C4D1Ev,_ZThn8_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C8D0Ev,_ZThn36_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C8D1Ev,_ZThn36_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C8D0Ev,_ZThn8_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21165C8D1Ev,_ZThn8_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C8D0Ev,_ZThn76_N8S21165C8D0Ev),
  (VTBL_ENTRY)_ZN8S21165C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21165C8D1Ev,_ZThn76_N8S21165C8D1Ev),
  (VTBL_ENTRY)_ZN8S21165C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C8 = {  "S21165C8", // class name
  bases_S21165C8, 9,
  &(vtc_S21165C8[0]), // expected_vtbl_contents
  &(vtt_S21165C8[0]), // expected_vtt_contents
  ABISELECT(256,148), // object size
  NSPAIRA(_ZTI8S21165C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21165C8),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C8),22, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names324,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C5  : S19676C2 , S21165C8 {
  ::S21165C4 s21165c5f0;
  int s21165c5f1;
  ~S21165C5(); // tgen
  S21165C5(); // tgen
};
//SIG(-1 S21165C5) C1{ BC2{ m FC3{} Fi[3]} BC4{ VBC5{ VBC6{ vd m Fp Fi Fc FD} vd} VBC7{ BC6 VBC5 VBC8{ VBC6 BC5 Fp[10] Fi FL} BC9{ VBC8 BC5 vd Fi} vd Fi} VBC2 vd Fi} FC5 Fi}


S21165C5 ::~S21165C5(){ note_dtor("S21165C5", this);} // tgen
S21165C5 ::S21165C5(){ note_ctor("S21165C5", this);} // tgen

static void Test_S21165C5()
{
  extern Class_Descriptor cd_S21165C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,51)];
    init_test(&cd_S21165C5, buf);
    S21165C5 *dp, &lv = *(dp=new (buf) S21165C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,200), "sizeof(S21165C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C5)");
    /*is_ambiguous_... S21165C5::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*), ABISELECT(12,8), "S21165C5");
    /*is_ambiguous_... S21165C5::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(112,60), "S21165C5");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(112,60), "S21165C5");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(112,60), "S21165C5");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(112,60), "S21165C5");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C8*), 0, "S21165C5");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C9*), 0, "S21165C5");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C9*), ABISELECT(160,88), "S21165C5");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(224,128), "S21165C5");
    check_base_class_offset(lv, (S21165C2*)(S21165C9*), ABISELECT(224,128), "S21165C5");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*)(S21165C9*), ABISELECT(224,128), "S21165C5");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(208,116), "S21165C5");
    check_base_class_offset(lv, (S21165C10*)(S21165C9*), ABISELECT(208,116), "S21165C5");
    check_base_class_offset(lv, (S21165C9*)(S21165C8*), ABISELECT(160,88), "S21165C5");
    check_base_class_offset(lv, (S19676C2*)(S21165C8*), ABISELECT(328,184), "S21165C5");
    check_base_class_offset(lv, (S21165C8*), 0, "S21165C5");
    check_field_offset(lv, s21165c5f0, ABISELECT(32,24), "S21165C5.s21165c5f0");
    check_field_offset(lv, s21165c5f1, ABISELECT(96,56), "S21165C5.s21165c5f1");
    test_class_info(&lv, &cd_S21165C5);
    dp->~S21165C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C5(Test_S21165C5, "S21165C5", ABISELECT(352,200));

#else // __cplusplus

extern void _ZN8S21165C5C1Ev();
extern void _ZN8S21165C5D1Ev();
Name_Map name_map_S21165C5[] = {
  NSPAIR(_ZN8S21165C5C1Ev),
  NSPAIR(_ZN8S21165C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
extern Class_Descriptor cd_S21165C9;
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S21165C8;
extern VTBL_ENTRY _ZTI8S21165C8[];
extern  VTBL_ENTRY _ZTV8S21165C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C8[];
static Base_Class bases_S21165C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C2,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19676C9,    ABISELECT(112,60), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21165C4,    0, //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
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C4,    ABISELECT(224,128), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(224,128), //bcp->offset
    29, //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
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(208,116), //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(208,116), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C9,    ABISELECT(160,88), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    ABISELECT(328,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21165C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C5[];
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void _ZN8S21165C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void _ZN8S21165C5D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn60_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn60_N8S21165C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn160_N8S21165C5D1Ev,_ZThn88_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn160_N8S21165C5D0Ev,_ZThn88_N8S21165C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn128_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn128_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21165C5[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev),
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev),
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C5[];
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void _ZN8S21165C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void _ZN8S21165C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C8__8S21165C5[] = {
  ABISELECT(328,184),
  ABISELECT(224,128),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn60_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn60_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C8__8S21165C5[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S21165C8D1Ev,_ZThn88_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S21165C8D0Ev,_ZThn88_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C8__8S21165C5[] = {
  ABISELECT(-160,-88),
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn128_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn128_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C8__8S21165C5[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-68),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C8__8S21165C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev),
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C5[] = {
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn60_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn60_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__8S21165C5[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C5[] = {
  ABISELECT(64,40),
  ABISELECT(-48,-28),
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
};
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C5[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
extern void ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C5[] = {
  ABISELECT(-16,-12),
  ABISELECT(-112,-68),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C5[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9__8S21165C5[] = {
  ABISELECT(160,88),
  ABISELECT(112,60),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S21165C9__8S21165C5[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
extern void ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9__8S21165C5[] = {
  ABISELECT(-64,-40),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9__8S21165C5[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__A1__8S21165C5[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C5[] = {
  ABISELECT(112,68),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
static  VTT_ENTRY vtt_S21165C5[] = {
  {&(_ZTV8S21165C5[8]),  8,35},
  {&(_tg__ZTV8S21165C8__8S21165C5[8]),  8,10},
  {&(_tg__ZTV8S21165C8__8S21165C5[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S21165C8__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C8__8S21165C5[6]),  6,8},
  {&(_tg__ZTV8S21165C2__8S21165C8__8S21165C5[4]),  4,6},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C8__8S21165C5[4]),  4,6},
  {&(_ZTV8S21165C5[8]),  8,35},
  {&(_ZTV8S21165C5[13]),  13,35},
  {&(_ZTV8S21165C5[21]),  21,35},
  {&(_ZTV8S21165C5[33]),  33,35},
  {&(_ZTV8S21165C5[27]),  27,35},
  {&(_tg__ZTV8S21165C4__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C5[5]),  5,7},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C4__8S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S21165C9__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV9S21165C10__8S21165C9__8S21165C5[4]),  4,6},
  {&(_tg__ZTV8S21165C2__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__A1__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__A1__8S21165C5[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S21165C5[];
extern  VTBL_ENTRY _ZTV8S21165C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C5[];
static VTBL_ENTRY alt_thunk_names325[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D0Ev,_ZThn40_N8S21165C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21165C9D1Ev,_ZThn40_N8S21165C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D0Ev,_ZThn12_N9S21165C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21165C10D1Ev,_ZThn12_N9S21165C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn60_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn60_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C8D0Ev,_ZThn88_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C8D1Ev,_ZThn88_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn60_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn60_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn128_N8S21165C8D0Ev),
  (VTBL_ENTRY)_ZN8S21165C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn128_N8S21165C8D1Ev),
  (VTBL_ENTRY)_ZN8S21165C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C5D0Ev,_ZThn88_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21165C5D1Ev,_ZThn88_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn60_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn60_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn128_N8S21165C5D0Ev),
  (VTBL_ENTRY)_ZN8S21165C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn128_N8S21165C5D1Ev),
  (VTBL_ENTRY)_ZN8S21165C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C5 = {  "S21165C5", // class name
  bases_S21165C5, 11,
  &(vtc_S21165C5[0]), // expected_vtbl_contents
  &(vtt_S21165C5[0]), // expected_vtt_contents
  ABISELECT(352,200), // object size
  NSPAIRA(_ZTI8S21165C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21165C5),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C5),28, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names325,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21165C1  : virtual S21165C2 , S21165C5 {
  void *s21165c1f0;
  virtual  ~S21165C1(); // _ZN8S21165C1D2Ev
  S21165C1(); // tgen
};
//SIG(1 S21165C1) C1{ VBC2{ VBC3{ vd m Fp Fi Fc FD} BC4{ VBC3 vd} Fp[10] Fi FL} BC5{ BC6{ m FC7{} Fi[3]} BC8{ VBC4 VBC9{ BC3 VBC4 VBC2 BC10{ VBC2 BC4 vd Fi} vd Fi} VBC6 vd Fi} FC4 Fi} vd Fp}


 S21165C1 ::~S21165C1(){ note_dtor("S21165C1", this);}
S21165C1 ::S21165C1(){ note_ctor("S21165C1", this);} // tgen

static void Test_S21165C1()
{
  extern Class_Descriptor cd_S21165C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,52)];
    init_test(&cd_S21165C1, buf);
    S21165C1 *dp, &lv = *(dp=new (buf) S21165C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,204), "sizeof(S21165C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21165C1)");
    check_base_class_offset(lv, (S19676C9*)(S21165C2*), ABISELECT(224,120), "S21165C1");
    check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C2*), ABISELECT(224,120), "S21165C1");
    /*is_ambiguous_... S21165C1::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*), ABISELECT(224,120), "S21165C1");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(224,120), "S21165C1");
    check_base_class_offset(lv, (S21165C4*)(S21165C2*), ABISELECT(112,64), "S21165C1");
    check_base_class_offset(lv, (S21165C2*), ABISELECT(112,64), "S21165C1");
    check_base_class_offset(lv, (S21165C2*)(S21165C9*), ABISELECT(112,64), "S21165C1");
    check_base_class_offset(lv, (S21165C2*)(S21165C10*)(S21165C9*), ABISELECT(112,64), "S21165C1");
    /*is_ambiguous_... S21165C5::S19676C2 */ AMB_check_base_class_offset(lv, (S19676C2*)(S21165C5*), ABISELECT(12,8), "S21165C1");
    /*is_ambiguous_... S21165C8::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C8*)(S21165C5*), 0, "S21165C1");
    /*is_ambiguous_... S21165C9::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C9*), 0, "S21165C1");
    /*is_ambiguous_... S21165C9::S19676C9 */ AMB_check_base_class_offset(lv, (S19676C9*)(S21165C9*), ABISELECT(272,148), "S21165C1");
    /*is_ambiguous_... S21165C10::S21165C4 */ AMB_check_base_class_offset(lv, (S21165C4*)(S21165C10*)(S21165C9*), ABISELECT(320,176), "S21165C1");
    check_base_class_offset(lv, (S21165C10*)(S21165C9*), ABISELECT(320,176), "S21165C1");
    check_base_class_offset(lv, (S21165C9*)(S21165C8*)(S21165C5*), ABISELECT(272,148), "S21165C1");
    check_base_class_offset(lv, (S19676C2*)(S21165C8*)(S21165C5*), ABISELECT(336,188), "S21165C1");
    check_base_class_offset(lv, (S21165C8*)(S21165C5*), 0, "S21165C1");
    check_base_class_offset(lv, (S21165C5*), 0, "S21165C1");
    check_field_offset(lv, s21165c1f0, ABISELECT(104,60), "S21165C1.s21165c1f0");
    test_class_info(&lv, &cd_S21165C1);
    dp->~S21165C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21165C1(Test_S21165C1, "S21165C1", ABISELECT(352,204));

#else // __cplusplus

extern void _ZN8S21165C1C1Ev();
extern void _ZN8S21165C1D2Ev();
Name_Map name_map_S21165C1[] = {
  NSPAIR(_ZN8S21165C1C1Ev),
  NSPAIR(_ZN8S21165C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C2;
extern VTBL_ENTRY _ZTI8S21165C2[];
extern  VTBL_ENTRY _ZTV8S21165C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C2[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S19676C9;
extern VTBL_ENTRY _ZTI8S19676C9[];
extern  VTBL_ENTRY _ZTV8S19676C9[];
extern Class_Descriptor cd_S21165C4;
extern VTBL_ENTRY _ZTI8S21165C4[];
extern  VTBL_ENTRY _ZTV8S21165C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C4[];
extern Class_Descriptor cd_S21165C10;
extern VTBL_ENTRY _ZTI9S21165C10[];
extern  VTBL_ENTRY _ZTV9S21165C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21165C10[];
extern Class_Descriptor cd_S21165C9;
extern VTBL_ENTRY _ZTI8S21165C9[];
extern  VTBL_ENTRY _ZTV8S21165C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C9[];
extern Class_Descriptor cd_S19676C2;
extern VTBL_ENTRY _ZTI8S19676C2[];
extern Class_Descriptor cd_S21165C8;
extern VTBL_ENTRY _ZTI8S21165C8[];
extern  VTBL_ENTRY _ZTV8S21165C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C8[];
extern Class_Descriptor cd_S21165C5;
extern VTBL_ENTRY _ZTI8S21165C5[];
extern  VTBL_ENTRY _ZTV8S21165C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C5[];
static Base_Class bases_S21165C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19676C9,    ABISELECT(224,120), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S21165C4,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21165C2,    ABISELECT(112,64), //bcp->offset
    10, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19676C2,    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
    11, //immediately_derived
  0, 0},
  {&cd_S21165C4,    0, //bcp->offset
    -1, //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
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19676C9,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C4,    ABISELECT(320,176), //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S21165C10,    ABISELECT(320,176), //bcp->offset
    29, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21165C9,    ABISELECT(272,148), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19676C2,    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
    -1, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S21165C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21165C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21165C1[];
extern void ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev)();
extern void _ZN8S21165C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev)();
extern void _ZN8S21165C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C1D1Ev,_ZThn64_N8S21165C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C1D0Ev,_ZThn64_N8S21165C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C1D1Ev,_ZTv0_n12_N8S21165C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C1D1Ev,_ZThn120_N8S21165C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C1D0Ev,_ZTv0_n12_N8S21165C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C1D0Ev,_ZThn120_N8S21165C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C1D1Ev,_ZTv0_n24_N8S21165C1D1Ev)();
extern void ABISELECT(_ZThn272_N8S21165C1D1Ev,_ZThn148_N8S21165C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C1D0Ev,_ZTv0_n24_N8S21165C1D0Ev)();
extern void ABISELECT(_ZThn272_N8S21165C1D0Ev,_ZThn148_N8S21165C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n48_N8S21165C1D1Ev,_ZTvn28_n24_N8S21165C1D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C1D0Ev,_ZTvn28_n24_N8S21165C1D0Ev)();
static  VTBL_ENTRY vtc_S21165C1[] = {
  ABISELECT(336,188),
  ABISELECT(112,64),
  ABISELECT(272,148),
  0,
  0,
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev),
  ABISELECT(-112,-64),
  ABISELECT(112,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev),
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C1D1Ev,_ZTv0_n12_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C1D0Ev,_ZTv0_n12_N8S21165C1D0Ev),
  ABISELECT(-272,-148),
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C1D1Ev,_ZTv0_n24_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C1D0Ev,_ZTv0_n24_N8S21165C1D0Ev),
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S21165C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C1D1Ev,_ZTvn28_n24_N8S21165C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C1D0Ev,_ZTvn28_n24_N8S21165C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21165C1[];
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void _ZN8S21165C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void _ZN8S21165C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C5__8S21165C1[] = {
  ABISELECT(336,188),
  ABISELECT(112,64),
  ABISELECT(272,148),
  0,
  0,
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void _ZN8S21165C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void _ZN8S21165C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(336,188),
  ABISELECT(112,64),
  ABISELECT(272,148),
  0,
  0,
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn120_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn120_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S21165C8D1Ev,_ZThn148_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S21165C8D0Ev,_ZThn148_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-272,-148),
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn64_N8S21165C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn64_N8S21165C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(112,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C88S21165C5__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S21165C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D1Ev,_ZTvn28_n24_N8S21165C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C8D0Ev,_ZTvn28_n24_N8S21165C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn120_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn120_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C5__8S21165C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn272_N8S21165C5D1Ev,_ZThn148_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn272_N8S21165C5D0Ev,_ZThn148_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C5__8S21165C1[] = {
  ABISELECT(-272,-148),
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  ABISELECT(-272,-148),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn64_N8S21165C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn64_N8S21165C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C5__8S21165C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(112,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev),
};
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev)();
extern void ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C5__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI8S21165C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D1Ev,_ZTvn28_n24_N8S21165C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n48_N8S21165C5D0Ev,_ZTvn28_n24_N8S21165C5D0Ev),
};
extern void _ZN8S21165C2D1Ev();
extern void _ZN8S21165C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C1[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&_ZN8S21165C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C2D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C48S21165C2__8S21165C1[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C48S21165C2__8S21165C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev)();
extern void ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C2__8S21165C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S21165C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev),
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C4__A1__8S21165C1[] = {
  ABISELECT(224,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZThn224_N8S21165C4D1Ev,_ZThn120_N8S21165C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
extern void ABISELECT(_ZThn224_N8S21165C4D0Ev,_ZThn120_N8S21165C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C4__A1__8S21165C1[] = {
  ABISELECT(-224,-120),
  ABISELECT(-224,-120),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void _ZN8S21165C9D1Ev();
extern void _ZN8S21165C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C9__8S21165C1[] = {
  ABISELECT(-160,-84),
  ABISELECT(-48,-28),
  ABISELECT(-272,-148),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&_ZN8S21165C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C9D0Ev,
};
extern void _ZN9S21165C10D1Ev();
extern void _ZN9S21165C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21165C108S21165C9__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&_ZN9S21165C10D1Ev,
  (VTBL_ENTRY)&_ZN9S21165C10D0Ev,
};
extern void _ZN8S21165C4D1Ev();
extern void _ZN8S21165C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&_ZN8S21165C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21165C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S21165C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C1[] = {
  ABISELECT(208,112),
  ABISELECT(112,56),
  ABISELECT(208,112),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D1Ev,_ZTv0_n16_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S21165C10D0Ev,_ZTv0_n16_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C1[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S21165C10[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D1Ev,_ZTv0_n12_N9S21165C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S21165C10D0Ev,_ZTv0_n12_N9S21165C10D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C4__8S21165C9__8S21165C1[] = {
  ABISELECT(272,148),
  ABISELECT(224,120),
  ABISELECT(272,148),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19676C9__A1__8S21165C9__8S21165C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D1Ev,_ZTv0_n12_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21165C9D0Ev,_ZTv0_n12_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21165C2__8S21165C9__8S21165C1[] = {
  ABISELECT(160,84),
  ABISELECT(112,56),
  ABISELECT(160,84),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D1Ev,_ZTv0_n16_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S21165C9D0Ev,_ZTv0_n16_N8S21165C9D0Ev),
};
extern void ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev)();
extern void ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21165C10__8S21165C9__8S21165C1[] = {
  ABISELECT(-208,-112),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21165C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D1Ev,_ZThn28_N8S21165C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S21165C9D0Ev,_ZThn28_N8S21165C9D0Ev),
};
static  VTT_ENTRY vtt_S21165C1[] = {
  {&(_ZTV8S21165C1[8]),  8,35},
  {&(_tg__ZTV8S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S21165C88S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S21165C88S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S21165C88S21165C5__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C88S21165C5__8S21165C1[6]),  6,8},
  {&(_tg__ZTV8S21165C2__8S21165C88S21165C5__8S21165C1[4]),  4,6},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C88S21165C5__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S21165C5__8S21165C1[8]),  8,10},
  {&(_tg__ZTV8S19676C9__8S21165C5__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C5__8S21165C1[6]),  6,8},
  {&(_tg__ZTV8S21165C2__8S21165C5__8S21165C1[4]),  4,6},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C5__8S21165C1[4]),  4,6},
  {&(_ZTV8S21165C1[14]),  14,35},
  {&(_ZTV8S21165C1[19]),  19,35},
  {&(_ZTV8S21165C1[8]),  8,35},
  {&(_ZTV8S21165C1[27]),  27,35},
  {&(_ZTV8S21165C1[33]),  33,35},
  {&(_tg__ZTV8S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C48S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C48S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C4__A1__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C4__A1__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C9__8S21165C1[5]),  5,7},
  {&(_tg__ZTV9S21165C108S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S21165C49S21165C108S21165C9__A2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S19676C9__8S21165C49S21165C108S21165C9__A2__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C2__9S21165C108S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__9S21165C108S21165C9__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C4__8S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV8S19676C9__A1__8S21165C9__8S21165C1[3]),  3,5},
  {&(_tg__ZTV8S21165C2__8S21165C9__8S21165C1[4]),  4,6},
  {&(_tg__ZTV9S21165C10__8S21165C9__8S21165C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21165C1[];
extern  VTBL_ENTRY _ZTV8S21165C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21165C1[];
static VTBL_ENTRY alt_thunk_names326[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D0Ev,_ZTv0_n12_N8S21165C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D0Ev,_ZThn56_N8S21165C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C2D1Ev,_ZTv0_n12_N8S21165C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C2D1Ev,_ZThn56_N8S21165C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D0Ev,_ZTv0_n12_N8S21165C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C4D0Ev,_ZThn120_N8S21165C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D0Ev,_ZThn56_N8S21165C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C4D1Ev,_ZTv0_n12_N8S21165C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C4D1Ev,_ZThn120_N8S21165C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C4D1Ev,_ZThn56_N8S21165C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D0Ev,_ZTv0_n24_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C5D0Ev,_ZThn148_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C5D1Ev,_ZTv0_n24_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C5D1Ev,_ZThn148_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D0Ev,_ZTv0_n12_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D0Ev,_ZThn120_N8S21165C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C5D1Ev,_ZTv0_n12_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C5D1Ev,_ZThn120_N8S21165C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D0Ev,_ZTv0_n24_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C8D0Ev,_ZThn148_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C8D1Ev,_ZTv0_n24_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C8D1Ev,_ZThn148_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D0Ev,_ZTv0_n12_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D0Ev,_ZThn120_N8S21165C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C8D1Ev,_ZTv0_n12_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C8D1Ev,_ZThn120_N8S21165C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D0Ev,_ZTv0_n16_N8S21165C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D0Ev,_ZThn64_N8S21165C8D0Ev),
  (VTBL_ENTRY)_ZN8S21165C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C8D1Ev,_ZTv0_n16_N8S21165C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C8D1Ev,_ZThn64_N8S21165C8D1Ev),
  (VTBL_ENTRY)_ZN8S21165C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D0Ev,_ZTv0_n16_N8S21165C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D0Ev,_ZThn64_N8S21165C5D0Ev),
  (VTBL_ENTRY)_ZN8S21165C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C5D1Ev,_ZTv0_n16_N8S21165C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C5D1Ev,_ZThn64_N8S21165C5D1Ev),
  (VTBL_ENTRY)_ZN8S21165C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C1D0Ev,_ZTv0_n24_N8S21165C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C1D0Ev,_ZThn148_N8S21165C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21165C1D1Ev,_ZTv0_n24_N8S21165C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S21165C1D1Ev,_ZThn148_N8S21165C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C1D0Ev,_ZTv0_n12_N8S21165C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C1D0Ev,_ZThn120_N8S21165C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21165C1D1Ev,_ZTv0_n12_N8S21165C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21165C1D1Ev,_ZThn120_N8S21165C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C1D0Ev,_ZTv0_n16_N8S21165C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C1D0Ev,_ZThn64_N8S21165C1D0Ev),
  (VTBL_ENTRY)_ZN8S21165C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S21165C1D1Ev,_ZTv0_n16_N8S21165C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S21165C1D1Ev,_ZThn64_N8S21165C1D1Ev),
  (VTBL_ENTRY)_ZN8S21165C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21165C1 = {  "S21165C1", // class name
  bases_S21165C1, 12,
  &(vtc_S21165C1[0]), // expected_vtbl_contents
  &(vtt_S21165C1[0]), // expected_vtt_contents
  ABISELECT(352,204), // object size
  NSPAIRA(_ZTI8S21165C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21165C1),35, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21165C1),34, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names326,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10206C2  {
  char s10206c2f0;
  int s10206c2f1;
  void *s10206c2f2[3];
  char s10206c2f3[3];
  ::S4228C19_nt s10206c2f4;
  char s10206c2f5;
  void *s10206c2f6;
  int s10206c2f7[2];
  virtual  ~S10206C2(); // _ZN8S10206C2D1Ev
  virtual void  v8(); // _ZN8S10206C22v8Ev
  virtual void  v9(); // _ZN8S10206C22v9Ev
  virtual void  v10(); // _ZN8S10206C23v10Ev
  virtual void  v11(); // _ZN8S10206C23v11Ev
  virtual void  v12(); // _ZN8S10206C23v12Ev
  virtual void  v13(); // _ZN8S10206C23v13Ev
  virtual void  v14(); // _ZN8S10206C23v14Ev
  virtual void  v15(); // _ZN8S10206C23v15Ev
  virtual void  v16(); // _ZN8S10206C23v16Ev
  virtual void  v17(); // _ZN8S10206C23v17Ev
  virtual void  v18(); // _ZN8S10206C23v18Ev
  virtual void  v19(); // _ZN8S10206C23v19Ev
  virtual void  v20(); // _ZN8S10206C23v20Ev
  virtual void  v21(); // _ZN8S10206C23v21Ev
  S10206C2(); // tgen
};
//SIG(-1 S10206C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S10206C2 ::~S10206C2(){ note_dtor("S10206C2", this);}
void  S10206C2 ::v8(){vfunc_called(this, "_ZN8S10206C22v8Ev");}
void  S10206C2 ::v9(){vfunc_called(this, "_ZN8S10206C22v9Ev");}
void  S10206C2 ::v10(){vfunc_called(this, "_ZN8S10206C23v10Ev");}
void  S10206C2 ::v11(){vfunc_called(this, "_ZN8S10206C23v11Ev");}
void  S10206C2 ::v12(){vfunc_called(this, "_ZN8S10206C23v12Ev");}
void  S10206C2 ::v13(){vfunc_called(this, "_ZN8S10206C23v13Ev");}
void  S10206C2 ::v14(){vfunc_called(this, "_ZN8S10206C23v14Ev");}
void  S10206C2 ::v15(){vfunc_called(this, "_ZN8S10206C23v15Ev");}
void  S10206C2 ::v16(){vfunc_called(this, "_ZN8S10206C23v16Ev");}
void  S10206C2 ::v17(){vfunc_called(this, "_ZN8S10206C23v17Ev");}
void  S10206C2 ::v18(){vfunc_called(this, "_ZN8S10206C23v18Ev");}
void  S10206C2 ::v19(){vfunc_called(this, "_ZN8S10206C23v19Ev");}
void  S10206C2 ::v20(){vfunc_called(this, "_ZN8S10206C23v20Ev");}
void  S10206C2 ::v21(){vfunc_called(this, "_ZN8S10206C23v21Ev");}
S10206C2 ::S10206C2(){ note_ctor("S10206C2", this);} // tgen

static void Test_S10206C2()
{
  extern Class_Descriptor cd_S10206C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S10206C2, buf);
    S10206C2 *dp, &lv = *(dp=new (buf) S10206C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S10206C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10206C2)");
    check_field_offset(lv, s10206c2f0, ABISELECT(8,4), "S10206C2.s10206c2f0");
    check_field_offset(lv, s10206c2f1, ABISELECT(12,8), "S10206C2.s10206c2f1");
    check_field_offset(lv, s10206c2f2, ABISELECT(16,12), "S10206C2.s10206c2f2");
    check_field_offset(lv, s10206c2f3, ABISELECT(40,24), "S10206C2.s10206c2f3");
    check_field_offset(lv, s10206c2f4, ABISELECT(48,28), "S10206C2.s10206c2f4");
    check_field_offset(lv, s10206c2f5, ABISELECT(64,40), "S10206C2.s10206c2f5");
    check_field_offset(lv, s10206c2f6, ABISELECT(72,44), "S10206C2.s10206c2f6");
    check_field_offset(lv, s10206c2f7, ABISELECT(80,48), "S10206C2.s10206c2f7");
    test_class_info(&lv, &cd_S10206C2);
    dp->~S10206C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10206C2(Test_S10206C2, "S10206C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S10206C2C1Ev();
extern void _ZN8S10206C2D1Ev();
Name_Map name_map_S10206C2[] = {
  NSPAIR(_ZN8S10206C2C1Ev),
  NSPAIR(_ZN8S10206C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10206C2[];
extern void _ZN8S10206C2D1Ev();
extern void _ZN8S10206C2D0Ev();
extern void _ZN8S10206C22v8Ev();
extern void _ZN8S10206C22v9Ev();
extern void _ZN8S10206C23v10Ev();
extern void _ZN8S10206C23v11Ev();
extern void _ZN8S10206C23v12Ev();
extern void _ZN8S10206C23v13Ev();
extern void _ZN8S10206C23v14Ev();
extern void _ZN8S10206C23v15Ev();
extern void _ZN8S10206C23v16Ev();
extern void _ZN8S10206C23v17Ev();
extern void _ZN8S10206C23v18Ev();
extern void _ZN8S10206C23v19Ev();
extern void _ZN8S10206C23v20Ev();
extern void _ZN8S10206C23v21Ev();
static  VTBL_ENTRY vtc_S10206C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10206C2[0]),
  (VTBL_ENTRY)&_ZN8S10206C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10206C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v21Ev,
};
extern VTBL_ENTRY _ZTI8S10206C2[];
extern  VTBL_ENTRY _ZTV8S10206C2[];
Class_Descriptor cd_S10206C2 = {  "S10206C2", // class name
  0,0,//no base classes
  &(vtc_S10206C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S10206C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10206C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10206C1  : S10206C2 {
  virtual  ~S10206C1(); // _ZN8S10206C1D1Ev
  virtual void  v1(); // _ZN8S10206C12v1Ev
  virtual void  v2(); // _ZN8S10206C12v2Ev
  virtual void  v3(); // _ZN8S10206C12v3Ev
  virtual void  v4(); // _ZN8S10206C12v4Ev
  virtual void  v5(); // _ZN8S10206C12v5Ev
  virtual void  v6(); // _ZN8S10206C12v6Ev
  virtual void  v7(); // _ZN8S10206C12v7Ev
  S10206C1(); // tgen
};
//SIG(1 S10206C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 v2 v3 v4 v5 v6 v7}


 S10206C1 ::~S10206C1(){ note_dtor("S10206C1", this);}
void  S10206C1 ::v1(){vfunc_called(this, "_ZN8S10206C12v1Ev");}
void  S10206C1 ::v2(){vfunc_called(this, "_ZN8S10206C12v2Ev");}
void  S10206C1 ::v3(){vfunc_called(this, "_ZN8S10206C12v3Ev");}
void  S10206C1 ::v4(){vfunc_called(this, "_ZN8S10206C12v4Ev");}
void  S10206C1 ::v5(){vfunc_called(this, "_ZN8S10206C12v5Ev");}
void  S10206C1 ::v6(){vfunc_called(this, "_ZN8S10206C12v6Ev");}
void  S10206C1 ::v7(){vfunc_called(this, "_ZN8S10206C12v7Ev");}
S10206C1 ::S10206C1(){ note_ctor("S10206C1", this);} // tgen

static void Test_S10206C1()
{
  extern Class_Descriptor cd_S10206C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S10206C1, buf);
    S10206C1 *dp, &lv = *(dp=new (buf) S10206C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S10206C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10206C1)");
    check_base_class_offset(lv, (S10206C2*), 0, "S10206C1");
    test_class_info(&lv, &cd_S10206C1);
    dp->~S10206C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10206C1(Test_S10206C1, "S10206C1", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN8S10206C1C1Ev();
extern void _ZN8S10206C1D1Ev();
Name_Map name_map_S10206C1[] = {
  NSPAIR(_ZN8S10206C1C1Ev),
  NSPAIR(_ZN8S10206C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10206C2;
extern VTBL_ENTRY _ZTI8S10206C2[];
extern  VTBL_ENTRY _ZTV8S10206C2[];
static Base_Class bases_S10206C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10206C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10206C1[];
extern void _ZN8S10206C1D1Ev();
extern void _ZN8S10206C1D0Ev();
extern void _ZN8S10206C22v8Ev();
extern void _ZN8S10206C22v9Ev();
extern void _ZN8S10206C23v10Ev();
extern void _ZN8S10206C23v11Ev();
extern void _ZN8S10206C23v12Ev();
extern void _ZN8S10206C23v13Ev();
extern void _ZN8S10206C23v14Ev();
extern void _ZN8S10206C23v15Ev();
extern void _ZN8S10206C23v16Ev();
extern void _ZN8S10206C23v17Ev();
extern void _ZN8S10206C23v18Ev();
extern void _ZN8S10206C23v19Ev();
extern void _ZN8S10206C23v20Ev();
extern void _ZN8S10206C23v21Ev();
extern void _ZN8S10206C12v1Ev();
extern void _ZN8S10206C12v2Ev();
extern void _ZN8S10206C12v3Ev();
extern void _ZN8S10206C12v4Ev();
extern void _ZN8S10206C12v5Ev();
extern void _ZN8S10206C12v6Ev();
extern void _ZN8S10206C12v7Ev();
static  VTBL_ENTRY vtc_S10206C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10206C1[0]),
  (VTBL_ENTRY)&_ZN8S10206C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10206C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10206C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10206C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10206C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10206C1[];
extern  VTBL_ENTRY _ZTV8S10206C1[];
Class_Descriptor cd_S10206C1 = {  "S10206C1", // class name
  bases_S10206C1, 1,
  &(vtc_S10206C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI8S10206C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10206C1),25, //virtual function table var
  2, // 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  S2096C4  {
  void *s2096c4f0;
  char s2096c4f1;
  int s2096c4f2[4];
  void *s2096c4f3;
  virtual  ~S2096C4(); // _ZN7S2096C4D1Ev
  virtual void  v2(); // _ZN7S2096C42v2Ev
  virtual void  v3(); // _ZN7S2096C42v3Ev
  virtual void  v4(); // _ZN7S2096C42v4Ev
  virtual void  v5(); // _ZN7S2096C42v5Ev
  S2096C4(); // tgen
};
//SIG(-1 S2096C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2096C4 ::~S2096C4(){ note_dtor("S2096C4", this);}
void  S2096C4 ::v2(){vfunc_called(this, "_ZN7S2096C42v2Ev");}
void  S2096C4 ::v3(){vfunc_called(this, "_ZN7S2096C42v3Ev");}
void  S2096C4 ::v4(){vfunc_called(this, "_ZN7S2096C42v4Ev");}
void  S2096C4 ::v5(){vfunc_called(this, "_ZN7S2096C42v5Ev");}
S2096C4 ::S2096C4(){ note_ctor("S2096C4", this);} // tgen

static void Test_S2096C4()
{
  extern Class_Descriptor cd_S2096C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2096C4, buf);
    S2096C4 *dp, &lv = *(dp=new (buf) S2096C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2096C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C4)");
    check_field_offset(lv, s2096c4f0, ABISELECT(8,4), "S2096C4.s2096c4f0");
    check_field_offset(lv, s2096c4f1, ABISELECT(16,8), "S2096C4.s2096c4f1");
    check_field_offset(lv, s2096c4f2, ABISELECT(20,12), "S2096C4.s2096c4f2");
    check_field_offset(lv, s2096c4f3, ABISELECT(40,28), "S2096C4.s2096c4f3");
    test_class_info(&lv, &cd_S2096C4);
    dp->~S2096C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C4(Test_S2096C4, "S2096C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2096C4C1Ev();
extern void _ZN7S2096C4D1Ev();
Name_Map name_map_S2096C4[] = {
  NSPAIR(_ZN7S2096C4C1Ev),
  NSPAIR(_ZN7S2096C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2096C4[];
extern void _ZN7S2096C4D1Ev();
extern void _ZN7S2096C4D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
static  VTBL_ENTRY vtc_S2096C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C4[0]),
  (VTBL_ENTRY)&_ZN7S2096C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
Class_Descriptor cd_S2096C4 = {  "S2096C4", // class name
  0,0,//no base classes
  &(vtc_S2096C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2096C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2096C4),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  S2096C3  : S2096C4 {
  int s2096c3f0[3];
  virtual  ~S2096C3(); // _ZN7S2096C3D1Ev
  virtual void  v6(); // _ZN7S2096C32v6Ev
  virtual void  v7(); // _ZN7S2096C32v7Ev
  virtual void  v8(); // _ZN7S2096C32v8Ev
  S2096C3(); // tgen
};
//SIG(-1 S2096C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2096C3 ::~S2096C3(){ note_dtor("S2096C3", this);}
void  S2096C3 ::v6(){vfunc_called(this, "_ZN7S2096C32v6Ev");}
void  S2096C3 ::v7(){vfunc_called(this, "_ZN7S2096C32v7Ev");}
void  S2096C3 ::v8(){vfunc_called(this, "_ZN7S2096C32v8Ev");}
S2096C3 ::S2096C3(){ note_ctor("S2096C3", this);} // tgen

static void Test_S2096C3()
{
  extern Class_Descriptor cd_S2096C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2096C3, buf);
    S2096C3 *dp, &lv = *(dp=new (buf) S2096C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2096C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C3)");
    check_base_class_offset(lv, (S2096C4*), 0, "S2096C3");
    check_field_offset(lv, s2096c3f0, ABISELECT(48,32), "S2096C3.s2096c3f0");
    test_class_info(&lv, &cd_S2096C3);
    dp->~S2096C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C3(Test_S2096C3, "S2096C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2096C3C1Ev();
extern void _ZN7S2096C3D1Ev();
Name_Map name_map_S2096C3[] = {
  NSPAIR(_ZN7S2096C3C1Ev),
  NSPAIR(_ZN7S2096C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2096C4;
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
static Base_Class bases_S2096C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2096C3[];
extern void _ZN7S2096C3D1Ev();
extern void _ZN7S2096C3D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
extern void _ZN7S2096C32v6Ev();
extern void _ZN7S2096C32v7Ev();
extern void _ZN7S2096C32v8Ev();
static  VTBL_ENTRY vtc_S2096C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C3[0]),
  (VTBL_ENTRY)&_ZN7S2096C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2096C3[];
extern  VTBL_ENTRY _ZTV7S2096C3[];
Class_Descriptor cd_S2096C3 = {  "S2096C3", // class name
  bases_S2096C3, 1,
  &(vtc_S2096C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2096C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2096C3),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  S2096C2  : S2096C3 {
  int s2096c2f0[3];
  virtual  ~S2096C2(); // _ZN7S2096C2D1Ev
  virtual void  v9(); // _ZN7S2096C22v9Ev
  virtual void  v10(); // _ZN7S2096C23v10Ev
  virtual void  v11(); // _ZN7S2096C23v11Ev
  S2096C2(); // tgen
};
//SIG(-1 S2096C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2096C2 ::~S2096C2(){ note_dtor("S2096C2", this);}
void  S2096C2 ::v9(){vfunc_called(this, "_ZN7S2096C22v9Ev");}
void  S2096C2 ::v10(){vfunc_called(this, "_ZN7S2096C23v10Ev");}
void  S2096C2 ::v11(){vfunc_called(this, "_ZN7S2096C23v11Ev");}
S2096C2 ::S2096C2(){ note_ctor("S2096C2", this);} // tgen

static void Test_S2096C2()
{
  extern Class_Descriptor cd_S2096C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2096C2, buf);
    S2096C2 *dp, &lv = *(dp=new (buf) S2096C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2096C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C2)");
    check_base_class_offset(lv, (S2096C4*)(S2096C3*), 0, "S2096C2");
    check_base_class_offset(lv, (S2096C3*), 0, "S2096C2");
    check_field_offset(lv, s2096c2f0, ABISELECT(60,44), "S2096C2.s2096c2f0");
    test_class_info(&lv, &cd_S2096C2);
    dp->~S2096C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C2(Test_S2096C2, "S2096C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2096C2C1Ev();
extern void _ZN7S2096C2D1Ev();
Name_Map name_map_S2096C2[] = {
  NSPAIR(_ZN7S2096C2C1Ev),
  NSPAIR(_ZN7S2096C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2096C4;
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
extern Class_Descriptor cd_S2096C3;
extern VTBL_ENTRY _ZTI7S2096C3[];
extern  VTBL_ENTRY _ZTV7S2096C3[];
static Base_Class bases_S2096C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2096C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2096C2[];
extern void _ZN7S2096C2D1Ev();
extern void _ZN7S2096C2D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
extern void _ZN7S2096C32v6Ev();
extern void _ZN7S2096C32v7Ev();
extern void _ZN7S2096C32v8Ev();
extern void _ZN7S2096C22v9Ev();
extern void _ZN7S2096C23v10Ev();
extern void _ZN7S2096C23v11Ev();
static  VTBL_ENTRY vtc_S2096C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C2[0]),
  (VTBL_ENTRY)&_ZN7S2096C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2096C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2096C2[];
extern  VTBL_ENTRY _ZTV7S2096C2[];
Class_Descriptor cd_S2096C2 = {  "S2096C2", // class name
  bases_S2096C2, 2,
  &(vtc_S2096C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2096C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2096C2),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  S2096C1  : S2096C2 {
  ::S381C11_nt s2096c1f0;
  char s2096c1f1;
  int s2096c1f2;
  char s2096c1f3;
  int s2096c1f4;
  ::S10007C27_nt s2096c1f5;
  ::S381C11_nt s2096c1f6;
  virtual  ~S2096C1(); // _ZN7S2096C1D1Ev
  virtual void  v1(); // _ZN7S2096C12v1Ev
  S2096C1(); // tgen
};
//SIG(1 S2096C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 FC5{ m FL} Fc Fi Fc Fi FC6{ m FC7{ m FL[2]}} FC5}


 S2096C1 ::~S2096C1(){ note_dtor("S2096C1", this);}
void  S2096C1 ::v1(){vfunc_called(this, "_ZN7S2096C12v1Ev");}
S2096C1 ::S2096C1(){ note_ctor("S2096C1", this);} // tgen

static void Test_S2096C1()
{
  extern Class_Descriptor cd_S2096C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,27)];
    init_test(&cd_S2096C1, buf);
    S2096C1 *dp, &lv = *(dp=new (buf) S2096C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,104), "sizeof(S2096C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2096C1)");
    check_base_class_offset(lv, (S2096C4*)(S2096C3*)(S2096C2*), 0, "S2096C1");
    check_base_class_offset(lv, (S2096C3*)(S2096C2*), 0, "S2096C1");
    check_base_class_offset(lv, (S2096C2*), 0, "S2096C1");
    check_field_offset(lv, s2096c1f0, ABISELECT(72,56), "S2096C1.s2096c1f0");
    check_field_offset(lv, s2096c1f1, ABISELECT(80,64), "S2096C1.s2096c1f1");
    check_field_offset(lv, s2096c1f2, ABISELECT(84,68), "S2096C1.s2096c1f2");
    check_field_offset(lv, s2096c1f3, ABISELECT(88,72), "S2096C1.s2096c1f3");
    check_field_offset(lv, s2096c1f4, ABISELECT(92,76), "S2096C1.s2096c1f4");
    check_field_offset(lv, s2096c1f5, ABISELECT(96,80), "S2096C1.s2096c1f5");
    check_field_offset(lv, s2096c1f6, ABISELECT(112,96), "S2096C1.s2096c1f6");
    test_class_info(&lv, &cd_S2096C1);
    dp->~S2096C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2096C1(Test_S2096C1, "S2096C1", ABISELECT(120,104));

#else // __cplusplus

extern void _ZN7S2096C1C1Ev();
extern void _ZN7S2096C1D1Ev();
Name_Map name_map_S2096C1[] = {
  NSPAIR(_ZN7S2096C1C1Ev),
  NSPAIR(_ZN7S2096C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2096C4;
extern VTBL_ENTRY _ZTI7S2096C4[];
extern  VTBL_ENTRY _ZTV7S2096C4[];
extern Class_Descriptor cd_S2096C3;
extern VTBL_ENTRY _ZTI7S2096C3[];
extern  VTBL_ENTRY _ZTV7S2096C3[];
extern Class_Descriptor cd_S2096C2;
extern VTBL_ENTRY _ZTI7S2096C2[];
extern  VTBL_ENTRY _ZTV7S2096C2[];
static Base_Class bases_S2096C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2096C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2096C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2096C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2096C1[];
extern void _ZN7S2096C1D1Ev();
extern void _ZN7S2096C1D0Ev();
extern void _ZN7S2096C42v2Ev();
extern void _ZN7S2096C42v3Ev();
extern void _ZN7S2096C42v4Ev();
extern void _ZN7S2096C42v5Ev();
extern void _ZN7S2096C32v6Ev();
extern void _ZN7S2096C32v7Ev();
extern void _ZN7S2096C32v8Ev();
extern void _ZN7S2096C22v9Ev();
extern void _ZN7S2096C23v10Ev();
extern void _ZN7S2096C23v11Ev();
extern void _ZN7S2096C12v1Ev();
static  VTBL_ENTRY vtc_S2096C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2096C1[0]),
  (VTBL_ENTRY)&_ZN7S2096C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2096C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2096C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2096C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2096C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2096C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2096C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2096C1[];
extern  VTBL_ENTRY _ZTV7S2096C1[];
Class_Descriptor cd_S2096C1 = {  "S2096C1", // class name
  bases_S2096C1, 3,
  &(vtc_S2096C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,104), // object size
  NSPAIRA(_ZTI7S2096C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2096C1),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  S2095C4  {
  void *s2095c4f0;
  char s2095c4f1;
  int s2095c4f2[4];
  void *s2095c4f3;
  virtual  ~S2095C4(); // _ZN7S2095C4D1Ev
  virtual void  v2(); // _ZN7S2095C42v2Ev
  virtual void  v3(); // _ZN7S2095C42v3Ev
  virtual void  v4(); // _ZN7S2095C42v4Ev
  virtual void  v5(); // _ZN7S2095C42v5Ev
  S2095C4(); // tgen
};
//SIG(-1 S2095C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2095C4 ::~S2095C4(){ note_dtor("S2095C4", this);}
void  S2095C4 ::v2(){vfunc_called(this, "_ZN7S2095C42v2Ev");}
void  S2095C4 ::v3(){vfunc_called(this, "_ZN7S2095C42v3Ev");}
void  S2095C4 ::v4(){vfunc_called(this, "_ZN7S2095C42v4Ev");}
void  S2095C4 ::v5(){vfunc_called(this, "_ZN7S2095C42v5Ev");}
S2095C4 ::S2095C4(){ note_ctor("S2095C4", this);} // tgen

static void Test_S2095C4()
{
  extern Class_Descriptor cd_S2095C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2095C4, buf);
    S2095C4 *dp, &lv = *(dp=new (buf) S2095C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2095C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C4)");
    check_field_offset(lv, s2095c4f0, ABISELECT(8,4), "S2095C4.s2095c4f0");
    check_field_offset(lv, s2095c4f1, ABISELECT(16,8), "S2095C4.s2095c4f1");
    check_field_offset(lv, s2095c4f2, ABISELECT(20,12), "S2095C4.s2095c4f2");
    check_field_offset(lv, s2095c4f3, ABISELECT(40,28), "S2095C4.s2095c4f3");
    test_class_info(&lv, &cd_S2095C4);
    dp->~S2095C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C4(Test_S2095C4, "S2095C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2095C4C1Ev();
extern void _ZN7S2095C4D1Ev();
Name_Map name_map_S2095C4[] = {
  NSPAIR(_ZN7S2095C4C1Ev),
  NSPAIR(_ZN7S2095C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2095C4[];
extern void _ZN7S2095C4D1Ev();
extern void _ZN7S2095C4D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
static  VTBL_ENTRY vtc_S2095C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C4[0]),
  (VTBL_ENTRY)&_ZN7S2095C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
Class_Descriptor cd_S2095C4 = {  "S2095C4", // class name
  0,0,//no base classes
  &(vtc_S2095C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2095C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2095C4),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  S2095C3  : S2095C4 {
  int s2095c3f0[3];
  virtual  ~S2095C3(); // _ZN7S2095C3D1Ev
  virtual void  v6(); // _ZN7S2095C32v6Ev
  virtual void  v7(); // _ZN7S2095C32v7Ev
  virtual void  v8(); // _ZN7S2095C32v8Ev
  S2095C3(); // tgen
};
//SIG(-1 S2095C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2095C3 ::~S2095C3(){ note_dtor("S2095C3", this);}
void  S2095C3 ::v6(){vfunc_called(this, "_ZN7S2095C32v6Ev");}
void  S2095C3 ::v7(){vfunc_called(this, "_ZN7S2095C32v7Ev");}
void  S2095C3 ::v8(){vfunc_called(this, "_ZN7S2095C32v8Ev");}
S2095C3 ::S2095C3(){ note_ctor("S2095C3", this);} // tgen

static void Test_S2095C3()
{
  extern Class_Descriptor cd_S2095C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2095C3, buf);
    S2095C3 *dp, &lv = *(dp=new (buf) S2095C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2095C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C3)");
    check_base_class_offset(lv, (S2095C4*), 0, "S2095C3");
    check_field_offset(lv, s2095c3f0, ABISELECT(48,32), "S2095C3.s2095c3f0");
    test_class_info(&lv, &cd_S2095C3);
    dp->~S2095C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C3(Test_S2095C3, "S2095C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2095C3C1Ev();
extern void _ZN7S2095C3D1Ev();
Name_Map name_map_S2095C3[] = {
  NSPAIR(_ZN7S2095C3C1Ev),
  NSPAIR(_ZN7S2095C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2095C4;
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
static Base_Class bases_S2095C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2095C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2095C3[];
extern void _ZN7S2095C3D1Ev();
extern void _ZN7S2095C3D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
extern void _ZN7S2095C32v6Ev();
extern void _ZN7S2095C32v7Ev();
extern void _ZN7S2095C32v8Ev();
static  VTBL_ENTRY vtc_S2095C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C3[0]),
  (VTBL_ENTRY)&_ZN7S2095C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2095C3[];
extern  VTBL_ENTRY _ZTV7S2095C3[];
Class_Descriptor cd_S2095C3 = {  "S2095C3", // class name
  bases_S2095C3, 1,
  &(vtc_S2095C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2095C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2095C3),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  S2095C2  : S2095C3 {
  int s2095c2f0[3];
  virtual  ~S2095C2(); // _ZN7S2095C2D1Ev
  virtual void  v9(); // _ZN7S2095C22v9Ev
  virtual void  v10(); // _ZN7S2095C23v10Ev
  virtual void  v11(); // _ZN7S2095C23v11Ev
  S2095C2(); // tgen
};
//SIG(-1 S2095C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2095C2 ::~S2095C2(){ note_dtor("S2095C2", this);}
void  S2095C2 ::v9(){vfunc_called(this, "_ZN7S2095C22v9Ev");}
void  S2095C2 ::v10(){vfunc_called(this, "_ZN7S2095C23v10Ev");}
void  S2095C2 ::v11(){vfunc_called(this, "_ZN7S2095C23v11Ev");}
S2095C2 ::S2095C2(){ note_ctor("S2095C2", this);} // tgen

static void Test_S2095C2()
{
  extern Class_Descriptor cd_S2095C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2095C2, buf);
    S2095C2 *dp, &lv = *(dp=new (buf) S2095C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2095C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C2)");
    check_base_class_offset(lv, (S2095C4*)(S2095C3*), 0, "S2095C2");
    check_base_class_offset(lv, (S2095C3*), 0, "S2095C2");
    check_field_offset(lv, s2095c2f0, ABISELECT(60,44), "S2095C2.s2095c2f0");
    test_class_info(&lv, &cd_S2095C2);
    dp->~S2095C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C2(Test_S2095C2, "S2095C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2095C2C1Ev();
extern void _ZN7S2095C2D1Ev();
Name_Map name_map_S2095C2[] = {
  NSPAIR(_ZN7S2095C2C1Ev),
  NSPAIR(_ZN7S2095C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2095C4;
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
extern Class_Descriptor cd_S2095C3;
extern VTBL_ENTRY _ZTI7S2095C3[];
extern  VTBL_ENTRY _ZTV7S2095C3[];
static Base_Class bases_S2095C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2095C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2095C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2095C2[];
extern void _ZN7S2095C2D1Ev();
extern void _ZN7S2095C2D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
extern void _ZN7S2095C32v6Ev();
extern void _ZN7S2095C32v7Ev();
extern void _ZN7S2095C32v8Ev();
extern void _ZN7S2095C22v9Ev();
extern void _ZN7S2095C23v10Ev();
extern void _ZN7S2095C23v11Ev();
static  VTBL_ENTRY vtc_S2095C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C2[0]),
  (VTBL_ENTRY)&_ZN7S2095C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2095C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2095C2[];
extern  VTBL_ENTRY _ZTV7S2095C2[];
Class_Descriptor cd_S2095C2 = {  "S2095C2", // class name
  bases_S2095C2, 2,
  &(vtc_S2095C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2095C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2095C2),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  S2095C1  : S2095C2 {
  ::S380C11_nt s2095c1f0;
  char s2095c1f1;
  int s2095c1f2;
  char s2095c1f3;
  int s2095c1f4;
  ::S10007C27_nt s2095c1f5;
  ::S380C11_nt s2095c1f6;
  virtual  ~S2095C1(); // _ZN7S2095C1D1Ev
  virtual void  v1(); // _ZN7S2095C12v1Ev
  S2095C1(); // tgen
};
//SIG(1 S2095C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 FC5{ m Fl} Fc Fi Fc Fi FC6{ m FC7{ m FL[2]}} FC5}


 S2095C1 ::~S2095C1(){ note_dtor("S2095C1", this);}
void  S2095C1 ::v1(){vfunc_called(this, "_ZN7S2095C12v1Ev");}
S2095C1 ::S2095C1(){ note_ctor("S2095C1", this);} // tgen

static void Test_S2095C1()
{
  extern Class_Descriptor cd_S2095C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,25)];
    init_test(&cd_S2095C1, buf);
    S2095C1 *dp, &lv = *(dp=new (buf) S2095C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S2095C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2095C1)");
    check_base_class_offset(lv, (S2095C4*)(S2095C3*)(S2095C2*), 0, "S2095C1");
    check_base_class_offset(lv, (S2095C3*)(S2095C2*), 0, "S2095C1");
    check_base_class_offset(lv, (S2095C2*), 0, "S2095C1");
    check_field_offset(lv, s2095c1f0, ABISELECT(72,56), "S2095C1.s2095c1f0");
    check_field_offset(lv, s2095c1f1, ABISELECT(80,60), "S2095C1.s2095c1f1");
    check_field_offset(lv, s2095c1f2, ABISELECT(84,64), "S2095C1.s2095c1f2");
    check_field_offset(lv, s2095c1f3, ABISELECT(88,68), "S2095C1.s2095c1f3");
    check_field_offset(lv, s2095c1f4, ABISELECT(92,72), "S2095C1.s2095c1f4");
    check_field_offset(lv, s2095c1f5, ABISELECT(96,76), "S2095C1.s2095c1f5");
    check_field_offset(lv, s2095c1f6, ABISELECT(112,92), "S2095C1.s2095c1f6");
    test_class_info(&lv, &cd_S2095C1);
    dp->~S2095C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2095C1(Test_S2095C1, "S2095C1", ABISELECT(120,96));

#else // __cplusplus

extern void _ZN7S2095C1C1Ev();
extern void _ZN7S2095C1D1Ev();
Name_Map name_map_S2095C1[] = {
  NSPAIR(_ZN7S2095C1C1Ev),
  NSPAIR(_ZN7S2095C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2095C4;
extern VTBL_ENTRY _ZTI7S2095C4[];
extern  VTBL_ENTRY _ZTV7S2095C4[];
extern Class_Descriptor cd_S2095C3;
extern VTBL_ENTRY _ZTI7S2095C3[];
extern  VTBL_ENTRY _ZTV7S2095C3[];
extern Class_Descriptor cd_S2095C2;
extern VTBL_ENTRY _ZTI7S2095C2[];
extern  VTBL_ENTRY _ZTV7S2095C2[];
static Base_Class bases_S2095C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2095C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2095C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2095C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2095C1[];
extern void _ZN7S2095C1D1Ev();
extern void _ZN7S2095C1D0Ev();
extern void _ZN7S2095C42v2Ev();
extern void _ZN7S2095C42v3Ev();
extern void _ZN7S2095C42v4Ev();
extern void _ZN7S2095C42v5Ev();
extern void _ZN7S2095C32v6Ev();
extern void _ZN7S2095C32v7Ev();
extern void _ZN7S2095C32v8Ev();
extern void _ZN7S2095C22v9Ev();
extern void _ZN7S2095C23v10Ev();
extern void _ZN7S2095C23v11Ev();
extern void _ZN7S2095C12v1Ev();
static  VTBL_ENTRY vtc_S2095C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2095C1[0]),
  (VTBL_ENTRY)&_ZN7S2095C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2095C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2095C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2095C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2095C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2095C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2095C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2095C1[];
extern  VTBL_ENTRY _ZTV7S2095C1[];
Class_Descriptor cd_S2095C1 = {  "S2095C1", // class name
  bases_S2095C1, 3,
  &(vtc_S2095C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,96), // object size
  NSPAIRA(_ZTI7S2095C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2095C1),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  S2197C4  {
  void *s2197c4f0;
  char s2197c4f1;
  int s2197c4f2[4];
  void *s2197c4f3;
  virtual  ~S2197C4(); // _ZN7S2197C4D1Ev
  virtual void  v3(); // _ZN7S2197C42v3Ev
  virtual void  v4(); // _ZN7S2197C42v4Ev
  virtual void  v5(); // _ZN7S2197C42v5Ev
  virtual void  v6(); // _ZN7S2197C42v6Ev
  S2197C4(); // tgen
};
//SIG(-1 S2197C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2197C4 ::~S2197C4(){ note_dtor("S2197C4", this);}
void  S2197C4 ::v3(){vfunc_called(this, "_ZN7S2197C42v3Ev");}
void  S2197C4 ::v4(){vfunc_called(this, "_ZN7S2197C42v4Ev");}
void  S2197C4 ::v5(){vfunc_called(this, "_ZN7S2197C42v5Ev");}
void  S2197C4 ::v6(){vfunc_called(this, "_ZN7S2197C42v6Ev");}
S2197C4 ::S2197C4(){ note_ctor("S2197C4", this);} // tgen

static void Test_S2197C4()
{
  extern Class_Descriptor cd_S2197C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2197C4, buf);
    S2197C4 *dp, &lv = *(dp=new (buf) S2197C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2197C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C4)");
    check_field_offset(lv, s2197c4f0, ABISELECT(8,4), "S2197C4.s2197c4f0");
    check_field_offset(lv, s2197c4f1, ABISELECT(16,8), "S2197C4.s2197c4f1");
    check_field_offset(lv, s2197c4f2, ABISELECT(20,12), "S2197C4.s2197c4f2");
    check_field_offset(lv, s2197c4f3, ABISELECT(40,28), "S2197C4.s2197c4f3");
    test_class_info(&lv, &cd_S2197C4);
    dp->~S2197C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C4(Test_S2197C4, "S2197C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2197C4C1Ev();
extern void _ZN7S2197C4D1Ev();
Name_Map name_map_S2197C4[] = {
  NSPAIR(_ZN7S2197C4C1Ev),
  NSPAIR(_ZN7S2197C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2197C4[];
extern void _ZN7S2197C4D1Ev();
extern void _ZN7S2197C4D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
static  VTBL_ENTRY vtc_S2197C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C4[0]),
  (VTBL_ENTRY)&_ZN7S2197C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
Class_Descriptor cd_S2197C4 = {  "S2197C4", // class name
  0,0,//no base classes
  &(vtc_S2197C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2197C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2197C4),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  S2197C3  : S2197C4 {
  int s2197c3f0[3];
  virtual  ~S2197C3(); // _ZN7S2197C3D1Ev
  virtual void  v7(); // _ZN7S2197C32v7Ev
  virtual void  v8(); // _ZN7S2197C32v8Ev
  virtual void  v9(); // _ZN7S2197C32v9Ev
  S2197C3(); // tgen
};
//SIG(-1 S2197C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2197C3 ::~S2197C3(){ note_dtor("S2197C3", this);}
void  S2197C3 ::v7(){vfunc_called(this, "_ZN7S2197C32v7Ev");}
void  S2197C3 ::v8(){vfunc_called(this, "_ZN7S2197C32v8Ev");}
void  S2197C3 ::v9(){vfunc_called(this, "_ZN7S2197C32v9Ev");}
S2197C3 ::S2197C3(){ note_ctor("S2197C3", this);} // tgen

static void Test_S2197C3()
{
  extern Class_Descriptor cd_S2197C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2197C3, buf);
    S2197C3 *dp, &lv = *(dp=new (buf) S2197C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2197C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C3)");
    check_base_class_offset(lv, (S2197C4*), 0, "S2197C3");
    check_field_offset(lv, s2197c3f0, ABISELECT(48,32), "S2197C3.s2197c3f0");
    test_class_info(&lv, &cd_S2197C3);
    dp->~S2197C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C3(Test_S2197C3, "S2197C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2197C3C1Ev();
extern void _ZN7S2197C3D1Ev();
Name_Map name_map_S2197C3[] = {
  NSPAIR(_ZN7S2197C3C1Ev),
  NSPAIR(_ZN7S2197C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C4;
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
static Base_Class bases_S2197C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2197C3[];
extern void _ZN7S2197C3D1Ev();
extern void _ZN7S2197C3D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
extern void _ZN7S2197C32v7Ev();
extern void _ZN7S2197C32v8Ev();
extern void _ZN7S2197C32v9Ev();
static  VTBL_ENTRY vtc_S2197C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C3[0]),
  (VTBL_ENTRY)&_ZN7S2197C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S2197C3[];
extern  VTBL_ENTRY _ZTV7S2197C3[];
Class_Descriptor cd_S2197C3 = {  "S2197C3", // class name
  bases_S2197C3, 1,
  &(vtc_S2197C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2197C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C3),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  S2197C2  : S2197C3 {
  int s2197c2f0[3];
  virtual  ~S2197C2(); // _ZN7S2197C2D1Ev
  virtual void  v10(); // _ZN7S2197C23v10Ev
  virtual void  v11(); // _ZN7S2197C23v11Ev
  virtual void  v12(); // _ZN7S2197C23v12Ev
  S2197C2(); // tgen
};
//SIG(-1 S2197C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2197C2 ::~S2197C2(){ note_dtor("S2197C2", this);}
void  S2197C2 ::v10(){vfunc_called(this, "_ZN7S2197C23v10Ev");}
void  S2197C2 ::v11(){vfunc_called(this, "_ZN7S2197C23v11Ev");}
void  S2197C2 ::v12(){vfunc_called(this, "_ZN7S2197C23v12Ev");}
S2197C2 ::S2197C2(){ note_ctor("S2197C2", this);} // tgen

static void Test_S2197C2()
{
  extern Class_Descriptor cd_S2197C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2197C2, buf);
    S2197C2 *dp, &lv = *(dp=new (buf) S2197C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2197C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C2)");
    check_base_class_offset(lv, (S2197C4*)(S2197C3*), 0, "S2197C2");
    check_base_class_offset(lv, (S2197C3*), 0, "S2197C2");
    check_field_offset(lv, s2197c2f0, ABISELECT(60,44), "S2197C2.s2197c2f0");
    test_class_info(&lv, &cd_S2197C2);
    dp->~S2197C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C2(Test_S2197C2, "S2197C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2197C2C1Ev();
extern void _ZN7S2197C2D1Ev();
Name_Map name_map_S2197C2[] = {
  NSPAIR(_ZN7S2197C2C1Ev),
  NSPAIR(_ZN7S2197C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C4;
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
extern Class_Descriptor cd_S2197C3;
extern VTBL_ENTRY _ZTI7S2197C3[];
extern  VTBL_ENTRY _ZTV7S2197C3[];
static Base_Class bases_S2197C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2197C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2197C2[];
extern void _ZN7S2197C2D1Ev();
extern void _ZN7S2197C2D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
extern void _ZN7S2197C32v7Ev();
extern void _ZN7S2197C32v8Ev();
extern void _ZN7S2197C32v9Ev();
extern void _ZN7S2197C23v10Ev();
extern void _ZN7S2197C23v11Ev();
extern void _ZN7S2197C23v12Ev();
static  VTBL_ENTRY vtc_S2197C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C2[0]),
  (VTBL_ENTRY)&_ZN7S2197C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S2197C2[];
extern  VTBL_ENTRY _ZTV7S2197C2[];
Class_Descriptor cd_S2197C2 = {  "S2197C2", // class name
  bases_S2197C2, 2,
  &(vtc_S2197C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2197C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C2),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  S2197C6  {
  virtual  ~S2197C6(); // _ZN7S2197C6D1Ev
  virtual void  v14(); // _ZN7S2197C63v14Ev
  S2197C6(); // tgen
};
//SIG(-1 S2197C6) C1{ vd v1}


 S2197C6 ::~S2197C6(){ note_dtor("S2197C6", this);}
void  S2197C6 ::v14(){vfunc_called(this, "_ZN7S2197C63v14Ev");}
S2197C6 ::S2197C6(){ note_ctor("S2197C6", this);} // tgen

static void Test_S2197C6()
{
  extern Class_Descriptor cd_S2197C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S2197C6, buf);
    S2197C6 *dp, &lv = *(dp=new (buf) S2197C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S2197C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C6)");
    test_class_info(&lv, &cd_S2197C6);
    dp->~S2197C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C6(Test_S2197C6, "S2197C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S2197C6C1Ev();
extern void _ZN7S2197C6D1Ev();
Name_Map name_map_S2197C6[] = {
  NSPAIR(_ZN7S2197C6C1Ev),
  NSPAIR(_ZN7S2197C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2197C6[];
extern void _ZN7S2197C6D1Ev();
extern void _ZN7S2197C6D0Ev();
extern void _ZN7S2197C63v14Ev();
static  VTBL_ENTRY vtc_S2197C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C6[0]),
  (VTBL_ENTRY)&_ZN7S2197C6D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C6D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C63v14Ev,
};
extern VTBL_ENTRY _ZTI7S2197C6[];
extern  VTBL_ENTRY _ZTV7S2197C6[];
Class_Descriptor cd_S2197C6 = {  "S2197C6", // class name
  0,0,//no base classes
  &(vtc_S2197C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2197C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2197C6),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  S2197C5  : S2197C6 {
  int s2197c5f0;
  virtual  ~S2197C5(); // _ZN7S2197C5D1Ev
  virtual void  v13(); // _ZN7S2197C53v13Ev
  S2197C5(); // tgen
};
//SIG(-1 S2197C5) C1{ BC2{ vd v2} vd v1 Fi}


 S2197C5 ::~S2197C5(){ note_dtor("S2197C5", this);}
void  S2197C5 ::v13(){vfunc_called(this, "_ZN7S2197C53v13Ev");}
S2197C5 ::S2197C5(){ note_ctor("S2197C5", this);} // tgen

static void Test_S2197C5()
{
  extern Class_Descriptor cd_S2197C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2197C5, buf);
    S2197C5 *dp, &lv = *(dp=new (buf) S2197C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2197C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C5)");
    check_base_class_offset(lv, (S2197C6*), 0, "S2197C5");
    check_field_offset(lv, s2197c5f0, ABISELECT(8,4), "S2197C5.s2197c5f0");
    test_class_info(&lv, &cd_S2197C5);
    dp->~S2197C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C5(Test_S2197C5, "S2197C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2197C5C1Ev();
extern void _ZN7S2197C5D1Ev();
Name_Map name_map_S2197C5[] = {
  NSPAIR(_ZN7S2197C5C1Ev),
  NSPAIR(_ZN7S2197C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C6;
extern VTBL_ENTRY _ZTI7S2197C6[];
extern  VTBL_ENTRY _ZTV7S2197C6[];
static Base_Class bases_S2197C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2197C5[];
extern void _ZN7S2197C5D1Ev();
extern void _ZN7S2197C5D0Ev();
extern void _ZN7S2197C63v14Ev();
extern void _ZN7S2197C53v13Ev();
static  VTBL_ENTRY vtc_S2197C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C5[0]),
  (VTBL_ENTRY)&_ZN7S2197C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C5D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C63v14Ev,
  (VTBL_ENTRY)&_ZN7S2197C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S2197C5[];
extern  VTBL_ENTRY _ZTV7S2197C5[];
Class_Descriptor cd_S2197C5 = {  "S2197C5", // class name
  bases_S2197C5, 1,
  &(vtc_S2197C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2197C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C5),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  S2197C1  : S2197C2 {
  int s2197c1f0[3];
  char s2197c1f1[2];
  ::S2197C5 s2197c1f2;
  virtual  ~S2197C1(); // _ZN7S2197C1D1Ev
  virtual void  v1(); // _ZN7S2197C12v1Ev
  virtual void  v2(); // _ZN7S2197C12v2Ev
  S2197C1(); // tgen
};
//SIG(1 S2197C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 Fp Fc Fi[4] Fp} vd v7 v8 v9 Fi[3]} vd v10 v11 v12 Fi[3]} vd v1 v2 Fi[3] Fc[2] FC5{ BC6{ vd v14} vd v13 Fi}}


 S2197C1 ::~S2197C1(){ note_dtor("S2197C1", this);}
void  S2197C1 ::v1(){vfunc_called(this, "_ZN7S2197C12v1Ev");}
void  S2197C1 ::v2(){vfunc_called(this, "_ZN7S2197C12v2Ev");}
S2197C1 ::S2197C1(){ note_ctor("S2197C1", this);} // tgen

static void Test_S2197C1()
{
  extern Class_Descriptor cd_S2197C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,21)];
    init_test(&cd_S2197C1, buf);
    S2197C1 *dp, &lv = *(dp=new (buf) S2197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S2197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2197C1)");
    check_base_class_offset(lv, (S2197C4*)(S2197C3*)(S2197C2*), 0, "S2197C1");
    check_base_class_offset(lv, (S2197C3*)(S2197C2*), 0, "S2197C1");
    check_base_class_offset(lv, (S2197C2*), 0, "S2197C1");
    check_field_offset(lv, s2197c1f0, ABISELECT(72,56), "S2197C1.s2197c1f0");
    check_field_offset(lv, s2197c1f1, ABISELECT(84,68), "S2197C1.s2197c1f1");
    check_field_offset(lv, s2197c1f2, ABISELECT(88,72), "S2197C1.s2197c1f2");
    test_class_info(&lv, &cd_S2197C1);
    dp->~S2197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2197C1(Test_S2197C1, "S2197C1", ABISELECT(104,80));

#else // __cplusplus

extern void _ZN7S2197C1C1Ev();
extern void _ZN7S2197C1D1Ev();
Name_Map name_map_S2197C1[] = {
  NSPAIR(_ZN7S2197C1C1Ev),
  NSPAIR(_ZN7S2197C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2197C4;
extern VTBL_ENTRY _ZTI7S2197C4[];
extern  VTBL_ENTRY _ZTV7S2197C4[];
extern Class_Descriptor cd_S2197C3;
extern VTBL_ENTRY _ZTI7S2197C3[];
extern  VTBL_ENTRY _ZTV7S2197C3[];
extern Class_Descriptor cd_S2197C2;
extern VTBL_ENTRY _ZTI7S2197C2[];
extern  VTBL_ENTRY _ZTV7S2197C2[];
static Base_Class bases_S2197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2197C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2197C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2197C1[];
extern void _ZN7S2197C1D1Ev();
extern void _ZN7S2197C1D0Ev();
extern void _ZN7S2197C42v3Ev();
extern void _ZN7S2197C42v4Ev();
extern void _ZN7S2197C42v5Ev();
extern void _ZN7S2197C42v6Ev();
extern void _ZN7S2197C32v7Ev();
extern void _ZN7S2197C32v8Ev();
extern void _ZN7S2197C32v9Ev();
extern void _ZN7S2197C23v10Ev();
extern void _ZN7S2197C23v11Ev();
extern void _ZN7S2197C23v12Ev();
extern void _ZN7S2197C12v1Ev();
extern void _ZN7S2197C12v2Ev();
static  VTBL_ENTRY vtc_S2197C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2197C1[0]),
  (VTBL_ENTRY)&_ZN7S2197C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2197C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2197C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2197C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2197C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2197C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2197C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2197C1[];
extern  VTBL_ENTRY _ZTV7S2197C1[];
Class_Descriptor cd_S2197C1 = {  "S2197C1", // class name
  bases_S2197C1, 3,
  &(vtc_S2197C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,80), // object size
  NSPAIRA(_ZTI7S2197C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2197C1),16, //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  S2198C4  {
  void *s2198c4f0;
  char s2198c4f1;
  int s2198c4f2[4];
  void *s2198c4f3;
  virtual  ~S2198C4(); // _ZN7S2198C4D1Ev
  virtual void  v3(); // _ZN7S2198C42v3Ev
  virtual void  v4(); // _ZN7S2198C42v4Ev
  virtual void  v5(); // _ZN7S2198C42v5Ev
  virtual void  v6(); // _ZN7S2198C42v6Ev
  S2198C4(); // tgen
};
//SIG(-1 S2198C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2198C4 ::~S2198C4(){ note_dtor("S2198C4", this);}
void  S2198C4 ::v3(){vfunc_called(this, "_ZN7S2198C42v3Ev");}
void  S2198C4 ::v4(){vfunc_called(this, "_ZN7S2198C42v4Ev");}
void  S2198C4 ::v5(){vfunc_called(this, "_ZN7S2198C42v5Ev");}
void  S2198C4 ::v6(){vfunc_called(this, "_ZN7S2198C42v6Ev");}
S2198C4 ::S2198C4(){ note_ctor("S2198C4", this);} // tgen

static void Test_S2198C4()
{
  extern Class_Descriptor cd_S2198C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2198C4, buf);
    S2198C4 *dp, &lv = *(dp=new (buf) S2198C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2198C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C4)");
    check_field_offset(lv, s2198c4f0, ABISELECT(8,4), "S2198C4.s2198c4f0");
    check_field_offset(lv, s2198c4f1, ABISELECT(16,8), "S2198C4.s2198c4f1");
    check_field_offset(lv, s2198c4f2, ABISELECT(20,12), "S2198C4.s2198c4f2");
    check_field_offset(lv, s2198c4f3, ABISELECT(40,28), "S2198C4.s2198c4f3");
    test_class_info(&lv, &cd_S2198C4);
    dp->~S2198C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C4(Test_S2198C4, "S2198C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2198C4C1Ev();
extern void _ZN7S2198C4D1Ev();
Name_Map name_map_S2198C4[] = {
  NSPAIR(_ZN7S2198C4C1Ev),
  NSPAIR(_ZN7S2198C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2198C4[];
extern void _ZN7S2198C4D1Ev();
extern void _ZN7S2198C4D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
static  VTBL_ENTRY vtc_S2198C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C4[0]),
  (VTBL_ENTRY)&_ZN7S2198C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
Class_Descriptor cd_S2198C4 = {  "S2198C4", // class name
  0,0,//no base classes
  &(vtc_S2198C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2198C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2198C4),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  S2198C3  : S2198C4 {
  int s2198c3f0[3];
  virtual  ~S2198C3(); // _ZN7S2198C3D1Ev
  virtual void  v7(); // _ZN7S2198C32v7Ev
  virtual void  v8(); // _ZN7S2198C32v8Ev
  virtual void  v9(); // _ZN7S2198C32v9Ev
  S2198C3(); // tgen
};
//SIG(-1 S2198C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2198C3 ::~S2198C3(){ note_dtor("S2198C3", this);}
void  S2198C3 ::v7(){vfunc_called(this, "_ZN7S2198C32v7Ev");}
void  S2198C3 ::v8(){vfunc_called(this, "_ZN7S2198C32v8Ev");}
void  S2198C3 ::v9(){vfunc_called(this, "_ZN7S2198C32v9Ev");}
S2198C3 ::S2198C3(){ note_ctor("S2198C3", this);} // tgen

static void Test_S2198C3()
{
  extern Class_Descriptor cd_S2198C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2198C3, buf);
    S2198C3 *dp, &lv = *(dp=new (buf) S2198C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2198C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C3)");
    check_base_class_offset(lv, (S2198C4*), 0, "S2198C3");
    check_field_offset(lv, s2198c3f0, ABISELECT(48,32), "S2198C3.s2198c3f0");
    test_class_info(&lv, &cd_S2198C3);
    dp->~S2198C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C3(Test_S2198C3, "S2198C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2198C3C1Ev();
extern void _ZN7S2198C3D1Ev();
Name_Map name_map_S2198C3[] = {
  NSPAIR(_ZN7S2198C3C1Ev),
  NSPAIR(_ZN7S2198C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2198C4;
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
static Base_Class bases_S2198C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2198C3[];
extern void _ZN7S2198C3D1Ev();
extern void _ZN7S2198C3D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
extern void _ZN7S2198C32v7Ev();
extern void _ZN7S2198C32v8Ev();
extern void _ZN7S2198C32v9Ev();
static  VTBL_ENTRY vtc_S2198C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C3[0]),
  (VTBL_ENTRY)&_ZN7S2198C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S2198C3[];
extern  VTBL_ENTRY _ZTV7S2198C3[];
Class_Descriptor cd_S2198C3 = {  "S2198C3", // class name
  bases_S2198C3, 1,
  &(vtc_S2198C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2198C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2198C3),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  S2198C2  : S2198C3 {
  int s2198c2f0[3];
  virtual  ~S2198C2(); // _ZN7S2198C2D1Ev
  virtual void  v10(); // _ZN7S2198C23v10Ev
  virtual void  v11(); // _ZN7S2198C23v11Ev
  virtual void  v12(); // _ZN7S2198C23v12Ev
  S2198C2(); // tgen
};
//SIG(-1 S2198C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2198C2 ::~S2198C2(){ note_dtor("S2198C2", this);}
void  S2198C2 ::v10(){vfunc_called(this, "_ZN7S2198C23v10Ev");}
void  S2198C2 ::v11(){vfunc_called(this, "_ZN7S2198C23v11Ev");}
void  S2198C2 ::v12(){vfunc_called(this, "_ZN7S2198C23v12Ev");}
S2198C2 ::S2198C2(){ note_ctor("S2198C2", this);} // tgen

static void Test_S2198C2()
{
  extern Class_Descriptor cd_S2198C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2198C2, buf);
    S2198C2 *dp, &lv = *(dp=new (buf) S2198C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2198C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C2)");
    check_base_class_offset(lv, (S2198C4*)(S2198C3*), 0, "S2198C2");
    check_base_class_offset(lv, (S2198C3*), 0, "S2198C2");
    check_field_offset(lv, s2198c2f0, ABISELECT(60,44), "S2198C2.s2198c2f0");
    test_class_info(&lv, &cd_S2198C2);
    dp->~S2198C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C2(Test_S2198C2, "S2198C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2198C2C1Ev();
extern void _ZN7S2198C2D1Ev();
Name_Map name_map_S2198C2[] = {
  NSPAIR(_ZN7S2198C2C1Ev),
  NSPAIR(_ZN7S2198C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2198C4;
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
extern Class_Descriptor cd_S2198C3;
extern VTBL_ENTRY _ZTI7S2198C3[];
extern  VTBL_ENTRY _ZTV7S2198C3[];
static Base_Class bases_S2198C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2198C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2198C2[];
extern void _ZN7S2198C2D1Ev();
extern void _ZN7S2198C2D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
extern void _ZN7S2198C32v7Ev();
extern void _ZN7S2198C32v8Ev();
extern void _ZN7S2198C32v9Ev();
extern void _ZN7S2198C23v10Ev();
extern void _ZN7S2198C23v11Ev();
extern void _ZN7S2198C23v12Ev();
static  VTBL_ENTRY vtc_S2198C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C2[0]),
  (VTBL_ENTRY)&_ZN7S2198C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S2198C2[];
extern  VTBL_ENTRY _ZTV7S2198C2[];
Class_Descriptor cd_S2198C2 = {  "S2198C2", // class name
  bases_S2198C2, 2,
  &(vtc_S2198C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2198C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2198C2),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  S2198C1  : S2198C2 {
  int s2198c1f0[7];
  char s2198c1f1;
  ::S2197C5 s2198c1f2;
  virtual  ~S2198C1(); // _ZN7S2198C1D1Ev
  virtual void  v1(); // _ZN7S2198C12v1Ev
  virtual void  v2(); // _ZN7S2198C12v2Ev
  S2198C1(); // tgen
};
//SIG(1 S2198C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 Fp Fc Fi[4] Fp} vd v7 v8 v9 Fi[3]} vd v10 v11 v12 Fi[3]} vd v1 v2 Fi[7] Fc FC5{ BC6{ vd v14} vd v13 Fi}}


 S2198C1 ::~S2198C1(){ note_dtor("S2198C1", this);}
void  S2198C1 ::v1(){vfunc_called(this, "_ZN7S2198C12v1Ev");}
void  S2198C1 ::v2(){vfunc_called(this, "_ZN7S2198C12v2Ev");}
S2198C1 ::S2198C1(){ note_ctor("S2198C1", this);} // tgen

static void Test_S2198C1()
{
  extern Class_Descriptor cd_S2198C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,25)];
    init_test(&cd_S2198C1, buf);
    S2198C1 *dp, &lv = *(dp=new (buf) S2198C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,96), "sizeof(S2198C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2198C1)");
    check_base_class_offset(lv, (S2198C4*)(S2198C3*)(S2198C2*), 0, "S2198C1");
    check_base_class_offset(lv, (S2198C3*)(S2198C2*), 0, "S2198C1");
    check_base_class_offset(lv, (S2198C2*), 0, "S2198C1");
    check_field_offset(lv, s2198c1f0, ABISELECT(72,56), "S2198C1.s2198c1f0");
    check_field_offset(lv, s2198c1f1, ABISELECT(100,84), "S2198C1.s2198c1f1");
    check_field_offset(lv, s2198c1f2, ABISELECT(104,88), "S2198C1.s2198c1f2");
    test_class_info(&lv, &cd_S2198C1);
    dp->~S2198C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2198C1(Test_S2198C1, "S2198C1", ABISELECT(120,96));

#else // __cplusplus

extern void _ZN7S2198C1C1Ev();
extern void _ZN7S2198C1D1Ev();
Name_Map name_map_S2198C1[] = {
  NSPAIR(_ZN7S2198C1C1Ev),
  NSPAIR(_ZN7S2198C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2198C4;
extern VTBL_ENTRY _ZTI7S2198C4[];
extern  VTBL_ENTRY _ZTV7S2198C4[];
extern Class_Descriptor cd_S2198C3;
extern VTBL_ENTRY _ZTI7S2198C3[];
extern  VTBL_ENTRY _ZTV7S2198C3[];
extern Class_Descriptor cd_S2198C2;
extern VTBL_ENTRY _ZTI7S2198C2[];
extern  VTBL_ENTRY _ZTV7S2198C2[];
static Base_Class bases_S2198C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2198C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2198C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2198C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2198C1[];
extern void _ZN7S2198C1D1Ev();
extern void _ZN7S2198C1D0Ev();
extern void _ZN7S2198C42v3Ev();
extern void _ZN7S2198C42v4Ev();
extern void _ZN7S2198C42v5Ev();
extern void _ZN7S2198C42v6Ev();
extern void _ZN7S2198C32v7Ev();
extern void _ZN7S2198C32v8Ev();
extern void _ZN7S2198C32v9Ev();
extern void _ZN7S2198C23v10Ev();
extern void _ZN7S2198C23v11Ev();
extern void _ZN7S2198C23v12Ev();
extern void _ZN7S2198C12v1Ev();
extern void _ZN7S2198C12v2Ev();
static  VTBL_ENTRY vtc_S2198C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2198C1[0]),
  (VTBL_ENTRY)&_ZN7S2198C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2198C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2198C42v6Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2198C32v9Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2198C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2198C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2198C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S2198C1[];
extern  VTBL_ENTRY _ZTV7S2198C1[];
Class_Descriptor cd_S2198C1 = {  "S2198C1", // class name
  bases_S2198C1, 3,
  &(vtc_S2198C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,96), // object size
  NSPAIRA(_ZTI7S2198C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2198C1),16, //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  S9477C2  {
  char s9477c2f0;
  int s9477c2f1;
  void *s9477c2f2[3];
  char s9477c2f3[3];
  ::S4228C19_nt s9477c2f4;
  char s9477c2f5;
  void *s9477c2f6;
  int s9477c2f7[2];
  virtual  ~S9477C2(); // _ZN7S9477C2D1Ev
  virtual void  v3(); // _ZN7S9477C22v3Ev
  virtual void  v4(); // _ZN7S9477C22v4Ev
  virtual void  v5(); // _ZN7S9477C22v5Ev
  virtual void  v6(); // _ZN7S9477C22v6Ev
  virtual void  v7(); // _ZN7S9477C22v7Ev
  virtual void  v8(); // _ZN7S9477C22v8Ev
  virtual void  v9(); // _ZN7S9477C22v9Ev
  virtual void  v10(); // _ZN7S9477C23v10Ev
  virtual void  v11(); // _ZN7S9477C23v11Ev
  virtual void  v12(); // _ZN7S9477C23v12Ev
  virtual void  v13(); // _ZN7S9477C23v13Ev
  virtual void  v14(); // _ZN7S9477C23v14Ev
  virtual void  v15(); // _ZN7S9477C23v15Ev
  virtual void  v16(); // _ZN7S9477C23v16Ev
  S9477C2(); // tgen
};
//SIG(-1 S9477C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fc Fi Fp[3] Fc[3] FC2{ m Fp Fi FC3{ m}} Fc Fp Fi[2]}


 S9477C2 ::~S9477C2(){ note_dtor("S9477C2", this);}
void  S9477C2 ::v3(){vfunc_called(this, "_ZN7S9477C22v3Ev");}
void  S9477C2 ::v4(){vfunc_called(this, "_ZN7S9477C22v4Ev");}
void  S9477C2 ::v5(){vfunc_called(this, "_ZN7S9477C22v5Ev");}
void  S9477C2 ::v6(){vfunc_called(this, "_ZN7S9477C22v6Ev");}
void  S9477C2 ::v7(){vfunc_called(this, "_ZN7S9477C22v7Ev");}
void  S9477C2 ::v8(){vfunc_called(this, "_ZN7S9477C22v8Ev");}
void  S9477C2 ::v9(){vfunc_called(this, "_ZN7S9477C22v9Ev");}
void  S9477C2 ::v10(){vfunc_called(this, "_ZN7S9477C23v10Ev");}
void  S9477C2 ::v11(){vfunc_called(this, "_ZN7S9477C23v11Ev");}
void  S9477C2 ::v12(){vfunc_called(this, "_ZN7S9477C23v12Ev");}
void  S9477C2 ::v13(){vfunc_called(this, "_ZN7S9477C23v13Ev");}
void  S9477C2 ::v14(){vfunc_called(this, "_ZN7S9477C23v14Ev");}
void  S9477C2 ::v15(){vfunc_called(this, "_ZN7S9477C23v15Ev");}
void  S9477C2 ::v16(){vfunc_called(this, "_ZN7S9477C23v16Ev");}
S9477C2 ::S9477C2(){ note_ctor("S9477C2", this);} // tgen

static void Test_S9477C2()
{
  extern Class_Descriptor cd_S9477C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S9477C2, buf);
    S9477C2 *dp, &lv = *(dp=new (buf) S9477C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S9477C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9477C2)");
    check_field_offset(lv, s9477c2f0, ABISELECT(8,4), "S9477C2.s9477c2f0");
    check_field_offset(lv, s9477c2f1, ABISELECT(12,8), "S9477C2.s9477c2f1");
    check_field_offset(lv, s9477c2f2, ABISELECT(16,12), "S9477C2.s9477c2f2");
    check_field_offset(lv, s9477c2f3, ABISELECT(40,24), "S9477C2.s9477c2f3");
    check_field_offset(lv, s9477c2f4, ABISELECT(48,28), "S9477C2.s9477c2f4");
    check_field_offset(lv, s9477c2f5, ABISELECT(64,40), "S9477C2.s9477c2f5");
    check_field_offset(lv, s9477c2f6, ABISELECT(72,44), "S9477C2.s9477c2f6");
    check_field_offset(lv, s9477c2f7, ABISELECT(80,48), "S9477C2.s9477c2f7");
    test_class_info(&lv, &cd_S9477C2);
    dp->~S9477C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9477C2(Test_S9477C2, "S9477C2", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S9477C2C1Ev();
extern void _ZN7S9477C2D1Ev();
Name_Map name_map_S9477C2[] = {
  NSPAIR(_ZN7S9477C2C1Ev),
  NSPAIR(_ZN7S9477C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9477C2[];
extern void _ZN7S9477C2D1Ev();
extern void _ZN7S9477C2D0Ev();
extern void _ZN7S9477C22v3Ev();
extern void _ZN7S9477C22v4Ev();
extern void _ZN7S9477C22v5Ev();
extern void _ZN7S9477C22v6Ev();
extern void _ZN7S9477C22v7Ev();
extern void _ZN7S9477C22v8Ev();
extern void _ZN7S9477C22v9Ev();
extern void _ZN7S9477C23v10Ev();
extern void _ZN7S9477C23v11Ev();
extern void _ZN7S9477C23v12Ev();
extern void _ZN7S9477C23v13Ev();
extern void _ZN7S9477C23v14Ev();
extern void _ZN7S9477C23v15Ev();
extern void _ZN7S9477C23v16Ev();
static  VTBL_ENTRY vtc_S9477C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9477C2[0]),
  (VTBL_ENTRY)&_ZN7S9477C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9477C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v16Ev,
};
extern VTBL_ENTRY _ZTI7S9477C2[];
extern  VTBL_ENTRY _ZTV7S9477C2[];
Class_Descriptor cd_S9477C2 = {  "S9477C2", // class name
  0,0,//no base classes
  &(vtc_S9477C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S9477C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9477C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9477C1  : S9477C2 {
  virtual  ~S9477C1(); // _ZN7S9477C1D1Ev
  virtual void  v1(); // _ZN7S9477C12v1Ev
  virtual void  v2(); // _ZN7S9477C12v2Ev
  S9477C1(); // tgen
};
//SIG(1 S9477C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 Fc Fi Fp[3] Fc[3] FC3{ m Fp Fi FC4{ m}} Fc Fp Fi[2]} vd v1 v2}


 S9477C1 ::~S9477C1(){ note_dtor("S9477C1", this);}
void  S9477C1 ::v1(){vfunc_called(this, "_ZN7S9477C12v1Ev");}
void  S9477C1 ::v2(){vfunc_called(this, "_ZN7S9477C12v2Ev");}
S9477C1 ::S9477C1(){ note_ctor("S9477C1", this);} // tgen

static void Test_S9477C1()
{
  extern Class_Descriptor cd_S9477C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S9477C1, buf);
    S9477C1 *dp, &lv = *(dp=new (buf) S9477C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S9477C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9477C1)");
    check_base_class_offset(lv, (S9477C2*), 0, "S9477C1");
    test_class_info(&lv, &cd_S9477C1);
    dp->~S9477C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9477C1(Test_S9477C1, "S9477C1", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S9477C1C1Ev();
extern void _ZN7S9477C1D1Ev();
Name_Map name_map_S9477C1[] = {
  NSPAIR(_ZN7S9477C1C1Ev),
  NSPAIR(_ZN7S9477C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9477C2;
extern VTBL_ENTRY _ZTI7S9477C2[];
extern  VTBL_ENTRY _ZTV7S9477C2[];
static Base_Class bases_S9477C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9477C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9477C1[];
extern void _ZN7S9477C1D1Ev();
extern void _ZN7S9477C1D0Ev();
extern void _ZN7S9477C22v3Ev();
extern void _ZN7S9477C22v4Ev();
extern void _ZN7S9477C22v5Ev();
extern void _ZN7S9477C22v6Ev();
extern void _ZN7S9477C22v7Ev();
extern void _ZN7S9477C22v8Ev();
extern void _ZN7S9477C22v9Ev();
extern void _ZN7S9477C23v10Ev();
extern void _ZN7S9477C23v11Ev();
extern void _ZN7S9477C23v12Ev();
extern void _ZN7S9477C23v13Ev();
extern void _ZN7S9477C23v14Ev();
extern void _ZN7S9477C23v15Ev();
extern void _ZN7S9477C23v16Ev();
extern void _ZN7S9477C12v1Ev();
extern void _ZN7S9477C12v2Ev();
static  VTBL_ENTRY vtc_S9477C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9477C1[0]),
  (VTBL_ENTRY)&_ZN7S9477C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9477C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9477C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9477C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9477C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9477C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9477C1[];
extern  VTBL_ENTRY _ZTV7S9477C1[];
Class_Descriptor cd_S9477C1 = {  "S9477C1", // class name
  bases_S9477C1, 1,
  &(vtc_S9477C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S9477C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9477C1),20, //virtual function table var
  2, // 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  S2097C4  {
  void *s2097c4f0;
  char s2097c4f1;
  int s2097c4f2[4];
  void *s2097c4f3;
  virtual  ~S2097C4(); // _ZN7S2097C4D1Ev
  virtual void  v2(); // _ZN7S2097C42v2Ev
  virtual void  v3(); // _ZN7S2097C42v3Ev
  virtual void  v4(); // _ZN7S2097C42v4Ev
  virtual void  v5(); // _ZN7S2097C42v5Ev
  S2097C4(); // tgen
};
//SIG(-1 S2097C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2097C4 ::~S2097C4(){ note_dtor("S2097C4", this);}
void  S2097C4 ::v2(){vfunc_called(this, "_ZN7S2097C42v2Ev");}
void  S2097C4 ::v3(){vfunc_called(this, "_ZN7S2097C42v3Ev");}
void  S2097C4 ::v4(){vfunc_called(this, "_ZN7S2097C42v4Ev");}
void  S2097C4 ::v5(){vfunc_called(this, "_ZN7S2097C42v5Ev");}
S2097C4 ::S2097C4(){ note_ctor("S2097C4", this);} // tgen

static void Test_S2097C4()
{
  extern Class_Descriptor cd_S2097C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2097C4, buf);
    S2097C4 *dp, &lv = *(dp=new (buf) S2097C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2097C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C4)");
    check_field_offset(lv, s2097c4f0, ABISELECT(8,4), "S2097C4.s2097c4f0");
    check_field_offset(lv, s2097c4f1, ABISELECT(16,8), "S2097C4.s2097c4f1");
    check_field_offset(lv, s2097c4f2, ABISELECT(20,12), "S2097C4.s2097c4f2");
    check_field_offset(lv, s2097c4f3, ABISELECT(40,28), "S2097C4.s2097c4f3");
    test_class_info(&lv, &cd_S2097C4);
    dp->~S2097C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C4(Test_S2097C4, "S2097C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2097C4C1Ev();
extern void _ZN7S2097C4D1Ev();
Name_Map name_map_S2097C4[] = {
  NSPAIR(_ZN7S2097C4C1Ev),
  NSPAIR(_ZN7S2097C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2097C4[];
extern void _ZN7S2097C4D1Ev();
extern void _ZN7S2097C4D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
static  VTBL_ENTRY vtc_S2097C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C4[0]),
  (VTBL_ENTRY)&_ZN7S2097C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
Class_Descriptor cd_S2097C4 = {  "S2097C4", // class name
  0,0,//no base classes
  &(vtc_S2097C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2097C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2097C4),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  S2097C3  : S2097C4 {
  int s2097c3f0[3];
  virtual  ~S2097C3(); // _ZN7S2097C3D1Ev
  virtual void  v6(); // _ZN7S2097C32v6Ev
  virtual void  v7(); // _ZN7S2097C32v7Ev
  virtual void  v8(); // _ZN7S2097C32v8Ev
  S2097C3(); // tgen
};
//SIG(-1 S2097C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2097C3 ::~S2097C3(){ note_dtor("S2097C3", this);}
void  S2097C3 ::v6(){vfunc_called(this, "_ZN7S2097C32v6Ev");}
void  S2097C3 ::v7(){vfunc_called(this, "_ZN7S2097C32v7Ev");}
void  S2097C3 ::v8(){vfunc_called(this, "_ZN7S2097C32v8Ev");}
S2097C3 ::S2097C3(){ note_ctor("S2097C3", this);} // tgen

static void Test_S2097C3()
{
  extern Class_Descriptor cd_S2097C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2097C3, buf);
    S2097C3 *dp, &lv = *(dp=new (buf) S2097C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2097C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C3)");
    check_base_class_offset(lv, (S2097C4*), 0, "S2097C3");
    check_field_offset(lv, s2097c3f0, ABISELECT(48,32), "S2097C3.s2097c3f0");
    test_class_info(&lv, &cd_S2097C3);
    dp->~S2097C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C3(Test_S2097C3, "S2097C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2097C3C1Ev();
extern void _ZN7S2097C3D1Ev();
Name_Map name_map_S2097C3[] = {
  NSPAIR(_ZN7S2097C3C1Ev),
  NSPAIR(_ZN7S2097C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2097C4;
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
static Base_Class bases_S2097C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2097C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2097C3[];
extern void _ZN7S2097C3D1Ev();
extern void _ZN7S2097C3D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
extern void _ZN7S2097C32v6Ev();
extern void _ZN7S2097C32v7Ev();
extern void _ZN7S2097C32v8Ev();
static  VTBL_ENTRY vtc_S2097C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C3[0]),
  (VTBL_ENTRY)&_ZN7S2097C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2097C3[];
extern  VTBL_ENTRY _ZTV7S2097C3[];
Class_Descriptor cd_S2097C3 = {  "S2097C3", // class name
  bases_S2097C3, 1,
  &(vtc_S2097C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2097C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2097C3),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  S2097C2  : S2097C3 {
  int s2097c2f0[3];
  virtual  ~S2097C2(); // _ZN7S2097C2D1Ev
  virtual void  v9(); // _ZN7S2097C22v9Ev
  virtual void  v10(); // _ZN7S2097C23v10Ev
  virtual void  v11(); // _ZN7S2097C23v11Ev
  S2097C2(); // tgen
};
//SIG(-1 S2097C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2097C2 ::~S2097C2(){ note_dtor("S2097C2", this);}
void  S2097C2 ::v9(){vfunc_called(this, "_ZN7S2097C22v9Ev");}
void  S2097C2 ::v10(){vfunc_called(this, "_ZN7S2097C23v10Ev");}
void  S2097C2 ::v11(){vfunc_called(this, "_ZN7S2097C23v11Ev");}
S2097C2 ::S2097C2(){ note_ctor("S2097C2", this);} // tgen

static void Test_S2097C2()
{
  extern Class_Descriptor cd_S2097C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2097C2, buf);
    S2097C2 *dp, &lv = *(dp=new (buf) S2097C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2097C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C2)");
    check_base_class_offset(lv, (S2097C4*)(S2097C3*), 0, "S2097C2");
    check_base_class_offset(lv, (S2097C3*), 0, "S2097C2");
    check_field_offset(lv, s2097c2f0, ABISELECT(60,44), "S2097C2.s2097c2f0");
    test_class_info(&lv, &cd_S2097C2);
    dp->~S2097C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C2(Test_S2097C2, "S2097C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2097C2C1Ev();
extern void _ZN7S2097C2D1Ev();
Name_Map name_map_S2097C2[] = {
  NSPAIR(_ZN7S2097C2C1Ev),
  NSPAIR(_ZN7S2097C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2097C4;
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
extern Class_Descriptor cd_S2097C3;
extern VTBL_ENTRY _ZTI7S2097C3[];
extern  VTBL_ENTRY _ZTV7S2097C3[];
static Base_Class bases_S2097C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2097C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2097C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2097C2[];
extern void _ZN7S2097C2D1Ev();
extern void _ZN7S2097C2D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
extern void _ZN7S2097C32v6Ev();
extern void _ZN7S2097C32v7Ev();
extern void _ZN7S2097C32v8Ev();
extern void _ZN7S2097C22v9Ev();
extern void _ZN7S2097C23v10Ev();
extern void _ZN7S2097C23v11Ev();
static  VTBL_ENTRY vtc_S2097C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C2[0]),
  (VTBL_ENTRY)&_ZN7S2097C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2097C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2097C2[];
extern  VTBL_ENTRY _ZTV7S2097C2[];
Class_Descriptor cd_S2097C2 = {  "S2097C2", // class name
  bases_S2097C2, 2,
  &(vtc_S2097C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2097C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2097C2),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  S2097C1  : S2097C2 {
  int s2097c1f0[11];
  char s2097c1f1[4];
  int s2097c1f2[2];
  char s2097c1f3[2];
  virtual  ~S2097C1(); // _ZN7S2097C1D1Ev
  virtual void  v1(); // _ZN7S2097C12v1Ev
  S2097C1(); // tgen
};
//SIG(1 S2097C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fi[11] Fc[4] Fi[2] Fc[2]}


 S2097C1 ::~S2097C1(){ note_dtor("S2097C1", this);}
void  S2097C1 ::v1(){vfunc_called(this, "_ZN7S2097C12v1Ev");}
S2097C1 ::S2097C1(){ note_ctor("S2097C1", this);} // tgen

static void Test_S2097C1()
{
  extern Class_Descriptor cd_S2097C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,30)];
    init_test(&cd_S2097C1, buf);
    S2097C1 *dp, &lv = *(dp=new (buf) S2097C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,116), "sizeof(S2097C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2097C1)");
    check_base_class_offset(lv, (S2097C4*)(S2097C3*)(S2097C2*), 0, "S2097C1");
    check_base_class_offset(lv, (S2097C3*)(S2097C2*), 0, "S2097C1");
    check_base_class_offset(lv, (S2097C2*), 0, "S2097C1");
    check_field_offset(lv, s2097c1f0, ABISELECT(72,56), "S2097C1.s2097c1f0");
    check_field_offset(lv, s2097c1f1, ABISELECT(116,100), "S2097C1.s2097c1f1");
    check_field_offset(lv, s2097c1f2, ABISELECT(120,104), "S2097C1.s2097c1f2");
    check_field_offset(lv, s2097c1f3, ABISELECT(128,112), "S2097C1.s2097c1f3");
    test_class_info(&lv, &cd_S2097C1);
    dp->~S2097C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2097C1(Test_S2097C1, "S2097C1", ABISELECT(136,116));

#else // __cplusplus

extern void _ZN7S2097C1C1Ev();
extern void _ZN7S2097C1D1Ev();
Name_Map name_map_S2097C1[] = {
  NSPAIR(_ZN7S2097C1C1Ev),
  NSPAIR(_ZN7S2097C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2097C4;
extern VTBL_ENTRY _ZTI7S2097C4[];
extern  VTBL_ENTRY _ZTV7S2097C4[];
extern Class_Descriptor cd_S2097C3;
extern VTBL_ENTRY _ZTI7S2097C3[];
extern  VTBL_ENTRY _ZTV7S2097C3[];
extern Class_Descriptor cd_S2097C2;
extern VTBL_ENTRY _ZTI7S2097C2[];
extern  VTBL_ENTRY _ZTV7S2097C2[];
static Base_Class bases_S2097C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2097C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2097C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2097C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2097C1[];
extern void _ZN7S2097C1D1Ev();
extern void _ZN7S2097C1D0Ev();
extern void _ZN7S2097C42v2Ev();
extern void _ZN7S2097C42v3Ev();
extern void _ZN7S2097C42v4Ev();
extern void _ZN7S2097C42v5Ev();
extern void _ZN7S2097C32v6Ev();
extern void _ZN7S2097C32v7Ev();
extern void _ZN7S2097C32v8Ev();
extern void _ZN7S2097C22v9Ev();
extern void _ZN7S2097C23v10Ev();
extern void _ZN7S2097C23v11Ev();
extern void _ZN7S2097C12v1Ev();
static  VTBL_ENTRY vtc_S2097C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2097C1[0]),
  (VTBL_ENTRY)&_ZN7S2097C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2097C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2097C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2097C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2097C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2097C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2097C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2097C1[];
extern  VTBL_ENTRY _ZTV7S2097C1[];
Class_Descriptor cd_S2097C1 = {  "S2097C1", // class name
  bases_S2097C1, 3,
  &(vtc_S2097C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,116), // object size
  NSPAIRA(_ZTI7S2097C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2097C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C3  {
  void *s19291c3f0;
  char s19291c3f1[5];
  __tsi64 s19291c3f2;
  void *s19291c3f3[2];
  virtual void  v2(); // _ZN8S19291C32v2Ev
  ~S19291C3(); // tgen
  S19291C3(); // tgen
};
//SIG(-1 S19291C3) C1{ v1 Fp Fc[5] FL Fp[2]}


void  S19291C3 ::v2(){vfunc_called(this, "_ZN8S19291C32v2Ev");}
S19291C3 ::~S19291C3(){ note_dtor("S19291C3", this);} // tgen
S19291C3 ::S19291C3(){ note_ctor("S19291C3", this);} // tgen

static void Test_S19291C3()
{
  extern Class_Descriptor cd_S19291C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S19291C3, buf);
    S19291C3 *dp, &lv = *(dp=new (buf) S19291C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S19291C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C3)");
    check_field_offset(lv, s19291c3f0, ABISELECT(8,4), "S19291C3.s19291c3f0");
    check_field_offset(lv, s19291c3f1, ABISELECT(16,8), "S19291C3.s19291c3f1");
    check_field_offset(lv, s19291c3f2, ABISELECT(24,16), "S19291C3.s19291c3f2");
    check_field_offset(lv, s19291c3f3, ABISELECT(32,24), "S19291C3.s19291c3f3");
    test_class_info(&lv, &cd_S19291C3);
    dp->~S19291C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C3(Test_S19291C3, "S19291C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S19291C3C1Ev();
extern void _ZN8S19291C3D1Ev();
Name_Map name_map_S19291C3[] = {
  NSPAIR(_ZN8S19291C3C1Ev),
  NSPAIR(_ZN8S19291C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19291C3[];
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C3[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
Class_Descriptor cd_S19291C3 = {  "S19291C3", // class name
  0,0,//no base classes
  &(vtc_S19291C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S19291C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19291C3),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  S19291C2  : S19291C3 {
  ::S19291C3 s19291c2f0;
  char s19291c2f1[2];
  void *s19291c2f2;
  virtual void  v3(); // _ZN8S19291C22v3Ev
  virtual void  v4(); // _ZN8S19291C22v4Ev
  virtual void  v5(); // _ZN8S19291C22v5Ev
  ~S19291C2(); // tgen
  S19291C2(); // tgen
};
//SIG(-1 S19291C2) C1{ BC2{ v4 Fp Fc[5] FL Fp[2]} v1 v2 v3 FC2 Fc[2] Fp}


void  S19291C2 ::v3(){vfunc_called(this, "_ZN8S19291C22v3Ev");}
void  S19291C2 ::v4(){vfunc_called(this, "_ZN8S19291C22v4Ev");}
void  S19291C2 ::v5(){vfunc_called(this, "_ZN8S19291C22v5Ev");}
S19291C2 ::~S19291C2(){ note_dtor("S19291C2", this);} // tgen
S19291C2 ::S19291C2(){ note_ctor("S19291C2", this);} // tgen

static void Test_S19291C2()
{
  extern Class_Descriptor cd_S19291C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S19291C2, buf);
    S19291C2 *dp, &lv = *(dp=new (buf) S19291C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S19291C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C2)");
    check_base_class_offset(lv, (S19291C3*), 0, "S19291C2");
    check_field_offset(lv, s19291c2f0, ABISELECT(48,32), "S19291C2.s19291c2f0");
    check_field_offset(lv, s19291c2f1, ABISELECT(96,64), "S19291C2.s19291c2f1");
    check_field_offset(lv, s19291c2f2, ABISELECT(104,68), "S19291C2.s19291c2f2");
    test_class_info(&lv, &cd_S19291C2);
    dp->~S19291C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C2(Test_S19291C2, "S19291C2", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S19291C2C1Ev();
extern void _ZN8S19291C2D1Ev();
Name_Map name_map_S19291C2[] = {
  NSPAIR(_ZN8S19291C2C1Ev),
  NSPAIR(_ZN8S19291C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C2[];
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY vtc_S19291C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C2[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
Class_Descriptor cd_S19291C2 = {  "S19291C2", // class name
  bases_S19291C2, 1,
  &(vtc_S19291C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S19291C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19291C2),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  S19291C5  : virtual S19291C2 , virtual S19291C3 {
  int s19291c5f0;
  virtual void  v6(); // _ZN8S19291C52v6Ev
  ~S19291C5(); // tgen
  S19291C5(); // tgen
};
//SIG(-1 S19291C5) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} VBC3 v1 Fi}


void  S19291C5 ::v6(){vfunc_called(this, "_ZN8S19291C52v6Ev");}
S19291C5 ::~S19291C5(){ note_dtor("S19291C5", this);} // tgen
S19291C5 ::S19291C5(){ note_ctor("S19291C5", this);} // tgen

static void Test_S19291C5()
{
  extern Class_Descriptor cd_S19291C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S19291C5, buf);
    S19291C5 *dp, &lv = *(dp=new (buf) S19291C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S19291C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C5)");
    check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(16,8), "S19291C5");
    check_base_class_offset(lv, (S19291C2*), ABISELECT(16,8), "S19291C5");
    /*is_ambiguous_... S19291C5::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*), ABISELECT(128,80), "S19291C5");
    check_field_offset(lv, s19291c5f0, ABISELECT(8,4), "S19291C5.s19291c5f0");
    test_class_info(&lv, &cd_S19291C5);
    dp->~S19291C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C5(Test_S19291C5, "S19291C5", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S19291C5C1Ev();
extern void _ZN8S19291C5D1Ev();
Name_Map name_map_S19291C5[] = {
  NSPAIR(_ZN8S19291C5C1Ev),
  NSPAIR(_ZN8S19291C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(16,8), //bcp->offset
    5, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19291C3,    ABISELECT(128,80), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C5[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C5[] = {
  ABISELECT(128,80),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  0,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19291C5[];
static  VTT_ENTRY vtt_S19291C5[] = {
  {&(_ZTV8S19291C5[4]),  4,19},
  {&(_ZTV8S19291C5[11]),  11,19},
  {&(_ZTV8S19291C5[18]),  18,19},
};
extern VTBL_ENTRY _ZTI8S19291C5[];
extern  VTBL_ENTRY _ZTV8S19291C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C5[];
Class_Descriptor cd_S19291C5 = {  "S19291C5", // class name
  bases_S19291C5, 3,
  &(vtc_S19291C5[0]), // expected_vtbl_contents
  &(vtt_S19291C5[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S19291C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19291C5),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19291C5),3, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C4  : S19291C5 , S19291C2 , S19291C3 {
  virtual  ~S19291C4(); // _ZN8S19291C4D2Ev
  virtual void  v7(); // _ZN8S19291C42v7Ev
  S19291C4(); // tgen
};
//SIG(-1 S19291C4) C1{ BC2{ VBC3{ BC4{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC4 Fc[2] Fp} VBC4 v6 Fi} BC3 BC4 vd v1}


 S19291C4 ::~S19291C4(){ note_dtor("S19291C4", this);}
void  S19291C4 ::v7(){vfunc_called(this, "_ZN8S19291C42v7Ev");}
S19291C4 ::S19291C4(){ note_ctor("S19291C4", this);} // tgen

static void Test_S19291C4()
{
  extern Class_Descriptor cd_S19291C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,55)];
    init_test(&cd_S19291C4, buf);
    S19291C4 *dp, &lv = *(dp=new (buf) S19291C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,216), "sizeof(S19291C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C4)");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(176,112), "S19291C4");
    check_base_class_offset(lv, (S19291C2*)(S19291C5*), ABISELECT(176,112), "S19291C4");
    /*is_ambiguous_... S19291C5::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C5*), ABISELECT(288,184), "S19291C4");
    check_base_class_offset(lv, (S19291C5*), 0, "S19291C4");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(16,8), "S19291C4");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C2*), ABISELECT(16,8), "S19291C4");
    /*is_ambiguous_... S19291C4::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*), ABISELECT(128,80), "S19291C4");
    test_class_info(&lv, &cd_S19291C4);
    dp->~S19291C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C4(Test_S19291C4, "S19291C4", ABISELECT(336,216));

#else // __cplusplus

extern void _ZN8S19291C4C1Ev();
extern void _ZN8S19291C4D2Ev();
Name_Map name_map_S19291C4[] = {
  NSPAIR(_ZN8S19291C4C1Ev),
  NSPAIR(_ZN8S19291C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C5;
extern VTBL_ENTRY _ZTI8S19291C5[];
extern  VTBL_ENTRY _ZTV8S19291C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C5[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(176,112), //bcp->offset
    17, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19291C3,    ABISELECT(288,184), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19291C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19291C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(16,8), //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19291C3,    ABISELECT(128,80), //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
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C4[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C4D1Ev();
extern void _ZN8S19291C4D0Ev();
extern void _ZN8S19291C42v7Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C4[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19291C42v7Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19291C4[];
extern void _ZN8S19291C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C5__8S19291C4[] = {
  ABISELECT(288,184),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
};
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C2__8S19291C5__8S19291C4[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C3__A1__8S19291C5__8S19291C4[] = {
  0,
  ABISELECT(-288,-184),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
static  VTT_ENTRY vtt_S19291C4[] = {
  {&(_ZTV8S19291C4[4]),  4,31},
  {&(_tg__ZTV8S19291C5__8S19291C4[4]),  4,5},
  {&(_tg__ZTV8S19291C2__8S19291C5__8S19291C4[6]),  6,10},
  {&(_tg__ZTV8S19291C3__A1__8S19291C5__8S19291C4[3]),  3,4},
  {&(_ZTV8S19291C4[23]),  23,31},
  {&(_ZTV8S19291C4[30]),  30,31},
};
extern VTBL_ENTRY _ZTI8S19291C4[];
extern  VTBL_ENTRY _ZTV8S19291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C4[];
Class_Descriptor cd_S19291C4 = {  "S19291C4", // class name
  bases_S19291C4, 7,
  &(vtc_S19291C4[0]), // expected_vtbl_contents
  &(vtt_S19291C4[0]), // expected_vtt_contents
  ABISELECT(336,216), // object size
  NSPAIRA(_ZTI8S19291C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19291C4),31, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19291C4),6, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19291C1  : virtual S19291C2 , S19291C4 , S19291C3 {
  ::S19763C18_nt s19291c1f0;
  virtual void  v1(); // _ZN8S19291C12v1Ev
  ~S19291C1(); // tgen
  S19291C1(); // tgen
};
//SIG(1 S19291C1) C1{ VBC2{ BC3{ v2 Fp Fc[5] FL Fp[2]} v3 v4 v5 FC3 Fc[2] Fp} BC4{ BC5{ VBC2 VBC3 v6 Fi} BC2 BC3 vd v7} BC3 v1 FC6{}}


void  S19291C1 ::v1(){vfunc_called(this, "_ZN8S19291C12v1Ev");}
S19291C1 ::~S19291C1(){ note_dtor("S19291C1", this);} // tgen
S19291C1 ::S19291C1(){ note_ctor("S19291C1", this);} // tgen

static void Test_S19291C1()
{
  extern Class_Descriptor cd_S19291C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(50,64)];
    init_test(&cd_S19291C1, buf);
    S19291C1 *dp, &lv = *(dp=new (buf) S19291C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(392,252), "sizeof(S19291C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19291C1)");
    /*is_ambiguous_... S19291C1::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*), ABISELECT(232,148), "S19291C1");
    /*is_ambiguous_... S19291C1::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C2*), ABISELECT(232,148), "S19291C1");
    check_base_class_offset(lv, (S19291C2*)(S19291C5*)(S19291C4*), ABISELECT(232,148), "S19291C1");
    /*is_ambiguous_... S19291C5::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C5*)(S19291C4*), ABISELECT(344,220), "S19291C1");
    check_base_class_offset(lv, (S19291C5*)(S19291C4*), 0, "S19291C1");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C2*)(S19291C4*), ABISELECT(16,8), "S19291C1");
    /*is_ambiguous_... S19291C4::S19291C2 */ AMB_check_base_class_offset(lv, (S19291C2*)(S19291C4*), ABISELECT(16,8), "S19291C1");
    /*is_ambiguous_... S19291C4::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*)(S19291C4*), ABISELECT(128,80), "S19291C1");
    check_base_class_offset(lv, (S19291C4*), 0, "S19291C1");
    /*is_ambiguous_... S19291C1::S19291C3 */ AMB_check_base_class_offset(lv, (S19291C3*), ABISELECT(176,112), "S19291C1");
    check_field_offset(lv, s19291c1f0, ABISELECT(224,144), "S19291C1.s19291c1f0");
    test_class_info(&lv, &cd_S19291C1);
    dp->~S19291C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19291C1(Test_S19291C1, "S19291C1", ABISELECT(392,252));

#else // __cplusplus

extern void _ZN8S19291C1C1Ev();
extern void _ZN8S19291C1D1Ev();
Name_Map name_map_S19291C1[] = {
  NSPAIR(_ZN8S19291C1C1Ev),
  NSPAIR(_ZN8S19291C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C5;
extern VTBL_ENTRY _ZTI8S19291C5[];
extern  VTBL_ENTRY _ZTV8S19291C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C5[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C2;
extern VTBL_ENTRY _ZTI8S19291C2[];
extern  VTBL_ENTRY _ZTV8S19291C2[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
extern Class_Descriptor cd_S19291C4;
extern VTBL_ENTRY _ZTI8S19291C4[];
extern  VTBL_ENTRY _ZTV8S19291C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C4[];
extern Class_Descriptor cd_S19291C3;
extern VTBL_ENTRY _ZTI8S19291C3[];
extern  VTBL_ENTRY _ZTV8S19291C3[];
static Base_Class bases_S19291C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19291C3,    ABISELECT(232,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
  0, 0},
  {&cd_S19291C2,    ABISELECT(232,148), //bcp->offset
    21, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19291C3,    ABISELECT(344,220), //bcp->offset
    31, //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
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19291C5,    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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19291C3,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19291C2,    ABISELECT(16,8), //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
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19291C3,    ABISELECT(128,80), //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19291C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19291C3,    ABISELECT(176,112), //bcp->offset
    18, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19291C1[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C1D1Ev();
extern void _ZN8S19291C1D0Ev();
extern void _ZN8S19291C42v7Ev();
extern void _ZN8S19291C12v1Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY vtc_S19291C1[] = {
  ABISELECT(344,220),
  ABISELECT(232,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19291C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19291C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19291C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19291C12v1Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
  0,
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S19291C1[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19291C1[];
extern void _ZN8S19291C52v6Ev();
extern void _ZN8S19291C4D1Ev();
extern void _ZN8S19291C4D0Ev();
extern void _ZN8S19291C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C4__8S19291C1[] = {
  ABISELECT(344,220),
  ABISELECT(232,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19291C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19291C42v7Ev,
};
extern void _ZN8S19291C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C58S19291C4__8S19291C1[] = {
  ABISELECT(344,220),
  ABISELECT(232,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C52v6Ev,
};
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C2__8S19291C58S19291C4__8S19291C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C3__A1__8S19291C58S19291C4__8S19291C1[] = {
  0,
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S19291C5[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
extern void _ZN8S19291C32v2Ev();
extern void _ZN8S19291C22v3Ev();
extern void _ZN8S19291C22v4Ev();
extern void _ZN8S19291C22v5Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C2__8S19291C4__8S19291C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-232,-148),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v3Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v4Ev,
  (VTBL_ENTRY)&_ZN8S19291C22v5Ev,
};
extern void _ZN8S19291C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19291C3__A1__8S19291C4__8S19291C1[] = {
  0,
  ABISELECT(-344,-220),
  (VTBL_ENTRY)&(_ZTI8S19291C4[0]),
  (VTBL_ENTRY)&_ZN8S19291C32v2Ev,
};
static  VTT_ENTRY vtt_S19291C1[] = {
  {&(_ZTV8S19291C1[4]),  4,35},
  {&(_tg__ZTV8S19291C4__8S19291C1[4]),  4,8},
  {&(_tg__ZTV8S19291C58S19291C4__8S19291C1[4]),  4,5},
  {&(_tg__ZTV8S19291C2__8S19291C58S19291C4__8S19291C1[6]),  6,10},
  {&(_tg__ZTV8S19291C3__A1__8S19291C58S19291C4__8S19291C1[3]),  3,4},
  {&(_tg__ZTV8S19291C2__8S19291C4__8S19291C1[6]),  6,10},
  {&(_tg__ZTV8S19291C3__A1__8S19291C4__8S19291C1[3]),  3,4},
  {&(_ZTV8S19291C1[27]),  27,35},
  {&(_ZTV8S19291C1[34]),  34,35},
};
extern VTBL_ENTRY _ZTI8S19291C1[];
extern  VTBL_ENTRY _ZTV8S19291C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19291C1[];
Class_Descriptor cd_S19291C1 = {  "S19291C1", // class name
  bases_S19291C1, 9,
  &(vtc_S19291C1[0]), // expected_vtbl_contents
  &(vtt_S19291C1[0]), // expected_vtt_contents
  ABISELECT(392,252), // object size
  NSPAIRA(_ZTI8S19291C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19291C1),35, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19291C1),9, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4341C3  {
  void *s4341c3f0;
  int s4341c3f1[2];
  char s4341c3f2;
  ::S10007C19 s4341c3f3;
  virtual  ~S4341C3(); // _ZN7S4341C3D1Ev
  virtual void  v2(); // _ZN7S4341C32v2Ev
  virtual void  v3(); // _ZN7S4341C32v3Ev
  S4341C3(); // tgen
};
//SIG(-1 S4341C3) C1{ vd v1 v2 Fp Fi[2] Fc FC2{ m FC3{ m FL[2]} FC3 FC3 FC3}}


 S4341C3 ::~S4341C3(){ note_dtor("S4341C3", this);}
void  S4341C3 ::v2(){vfunc_called(this, "_ZN7S4341C32v2Ev");}
void  S4341C3 ::v3(){vfunc_called(this, "_ZN7S4341C32v3Ev");}
S4341C3 ::S4341C3(){ note_ctor("S4341C3", this);} // tgen

static void Test_S4341C3()
{
  extern Class_Descriptor cd_S4341C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,22)];
    init_test(&cd_S4341C3, buf);
    S4341C3 *dp, &lv = *(dp=new (buf) S4341C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S4341C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C3)");
    check_field_offset(lv, s4341c3f0, ABISELECT(8,4), "S4341C3.s4341c3f0");
    check_field_offset(lv, s4341c3f1, ABISELECT(16,8), "S4341C3.s4341c3f1");
    check_field_offset(lv, s4341c3f2, ABISELECT(24,16), "S4341C3.s4341c3f2");
    check_field_offset(lv, s4341c3f3, ABISELECT(32,20), "S4341C3.s4341c3f3");
    test_class_info(&lv, &cd_S4341C3);
    dp->~S4341C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C3(Test_S4341C3, "S4341C3", ABISELECT(96,84));

#else // __cplusplus

extern void _ZN7S4341C3C1Ev();
extern void _ZN7S4341C3D1Ev();
Name_Map name_map_S4341C3[] = {
  NSPAIR(_ZN7S4341C3C1Ev),
  NSPAIR(_ZN7S4341C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4341C3[];
extern void _ZN7S4341C3D1Ev();
extern void _ZN7S4341C3D0Ev();
extern void _ZN7S4341C32v2Ev();
extern void _ZN7S4341C32v3Ev();
static  VTBL_ENTRY vtc_S4341C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4341C3[0]),
  (VTBL_ENTRY)&_ZN7S4341C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4341C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v3Ev,
};
extern VTBL_ENTRY _ZTI7S4341C3[];
extern  VTBL_ENTRY _ZTV7S4341C3[];
Class_Descriptor cd_S4341C3 = {  "S4341C3", // class name
  0,0,//no base classes
  &(vtc_S4341C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,84), // object size
  NSPAIRA(_ZTI7S4341C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4341C3),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  S4341C6  : S10007C27_nt {
};
//SIG(-1 S4341C6) C1{ BC2{ m FC3{ m FL[2]}}}



static void Test_S4341C6()
{
  extern Class_Descriptor cd_S4341C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S4341C6, buf);
    S4341C6 &lv = *(new (buf) S4341C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S4341C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C6)");
    check_base_class_offset(lv, (S10007C27_nt*), 0, "S4341C6");
    test_class_info(&lv, &cd_S4341C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C6(Test_S4341C6, "S4341C6", 16);

#else // __cplusplus

extern Class_Descriptor cd_S10007C27_nt;
static Base_Class bases_S4341C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10007C27_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S4341C6 = {  "S4341C6", // class name
  bases_S4341C6, 1,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4341C2  : S4341C3 {
  int s4341c2f0[8];
  void *s4341c2f1[2];
  ::S4341C6 s4341c2f2;
  int s4341c2f3;
  virtual  ~S4341C2(); // _ZN7S4341C2D1Ev
  virtual void  v4(); // _ZN7S4341C22v4Ev
  virtual void  v5(); // _ZN7S4341C22v5Ev
  S4341C2(); // tgen
};
//SIG(-1 S4341C2) C1{ BC2{ vd v3 v4 Fp Fi[2] Fc FC3{ m FC4{ m FL[2]} FC4 FC4 FC4}} vd v1 v2 Fi[8] Fp[2] FC5{ BC6{ m FC7{ m FL[2]}}} Fi}


 S4341C2 ::~S4341C2(){ note_dtor("S4341C2", this);}
void  S4341C2 ::v4(){vfunc_called(this, "_ZN7S4341C22v4Ev");}
void  S4341C2 ::v5(){vfunc_called(this, "_ZN7S4341C22v5Ev");}
S4341C2 ::S4341C2(){ note_ctor("S4341C2", this);} // tgen

static void Test_S4341C2()
{
  extern Class_Descriptor cd_S4341C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,37)];
    init_test(&cd_S4341C2, buf);
    S4341C2 *dp, &lv = *(dp=new (buf) S4341C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,144), "sizeof(S4341C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C2)");
    check_base_class_offset(lv, (S4341C3*), 0, "S4341C2");
    check_field_offset(lv, s4341c2f0, ABISELECT(96,84), "S4341C2.s4341c2f0");
    check_field_offset(lv, s4341c2f1, ABISELECT(128,116), "S4341C2.s4341c2f1");
    check_field_offset(lv, s4341c2f2, ABISELECT(144,124), "S4341C2.s4341c2f2");
    check_field_offset(lv, s4341c2f3, ABISELECT(160,140), "S4341C2.s4341c2f3");
    test_class_info(&lv, &cd_S4341C2);
    dp->~S4341C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C2(Test_S4341C2, "S4341C2", ABISELECT(168,144));

#else // __cplusplus

extern void _ZN7S4341C2C1Ev();
extern void _ZN7S4341C2D1Ev();
Name_Map name_map_S4341C2[] = {
  NSPAIR(_ZN7S4341C2C1Ev),
  NSPAIR(_ZN7S4341C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4341C3;
extern VTBL_ENTRY _ZTI7S4341C3[];
extern  VTBL_ENTRY _ZTV7S4341C3[];
static Base_Class bases_S4341C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4341C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4341C2[];
extern void _ZN7S4341C2D1Ev();
extern void _ZN7S4341C2D0Ev();
extern void _ZN7S4341C32v2Ev();
extern void _ZN7S4341C32v3Ev();
extern void _ZN7S4341C22v4Ev();
extern void _ZN7S4341C22v5Ev();
static  VTBL_ENTRY vtc_S4341C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4341C2[0]),
  (VTBL_ENTRY)&_ZN7S4341C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4341C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S4341C2[];
extern  VTBL_ENTRY _ZTV7S4341C2[];
Class_Descriptor cd_S4341C2 = {  "S4341C2", // class name
  bases_S4341C2, 1,
  &(vtc_S4341C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,144), // object size
  NSPAIRA(_ZTI7S4341C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4341C2),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  S4341C1  : S4341C2 {
  virtual void  v1(); // _ZN7S4341C12v1Ev
  ~S4341C1(); // tgen
  S4341C1(); // tgen
};
//SIG(1 S4341C1) C1{ BC2{ BC3{ vd v2 v3 Fp Fi[2] Fc FC4{ m FC5{ m FL[2]} FC5 FC5 FC5}} vd v4 v5 Fi[8] Fp[2] FC6{ BC7{ m FC8{ m FL[2]}}} Fi} v1}


void  S4341C1 ::v1(){vfunc_called(this, "_ZN7S4341C12v1Ev");}
S4341C1 ::~S4341C1(){ note_dtor("S4341C1", this);} // tgen
S4341C1 ::S4341C1(){ note_ctor("S4341C1", this);} // tgen

static void Test_S4341C1()
{
  extern Class_Descriptor cd_S4341C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,37)];
    init_test(&cd_S4341C1, buf);
    S4341C1 *dp, &lv = *(dp=new (buf) S4341C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,144), "sizeof(S4341C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4341C1)");
    check_base_class_offset(lv, (S4341C3*)(S4341C2*), 0, "S4341C1");
    check_base_class_offset(lv, (S4341C2*), 0, "S4341C1");
    test_class_info(&lv, &cd_S4341C1);
    dp->~S4341C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4341C1(Test_S4341C1, "S4341C1", ABISELECT(168,144));

#else // __cplusplus

extern void _ZN7S4341C1C1Ev();
extern void _ZN7S4341C1D1Ev();
Name_Map name_map_S4341C1[] = {
  NSPAIR(_ZN7S4341C1C1Ev),
  NSPAIR(_ZN7S4341C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4341C3;
extern VTBL_ENTRY _ZTI7S4341C3[];
extern  VTBL_ENTRY _ZTV7S4341C3[];
extern Class_Descriptor cd_S4341C2;
extern VTBL_ENTRY _ZTI7S4341C2[];
extern  VTBL_ENTRY _ZTV7S4341C2[];
static Base_Class bases_S4341C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4341C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4341C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4341C1[];
extern void _ZN7S4341C1D1Ev();
extern void _ZN7S4341C1D0Ev();
extern void _ZN7S4341C32v2Ev();
extern void _ZN7S4341C32v3Ev();
extern void _ZN7S4341C22v4Ev();
extern void _ZN7S4341C22v5Ev();
extern void _ZN7S4341C12v1Ev();
static  VTBL_ENTRY vtc_S4341C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4341C1[0]),
  (VTBL_ENTRY)&_ZN7S4341C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4341C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4341C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v4Ev,
  (VTBL_ENTRY)&_ZN7S4341C22v5Ev,
  (VTBL_ENTRY)&_ZN7S4341C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4341C1[];
extern  VTBL_ENTRY _ZTV7S4341C1[];
Class_Descriptor cd_S4341C1 = {  "S4341C1", // class name
  bases_S4341C1, 2,
  &(vtc_S4341C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(168,144), // object size
  NSPAIRA(_ZTI7S4341C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4341C1),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  S2098C4  {
  void *s2098c4f0;
  char s2098c4f1;
  int s2098c4f2[4];
  void *s2098c4f3;
  virtual  ~S2098C4(); // _ZN7S2098C4D1Ev
  virtual void  v2(); // _ZN7S2098C42v2Ev
  virtual void  v3(); // _ZN7S2098C42v3Ev
  virtual void  v4(); // _ZN7S2098C42v4Ev
  virtual void  v5(); // _ZN7S2098C42v5Ev
  S2098C4(); // tgen
};
//SIG(-1 S2098C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2098C4 ::~S2098C4(){ note_dtor("S2098C4", this);}
void  S2098C4 ::v2(){vfunc_called(this, "_ZN7S2098C42v2Ev");}
void  S2098C4 ::v3(){vfunc_called(this, "_ZN7S2098C42v3Ev");}
void  S2098C4 ::v4(){vfunc_called(this, "_ZN7S2098C42v4Ev");}
void  S2098C4 ::v5(){vfunc_called(this, "_ZN7S2098C42v5Ev");}
S2098C4 ::S2098C4(){ note_ctor("S2098C4", this);} // tgen

static void Test_S2098C4()
{
  extern Class_Descriptor cd_S2098C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2098C4, buf);
    S2098C4 *dp, &lv = *(dp=new (buf) S2098C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2098C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C4)");
    check_field_offset(lv, s2098c4f0, ABISELECT(8,4), "S2098C4.s2098c4f0");
    check_field_offset(lv, s2098c4f1, ABISELECT(16,8), "S2098C4.s2098c4f1");
    check_field_offset(lv, s2098c4f2, ABISELECT(20,12), "S2098C4.s2098c4f2");
    check_field_offset(lv, s2098c4f3, ABISELECT(40,28), "S2098C4.s2098c4f3");
    test_class_info(&lv, &cd_S2098C4);
    dp->~S2098C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C4(Test_S2098C4, "S2098C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2098C4C1Ev();
extern void _ZN7S2098C4D1Ev();
Name_Map name_map_S2098C4[] = {
  NSPAIR(_ZN7S2098C4C1Ev),
  NSPAIR(_ZN7S2098C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2098C4[];
extern void _ZN7S2098C4D1Ev();
extern void _ZN7S2098C4D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
static  VTBL_ENTRY vtc_S2098C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C4[0]),
  (VTBL_ENTRY)&_ZN7S2098C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
Class_Descriptor cd_S2098C4 = {  "S2098C4", // class name
  0,0,//no base classes
  &(vtc_S2098C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2098C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2098C4),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  S2098C3  : S2098C4 {
  int s2098c3f0[3];
  virtual  ~S2098C3(); // _ZN7S2098C3D1Ev
  virtual void  v6(); // _ZN7S2098C32v6Ev
  virtual void  v7(); // _ZN7S2098C32v7Ev
  virtual void  v8(); // _ZN7S2098C32v8Ev
  S2098C3(); // tgen
};
//SIG(-1 S2098C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2098C3 ::~S2098C3(){ note_dtor("S2098C3", this);}
void  S2098C3 ::v6(){vfunc_called(this, "_ZN7S2098C32v6Ev");}
void  S2098C3 ::v7(){vfunc_called(this, "_ZN7S2098C32v7Ev");}
void  S2098C3 ::v8(){vfunc_called(this, "_ZN7S2098C32v8Ev");}
S2098C3 ::S2098C3(){ note_ctor("S2098C3", this);} // tgen

static void Test_S2098C3()
{
  extern Class_Descriptor cd_S2098C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2098C3, buf);
    S2098C3 *dp, &lv = *(dp=new (buf) S2098C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2098C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C3)");
    check_base_class_offset(lv, (S2098C4*), 0, "S2098C3");
    check_field_offset(lv, s2098c3f0, ABISELECT(48,32), "S2098C3.s2098c3f0");
    test_class_info(&lv, &cd_S2098C3);
    dp->~S2098C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C3(Test_S2098C3, "S2098C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2098C3C1Ev();
extern void _ZN7S2098C3D1Ev();
Name_Map name_map_S2098C3[] = {
  NSPAIR(_ZN7S2098C3C1Ev),
  NSPAIR(_ZN7S2098C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2098C4;
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
static Base_Class bases_S2098C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2098C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2098C3[];
extern void _ZN7S2098C3D1Ev();
extern void _ZN7S2098C3D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
extern void _ZN7S2098C32v6Ev();
extern void _ZN7S2098C32v7Ev();
extern void _ZN7S2098C32v8Ev();
static  VTBL_ENTRY vtc_S2098C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C3[0]),
  (VTBL_ENTRY)&_ZN7S2098C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2098C3[];
extern  VTBL_ENTRY _ZTV7S2098C3[];
Class_Descriptor cd_S2098C3 = {  "S2098C3", // class name
  bases_S2098C3, 1,
  &(vtc_S2098C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2098C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2098C3),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  S2098C2  : S2098C3 {
  int s2098c2f0[3];
  virtual  ~S2098C2(); // _ZN7S2098C2D1Ev
  virtual void  v9(); // _ZN7S2098C22v9Ev
  virtual void  v10(); // _ZN7S2098C23v10Ev
  virtual void  v11(); // _ZN7S2098C23v11Ev
  S2098C2(); // tgen
};
//SIG(-1 S2098C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2098C2 ::~S2098C2(){ note_dtor("S2098C2", this);}
void  S2098C2 ::v9(){vfunc_called(this, "_ZN7S2098C22v9Ev");}
void  S2098C2 ::v10(){vfunc_called(this, "_ZN7S2098C23v10Ev");}
void  S2098C2 ::v11(){vfunc_called(this, "_ZN7S2098C23v11Ev");}
S2098C2 ::S2098C2(){ note_ctor("S2098C2", this);} // tgen

static void Test_S2098C2()
{
  extern Class_Descriptor cd_S2098C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2098C2, buf);
    S2098C2 *dp, &lv = *(dp=new (buf) S2098C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2098C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C2)");
    check_base_class_offset(lv, (S2098C4*)(S2098C3*), 0, "S2098C2");
    check_base_class_offset(lv, (S2098C3*), 0, "S2098C2");
    check_field_offset(lv, s2098c2f0, ABISELECT(60,44), "S2098C2.s2098c2f0");
    test_class_info(&lv, &cd_S2098C2);
    dp->~S2098C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C2(Test_S2098C2, "S2098C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2098C2C1Ev();
extern void _ZN7S2098C2D1Ev();
Name_Map name_map_S2098C2[] = {
  NSPAIR(_ZN7S2098C2C1Ev),
  NSPAIR(_ZN7S2098C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2098C4;
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
extern Class_Descriptor cd_S2098C3;
extern VTBL_ENTRY _ZTI7S2098C3[];
extern  VTBL_ENTRY _ZTV7S2098C3[];
static Base_Class bases_S2098C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2098C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2098C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2098C2[];
extern void _ZN7S2098C2D1Ev();
extern void _ZN7S2098C2D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
extern void _ZN7S2098C32v6Ev();
extern void _ZN7S2098C32v7Ev();
extern void _ZN7S2098C32v8Ev();
extern void _ZN7S2098C22v9Ev();
extern void _ZN7S2098C23v10Ev();
extern void _ZN7S2098C23v11Ev();
static  VTBL_ENTRY vtc_S2098C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C2[0]),
  (VTBL_ENTRY)&_ZN7S2098C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2098C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2098C2[];
extern  VTBL_ENTRY _ZTV7S2098C2[];
Class_Descriptor cd_S2098C2 = {  "S2098C2", // class name
  bases_S2098C2, 2,
  &(vtc_S2098C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2098C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2098C2),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  S2098C1  : S2098C2 {
  int s2098c1f0[13];
  virtual  ~S2098C1(); // _ZN7S2098C1D1Ev
  virtual void  v1(); // _ZN7S2098C12v1Ev
  S2098C1(); // tgen
};
//SIG(1 S2098C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fi[13]}


 S2098C1 ::~S2098C1(){ note_dtor("S2098C1", this);}
void  S2098C1 ::v1(){vfunc_called(this, "_ZN7S2098C12v1Ev");}
S2098C1 ::S2098C1(){ note_ctor("S2098C1", this);} // tgen

static void Test_S2098C1()
{
  extern Class_Descriptor cd_S2098C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,28)];
    init_test(&cd_S2098C1, buf);
    S2098C1 *dp, &lv = *(dp=new (buf) S2098C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,108), "sizeof(S2098C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2098C1)");
    check_base_class_offset(lv, (S2098C4*)(S2098C3*)(S2098C2*), 0, "S2098C1");
    check_base_class_offset(lv, (S2098C3*)(S2098C2*), 0, "S2098C1");
    check_base_class_offset(lv, (S2098C2*), 0, "S2098C1");
    check_field_offset(lv, s2098c1f0, ABISELECT(72,56), "S2098C1.s2098c1f0");
    test_class_info(&lv, &cd_S2098C1);
    dp->~S2098C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2098C1(Test_S2098C1, "S2098C1", ABISELECT(128,108));

#else // __cplusplus

extern void _ZN7S2098C1C1Ev();
extern void _ZN7S2098C1D1Ev();
Name_Map name_map_S2098C1[] = {
  NSPAIR(_ZN7S2098C1C1Ev),
  NSPAIR(_ZN7S2098C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2098C4;
extern VTBL_ENTRY _ZTI7S2098C4[];
extern  VTBL_ENTRY _ZTV7S2098C4[];
extern Class_Descriptor cd_S2098C3;
extern VTBL_ENTRY _ZTI7S2098C3[];
extern  VTBL_ENTRY _ZTV7S2098C3[];
extern Class_Descriptor cd_S2098C2;
extern VTBL_ENTRY _ZTI7S2098C2[];
extern  VTBL_ENTRY _ZTV7S2098C2[];
static Base_Class bases_S2098C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2098C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2098C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2098C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2098C1[];
extern void _ZN7S2098C1D1Ev();
extern void _ZN7S2098C1D0Ev();
extern void _ZN7S2098C42v2Ev();
extern void _ZN7S2098C42v3Ev();
extern void _ZN7S2098C42v4Ev();
extern void _ZN7S2098C42v5Ev();
extern void _ZN7S2098C32v6Ev();
extern void _ZN7S2098C32v7Ev();
extern void _ZN7S2098C32v8Ev();
extern void _ZN7S2098C22v9Ev();
extern void _ZN7S2098C23v10Ev();
extern void _ZN7S2098C23v11Ev();
extern void _ZN7S2098C12v1Ev();
static  VTBL_ENTRY vtc_S2098C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2098C1[0]),
  (VTBL_ENTRY)&_ZN7S2098C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2098C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2098C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2098C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2098C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2098C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2098C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2098C1[];
extern  VTBL_ENTRY _ZTV7S2098C1[];
Class_Descriptor cd_S2098C1 = {  "S2098C1", // class name
  bases_S2098C1, 3,
  &(vtc_S2098C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,108), // object size
  NSPAIRA(_ZTI7S2098C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2098C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2099C4  {
  void *s2099c4f0;
  char s2099c4f1;
  int s2099c4f2[4];
  void *s2099c4f3;
  virtual  ~S2099C4(); // _ZN7S2099C4D1Ev
  virtual void  v2(); // _ZN7S2099C42v2Ev
  virtual void  v3(); // _ZN7S2099C42v3Ev
  virtual void  v4(); // _ZN7S2099C42v4Ev
  virtual void  v5(); // _ZN7S2099C42v5Ev
  S2099C4(); // tgen
};
//SIG(-1 S2099C4) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S2099C4 ::~S2099C4(){ note_dtor("S2099C4", this);}
void  S2099C4 ::v2(){vfunc_called(this, "_ZN7S2099C42v2Ev");}
void  S2099C4 ::v3(){vfunc_called(this, "_ZN7S2099C42v3Ev");}
void  S2099C4 ::v4(){vfunc_called(this, "_ZN7S2099C42v4Ev");}
void  S2099C4 ::v5(){vfunc_called(this, "_ZN7S2099C42v5Ev");}
S2099C4 ::S2099C4(){ note_ctor("S2099C4", this);} // tgen

static void Test_S2099C4()
{
  extern Class_Descriptor cd_S2099C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S2099C4, buf);
    S2099C4 *dp, &lv = *(dp=new (buf) S2099C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S2099C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C4)");
    check_field_offset(lv, s2099c4f0, ABISELECT(8,4), "S2099C4.s2099c4f0");
    check_field_offset(lv, s2099c4f1, ABISELECT(16,8), "S2099C4.s2099c4f1");
    check_field_offset(lv, s2099c4f2, ABISELECT(20,12), "S2099C4.s2099c4f2");
    check_field_offset(lv, s2099c4f3, ABISELECT(40,28), "S2099C4.s2099c4f3");
    test_class_info(&lv, &cd_S2099C4);
    dp->~S2099C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C4(Test_S2099C4, "S2099C4", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S2099C4C1Ev();
extern void _ZN7S2099C4D1Ev();
Name_Map name_map_S2099C4[] = {
  NSPAIR(_ZN7S2099C4C1Ev),
  NSPAIR(_ZN7S2099C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2099C4[];
extern void _ZN7S2099C4D1Ev();
extern void _ZN7S2099C4D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
static  VTBL_ENTRY vtc_S2099C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C4[0]),
  (VTBL_ENTRY)&_ZN7S2099C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
Class_Descriptor cd_S2099C4 = {  "S2099C4", // class name
  0,0,//no base classes
  &(vtc_S2099C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S2099C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2099C4),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  S2099C3  : S2099C4 {
  int s2099c3f0[3];
  virtual  ~S2099C3(); // _ZN7S2099C3D1Ev
  virtual void  v6(); // _ZN7S2099C32v6Ev
  virtual void  v7(); // _ZN7S2099C32v7Ev
  virtual void  v8(); // _ZN7S2099C32v8Ev
  S2099C3(); // tgen
};
//SIG(-1 S2099C3) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S2099C3 ::~S2099C3(){ note_dtor("S2099C3", this);}
void  S2099C3 ::v6(){vfunc_called(this, "_ZN7S2099C32v6Ev");}
void  S2099C3 ::v7(){vfunc_called(this, "_ZN7S2099C32v7Ev");}
void  S2099C3 ::v8(){vfunc_called(this, "_ZN7S2099C32v8Ev");}
S2099C3 ::S2099C3(){ note_ctor("S2099C3", this);} // tgen

static void Test_S2099C3()
{
  extern Class_Descriptor cd_S2099C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2099C3, buf);
    S2099C3 *dp, &lv = *(dp=new (buf) S2099C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2099C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C3)");
    check_base_class_offset(lv, (S2099C4*), 0, "S2099C3");
    check_field_offset(lv, s2099c3f0, ABISELECT(48,32), "S2099C3.s2099c3f0");
    test_class_info(&lv, &cd_S2099C3);
    dp->~S2099C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C3(Test_S2099C3, "S2099C3", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2099C3C1Ev();
extern void _ZN7S2099C3D1Ev();
Name_Map name_map_S2099C3[] = {
  NSPAIR(_ZN7S2099C3C1Ev),
  NSPAIR(_ZN7S2099C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2099C4;
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
static Base_Class bases_S2099C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2099C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2099C3[];
extern void _ZN7S2099C3D1Ev();
extern void _ZN7S2099C3D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
extern void _ZN7S2099C32v6Ev();
extern void _ZN7S2099C32v7Ev();
extern void _ZN7S2099C32v8Ev();
static  VTBL_ENTRY vtc_S2099C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C3[0]),
  (VTBL_ENTRY)&_ZN7S2099C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S2099C3[];
extern  VTBL_ENTRY _ZTV7S2099C3[];
Class_Descriptor cd_S2099C3 = {  "S2099C3", // class name
  bases_S2099C3, 1,
  &(vtc_S2099C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2099C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2099C3),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  S2099C2  : S2099C3 {
  int s2099c2f0[3];
  virtual  ~S2099C2(); // _ZN7S2099C2D1Ev
  virtual void  v9(); // _ZN7S2099C22v9Ev
  virtual void  v10(); // _ZN7S2099C23v10Ev
  virtual void  v11(); // _ZN7S2099C23v11Ev
  S2099C2(); // tgen
};
//SIG(-1 S2099C2) C1{ BC2{ BC3{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v8 v9 v10 Fi[3]} vd v1 v2 v3 Fi[3]}


 S2099C2 ::~S2099C2(){ note_dtor("S2099C2", this);}
void  S2099C2 ::v9(){vfunc_called(this, "_ZN7S2099C22v9Ev");}
void  S2099C2 ::v10(){vfunc_called(this, "_ZN7S2099C23v10Ev");}
void  S2099C2 ::v11(){vfunc_called(this, "_ZN7S2099C23v11Ev");}
S2099C2 ::S2099C2(){ note_ctor("S2099C2", this);} // tgen

static void Test_S2099C2()
{
  extern Class_Descriptor cd_S2099C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2099C2, buf);
    S2099C2 *dp, &lv = *(dp=new (buf) S2099C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2099C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C2)");
    check_base_class_offset(lv, (S2099C4*)(S2099C3*), 0, "S2099C2");
    check_base_class_offset(lv, (S2099C3*), 0, "S2099C2");
    check_field_offset(lv, s2099c2f0, ABISELECT(60,44), "S2099C2.s2099c2f0");
    test_class_info(&lv, &cd_S2099C2);
    dp->~S2099C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C2(Test_S2099C2, "S2099C2", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2099C2C1Ev();
extern void _ZN7S2099C2D1Ev();
Name_Map name_map_S2099C2[] = {
  NSPAIR(_ZN7S2099C2C1Ev),
  NSPAIR(_ZN7S2099C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2099C4;
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
extern Class_Descriptor cd_S2099C3;
extern VTBL_ENTRY _ZTI7S2099C3[];
extern  VTBL_ENTRY _ZTV7S2099C3[];
static Base_Class bases_S2099C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2099C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2099C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2099C2[];
extern void _ZN7S2099C2D1Ev();
extern void _ZN7S2099C2D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
extern void _ZN7S2099C32v6Ev();
extern void _ZN7S2099C32v7Ev();
extern void _ZN7S2099C32v8Ev();
extern void _ZN7S2099C22v9Ev();
extern void _ZN7S2099C23v10Ev();
extern void _ZN7S2099C23v11Ev();
static  VTBL_ENTRY vtc_S2099C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C2[0]),
  (VTBL_ENTRY)&_ZN7S2099C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2099C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S2099C2[];
extern  VTBL_ENTRY _ZTV7S2099C2[];
Class_Descriptor cd_S2099C2 = {  "S2099C2", // class name
  bases_S2099C2, 2,
  &(vtc_S2099C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2099C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2099C2),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  S2099C1  : S2099C2 {
  int s2099c1f0[4];
  virtual  ~S2099C1(); // _ZN7S2099C1D1Ev
  virtual void  v1(); // _ZN7S2099C12v1Ev
  S2099C1(); // tgen
};
//SIG(1 S2099C1) C1{ BC2{ BC3{ BC4{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v9 v10 v11 Fi[3]} vd v1 Fi[4]}


 S2099C1 ::~S2099C1(){ note_dtor("S2099C1", this);}
void  S2099C1 ::v1(){vfunc_called(this, "_ZN7S2099C12v1Ev");}
S2099C1 ::S2099C1(){ note_ctor("S2099C1", this);} // tgen

static void Test_S2099C1()
{
  extern Class_Descriptor cd_S2099C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S2099C1, buf);
    S2099C1 *dp, &lv = *(dp=new (buf) S2099C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S2099C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2099C1)");
    check_base_class_offset(lv, (S2099C4*)(S2099C3*)(S2099C2*), 0, "S2099C1");
    check_base_class_offset(lv, (S2099C3*)(S2099C2*), 0, "S2099C1");
    check_base_class_offset(lv, (S2099C2*), 0, "S2099C1");
    check_field_offset(lv, s2099c1f0, ABISELECT(72,56), "S2099C1.s2099c1f0");
    test_class_info(&lv, &cd_S2099C1);
    dp->~S2099C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2099C1(Test_S2099C1, "S2099C1", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN7S2099C1C1Ev();
extern void _ZN7S2099C1D1Ev();
Name_Map name_map_S2099C1[] = {
  NSPAIR(_ZN7S2099C1C1Ev),
  NSPAIR(_ZN7S2099C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2099C4;
extern VTBL_ENTRY _ZTI7S2099C4[];
extern  VTBL_ENTRY _ZTV7S2099C4[];
extern Class_Descriptor cd_S2099C3;
extern VTBL_ENTRY _ZTI7S2099C3[];
extern  VTBL_ENTRY _ZTV7S2099C3[];
extern Class_Descriptor cd_S2099C2;
extern VTBL_ENTRY _ZTI7S2099C2[];
extern  VTBL_ENTRY _ZTV7S2099C2[];
static Base_Class bases_S2099C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2099C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2099C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2099C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2099C1[];
extern void _ZN7S2099C1D1Ev();
extern void _ZN7S2099C1D0Ev();
extern void _ZN7S2099C42v2Ev();
extern void _ZN7S2099C42v3Ev();
extern void _ZN7S2099C42v4Ev();
extern void _ZN7S2099C42v5Ev();
extern void _ZN7S2099C32v6Ev();
extern void _ZN7S2099C32v7Ev();
extern void _ZN7S2099C32v8Ev();
extern void _ZN7S2099C22v9Ev();
extern void _ZN7S2099C23v10Ev();
extern void _ZN7S2099C23v11Ev();
extern void _ZN7S2099C12v1Ev();
static  VTBL_ENTRY vtc_S2099C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2099C1[0]),
  (VTBL_ENTRY)&_ZN7S2099C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2099C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v2Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v3Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v4Ev,
  (VTBL_ENTRY)&_ZN7S2099C42v5Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v6Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v7Ev,
  (VTBL_ENTRY)&_ZN7S2099C32v8Ev,
  (VTBL_ENTRY)&_ZN7S2099C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2099C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2099C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2099C1[];
extern  VTBL_ENTRY _ZTV7S2099C1[];
Class_Descriptor cd_S2099C1 = {  "S2099C1", // class name
  bases_S2099C1, 3,
  &(vtc_S2099C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI7S2099C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2099C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10157C2_nt  {
  virtual  ~S10157C2_nt(); // _ZN11S10157C2_ntD1Ev
  virtual void  v7(); // _ZN11S10157C2_nt2v7Ev
  virtual void  v8(); // _ZN11S10157C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10157C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10157C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10157C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10157C2_nt3v12Ev
  S10157C2_nt(); // tgen
};
//SIG(-1 S10157C2_nt) C1{ vd v1 v2 v3 v4 v5 v6}


 S10157C2_nt ::~S10157C2_nt(){ note_dtor("S10157C2_nt", this);}
void  S10157C2_nt ::v7(){vfunc_called(this, "_ZN11S10157C2_nt2v7Ev");}
void  S10157C2_nt ::v8(){vfunc_called(this, "_ZN11S10157C2_nt2v8Ev");}
void  S10157C2_nt ::v9(){vfunc_called(this, "_ZN11S10157C2_nt2v9Ev");}
void  S10157C2_nt ::v10(){vfunc_called(this, "_ZN11S10157C2_nt3v10Ev");}
void  S10157C2_nt ::v11(){vfunc_called(this, "_ZN11S10157C2_nt3v11Ev");}
void  S10157C2_nt ::v12(){vfunc_called(this, "_ZN11S10157C2_nt3v12Ev");}
S10157C2_nt ::S10157C2_nt(){ note_ctor("S10157C2_nt", this);} // tgen

//skip512 S10157C2_nt

#else // __cplusplus

extern void _ZN11S10157C2_ntC1Ev();
extern void _ZN11S10157C2_ntD1Ev();
Name_Map name_map_S10157C2_nt[] = {
  NSPAIR(_ZN11S10157C2_ntC1Ev),
  NSPAIR(_ZN11S10157C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10157C2_nt[];
extern void _ZN11S10157C2_ntD1Ev();
extern void _ZN11S10157C2_ntD0Ev();
extern void _ZN11S10157C2_nt2v7Ev();
extern void _ZN11S10157C2_nt2v8Ev();
extern void _ZN11S10157C2_nt2v9Ev();
extern void _ZN11S10157C2_nt3v10Ev();
extern void _ZN11S10157C2_nt3v11Ev();
extern void _ZN11S10157C2_nt3v12Ev();
static  VTBL_ENTRY vtc_S10157C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10157C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10157C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI11S10157C2_nt[];
VTBL_ENTRY *P__ZTI11S10157C2_nt = _ZTI11S10157C2_nt; 
extern  VTBL_ENTRY _ZTV11S10157C2_nt[];
Class_Descriptor cd_S10157C2_nt = {  "S10157C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10157C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10157C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10157C2_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  S10157C3_nt  {
  void *s10157c3f0;
  int s10157c3f1;
  void *s10157c3f2;
};
//SIG(-1 S10157C3_nt) C1{ Fp Fi Fp}



//skip512 S10157C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10157C1  : S10157C2_nt {
  char s10157c1f0[128];
  void *s10157c1f1[4];
  int s10157c1f2[2];
  ::S10157C3_nt s10157c1f3;
  int s10157c1f4;
  __tsi64 s10157c1f5;
  virtual  ~S10157C1(); // _ZN8S10157C1D1Ev
  virtual void  v1(); // _ZN8S10157C12v1Ev
  virtual void  v2(); // _ZN8S10157C12v2Ev
  virtual void  v3(); // _ZN8S10157C12v3Ev
  virtual void  v4(); // _ZN8S10157C12v4Ev
  virtual void  v5(); // _ZN8S10157C12v5Ev
  virtual void  v6(); // _ZN8S10157C12v6Ev
  S10157C1(); // tgen
};
//SIG(1 S10157C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12} vd v1 v2 v3 v4 v5 v6 Fc[128] Fp[4] Fi[2] FC3{ Fp Fi Fp} Fi FL}


 S10157C1 ::~S10157C1(){ note_dtor("S10157C1", this);}
void  S10157C1 ::v1(){vfunc_called(this, "_ZN8S10157C12v1Ev");}
void  S10157C1 ::v2(){vfunc_called(this, "_ZN8S10157C12v2Ev");}
void  S10157C1 ::v3(){vfunc_called(this, "_ZN8S10157C12v3Ev");}
void  S10157C1 ::v4(){vfunc_called(this, "_ZN8S10157C12v4Ev");}
void  S10157C1 ::v5(){vfunc_called(this, "_ZN8S10157C12v5Ev");}
void  S10157C1 ::v6(){vfunc_called(this, "_ZN8S10157C12v6Ev");}
S10157C1 ::S10157C1(){ note_ctor("S10157C1", this);} // tgen

static void Test_S10157C1()
{
  extern Class_Descriptor cd_S10157C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,46)];
    init_test(&cd_S10157C1, buf);
    S10157C1 *dp, &lv = *(dp=new (buf) S10157C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,180), "sizeof(S10157C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10157C1)");
    check_base_class_offset(lv, (S10157C2_nt*), 0, "S10157C1");
    check_field_offset(lv, s10157c1f0, ABISELECT(8,4), "S10157C1.s10157c1f0");
    check_field_offset(lv, s10157c1f1, ABISELECT(136,132), "S10157C1.s10157c1f1");
    check_field_offset(lv, s10157c1f2, ABISELECT(168,148), "S10157C1.s10157c1f2");
    check_field_offset(lv, s10157c1f3, ABISELECT(176,156), "S10157C1.s10157c1f3");
    check_field_offset(lv, s10157c1f4, ABISELECT(200,168), "S10157C1.s10157c1f4");
    check_field_offset(lv, s10157c1f5, ABISELECT(208,172), "S10157C1.s10157c1f5");
    test_class_info(&lv, &cd_S10157C1);
    dp->~S10157C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10157C1(Test_S10157C1, "S10157C1", ABISELECT(216,180));

#else // __cplusplus

extern void _ZN8S10157C1C1Ev();
extern void _ZN8S10157C1D1Ev();
Name_Map name_map_S10157C1[] = {
  NSPAIR(_ZN8S10157C1C1Ev),
  NSPAIR(_ZN8S10157C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10157C2_nt;
extern VTBL_ENTRY _ZTI11S10157C2_nt[];
extern  VTBL_ENTRY _ZTV11S10157C2_nt[];
static Base_Class bases_S10157C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10157C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10157C1[];
extern void _ZN8S10157C1D1Ev();
extern void _ZN8S10157C1D0Ev();
extern void _ZN11S10157C2_nt2v7Ev();
extern void _ZN11S10157C2_nt2v8Ev();
extern void _ZN11S10157C2_nt2v9Ev();
extern void _ZN11S10157C2_nt3v10Ev();
extern void _ZN11S10157C2_nt3v11Ev();
extern void _ZN11S10157C2_nt3v12Ev();
extern void _ZN8S10157C12v1Ev();
extern void _ZN8S10157C12v2Ev();
extern void _ZN8S10157C12v3Ev();
extern void _ZN8S10157C12v4Ev();
extern void _ZN8S10157C12v5Ev();
extern void _ZN8S10157C12v6Ev();
static  VTBL_ENTRY vtc_S10157C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10157C1[0]),
  (VTBL_ENTRY)&_ZN8S10157C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10157C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10157C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10157C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10157C1[];
extern  VTBL_ENTRY _ZTV8S10157C1[];
Class_Descriptor cd_S10157C1 = {  "S10157C1", // class name
  bases_S10157C1, 1,
  &(vtc_S10157C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,180), // object size
  NSPAIRA(_ZTI8S10157C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10157C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4382C3_nt  {
  ::S4228C19_nt s4382c3f0;
  int s4382c3f1[2];
  char s4382c3f2;
  virtual  ~S4382C3_nt(); // _ZN10S4382C3_ntD1Ev
  virtual void  v2(); // _ZN10S4382C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4382C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4382C3_nt2v4Ev
  S4382C3_nt(); // tgen
};
//SIG(-1 S4382C3_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4382C3_nt ::~S4382C3_nt(){ note_dtor("S4382C3_nt", this);}
void  S4382C3_nt ::v2(){vfunc_called(this, "_ZN10S4382C3_nt2v2Ev");}
void  S4382C3_nt ::v3(){vfunc_called(this, "_ZN10S4382C3_nt2v3Ev");}
void  S4382C3_nt ::v4(){vfunc_called(this, "_ZN10S4382C3_nt2v4Ev");}
S4382C3_nt ::S4382C3_nt(){ note_ctor("S4382C3_nt", this);} // tgen

//skip512 S4382C3_nt

#else // __cplusplus

extern void _ZN10S4382C3_ntC1Ev();
extern void _ZN10S4382C3_ntD1Ev();
Name_Map name_map_S4382C3_nt[] = {
  NSPAIR(_ZN10S4382C3_ntC1Ev),
  NSPAIR(_ZN10S4382C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
extern void _ZN10S4382C3_ntD1Ev();
extern void _ZN10S4382C3_ntD0Ev();
extern void _ZN10S4382C3_nt2v2Ev();
extern void _ZN10S4382C3_nt2v3Ev();
extern void _ZN10S4382C3_nt2v4Ev();
static  VTBL_ENTRY vtc_S4382C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4382C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4382C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
VTBL_ENTRY *P__ZTI10S4382C3_nt = _ZTI10S4382C3_nt; 
extern  VTBL_ENTRY _ZTV10S4382C3_nt[];
Class_Descriptor cd_S4382C3_nt = {  "S4382C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4382C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S4382C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4382C3_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  S4382C2_nt  : S4382C3_nt {
  void *s4382c2f0;
  virtual void  v5(); // _ZN10S4382C2_nt2v5Ev
  virtual void  v6(); // _ZN10S4382C2_nt2v6Ev
  ~S4382C2_nt(); // tgen
  S4382C2_nt(); // tgen
};
//SIG(-1 S4382C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4382C2_nt ::v5(){vfunc_called(this, "_ZN10S4382C2_nt2v5Ev");}
void  S4382C2_nt ::v6(){vfunc_called(this, "_ZN10S4382C2_nt2v6Ev");}
S4382C2_nt ::~S4382C2_nt(){ note_dtor("S4382C2_nt", this);} // tgen
S4382C2_nt ::S4382C2_nt(){ note_ctor("S4382C2_nt", this);} // tgen

//skip512 S4382C2_nt

#else // __cplusplus

extern void _ZN10S4382C2_ntC1Ev();
extern void _ZN10S4382C2_ntD1Ev();
Name_Map name_map_S4382C2_nt[] = {
  NSPAIR(_ZN10S4382C2_ntC1Ev),
  NSPAIR(_ZN10S4382C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4382C3_nt;
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
extern  VTBL_ENTRY _ZTV10S4382C3_nt[];
static Base_Class bases_S4382C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4382C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4382C2_nt[];
extern void _ZN10S4382C2_ntD1Ev();
extern void _ZN10S4382C2_ntD0Ev();
extern void _ZN10S4382C3_nt2v2Ev();
extern void _ZN10S4382C3_nt2v3Ev();
extern void _ZN10S4382C3_nt2v4Ev();
extern void _ZN10S4382C2_nt2v5Ev();
extern void _ZN10S4382C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S4382C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4382C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4382C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S4382C2_nt[];
VTBL_ENTRY *P__ZTI10S4382C2_nt = _ZTI10S4382C2_nt; 
extern  VTBL_ENTRY _ZTV10S4382C2_nt[];
Class_Descriptor cd_S4382C2_nt = {  "S4382C2_nt", // class name
  bases_S4382C2_nt, 1,
  &(vtc_S4382C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4382C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4382C2_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  S4382C1  : S4382C2_nt {
  ::S4228C44 s4382c1f0;
  ::S4228C19_nt s4382c1f1;
  virtual void  v1(); // _ZN7S4382C12v1Ev
  ~S4382C1(); // tgen
  S4382C1(); // tgen
};
//SIG(1 S4382C1) C1{ BC2{ BC3{ vd v2 v3 v4 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v5 v6 Fp} v1 FC6{ m Fp Fi[2] FC7{ m}} FC4}


void  S4382C1 ::v1(){vfunc_called(this, "_ZN7S4382C12v1Ev");}
S4382C1 ::~S4382C1(){ note_dtor("S4382C1", this);} // tgen
S4382C1 ::S4382C1(){ note_ctor("S4382C1", this);} // tgen

static void Test_S4382C1()
{
  extern Class_Descriptor cd_S4382C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S4382C1, buf);
    S4382C1 *dp, &lv = *(dp=new (buf) S4382C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S4382C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4382C1)");
    check_base_class_offset(lv, (S4382C3_nt*)(S4382C2_nt*), 0, "S4382C1");
    check_base_class_offset(lv, (S4382C2_nt*), 0, "S4382C1");
    check_field_offset(lv, s4382c1f0, ABISELECT(48,32), "S4382C1.s4382c1f0");
    check_field_offset(lv, s4382c1f1, ABISELECT(72,48), "S4382C1.s4382c1f1");
    test_class_info(&lv, &cd_S4382C1);
    dp->~S4382C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4382C1(Test_S4382C1, "S4382C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S4382C1C1Ev();
extern void _ZN7S4382C1D1Ev();
Name_Map name_map_S4382C1[] = {
  NSPAIR(_ZN7S4382C1C1Ev),
  NSPAIR(_ZN7S4382C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4382C3_nt;
extern VTBL_ENTRY _ZTI10S4382C3_nt[];
extern  VTBL_ENTRY _ZTV10S4382C3_nt[];
extern Class_Descriptor cd_S4382C2_nt;
extern VTBL_ENTRY _ZTI10S4382C2_nt[];
extern  VTBL_ENTRY _ZTV10S4382C2_nt[];
static Base_Class bases_S4382C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4382C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4382C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4382C1[];
extern void _ZN7S4382C1D1Ev();
extern void _ZN7S4382C1D0Ev();
extern void _ZN10S4382C3_nt2v2Ev();
extern void _ZN10S4382C3_nt2v3Ev();
extern void _ZN10S4382C3_nt2v4Ev();
extern void _ZN10S4382C2_nt2v5Ev();
extern void _ZN10S4382C2_nt2v6Ev();
extern void _ZN7S4382C12v1Ev();
static  VTBL_ENTRY vtc_S4382C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4382C1[0]),
  (VTBL_ENTRY)&_ZN7S4382C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4382C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4382C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4382C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN7S4382C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4382C1[];
extern  VTBL_ENTRY _ZTV7S4382C1[];
Class_Descriptor cd_S4382C1 = {  "S4382C1", // class name
  bases_S4382C1, 2,
  &(vtc_S4382C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S4382C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4382C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4727C3  {
  ::S4228C19_nt s4727c3f0;
  int s4727c3f1[2];
  char s4727c3f2;
  virtual  ~S4727C3(); // _ZN7S4727C3D1Ev
  virtual void  v3(); // _ZN7S4727C32v3Ev
  virtual void  v4(); // _ZN7S4727C32v4Ev
  virtual void  v5(); // _ZN7S4727C32v5Ev
  S4727C3(); // tgen
};
//SIG(-1 S4727C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4727C3 ::~S4727C3(){ note_dtor("S4727C3", this);}
void  S4727C3 ::v3(){vfunc_called(this, "_ZN7S4727C32v3Ev");}
void  S4727C3 ::v4(){vfunc_called(this, "_ZN7S4727C32v4Ev");}
void  S4727C3 ::v5(){vfunc_called(this, "_ZN7S4727C32v5Ev");}
S4727C3 ::S4727C3(){ note_ctor("S4727C3", this);} // tgen

static void Test_S4727C3()
{
  extern Class_Descriptor cd_S4727C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4727C3, buf);
    S4727C3 *dp, &lv = *(dp=new (buf) S4727C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4727C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4727C3)");
    check_field_offset(lv, s4727c3f0, ABISELECT(8,4), "S4727C3.s4727c3f0");
    check_field_offset(lv, s4727c3f1, ABISELECT(24,16), "S4727C3.s4727c3f1");
    check_field_offset(lv, s4727c3f2, ABISELECT(32,24), "S4727C3.s4727c3f2");
    test_class_info(&lv, &cd_S4727C3);
    dp->~S4727C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4727C3(Test_S4727C3, "S4727C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4727C3C1Ev();
extern void _ZN7S4727C3D1Ev();
Name_Map name_map_S4727C3[] = {
  NSPAIR(_ZN7S4727C3C1Ev),
  NSPAIR(_ZN7S4727C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4727C3[];
extern void _ZN7S4727C3D1Ev();
extern void _ZN7S4727C3D0Ev();
extern void _ZN7S4727C32v3Ev();
extern void _ZN7S4727C32v4Ev();
extern void _ZN7S4727C32v5Ev();
static  VTBL_ENTRY vtc_S4727C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4727C3[0]),
  (VTBL_ENTRY)&_ZN7S4727C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4727C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4727C3[];
extern  VTBL_ENTRY _ZTV7S4727C3[];
Class_Descriptor cd_S4727C3 = {  "S4727C3", // class name
  0,0,//no base classes
  &(vtc_S4727C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4727C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4727C3),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  S4727C2  : S4727C3 {
  void *s4727c2f0;
  virtual void  v6(); // _ZN7S4727C22v6Ev
  virtual void  v7(); // _ZN7S4727C22v7Ev
  ~S4727C2(); // tgen
  S4727C2(); // tgen
};
//SIG(-1 S4727C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4727C2 ::v6(){vfunc_called(this, "_ZN7S4727C22v6Ev");}
void  S4727C2 ::v7(){vfunc_called(this, "_ZN7S4727C22v7Ev");}
S4727C2 ::~S4727C2(){ note_dtor("S4727C2", this);} // tgen
S4727C2 ::S4727C2(){ note_ctor("S4727C2", this);} // tgen

static void Test_S4727C2()
{
  extern Class_Descriptor cd_S4727C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4727C2, buf);
    S4727C2 *dp, &lv = *(dp=new (buf) S4727C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4727C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4727C2)");
    check_base_class_offset(lv, (S4727C3*), 0, "S4727C2");
    check_field_offset(lv, s4727c2f0, ABISELECT(40,28), "S4727C2.s4727c2f0");
    test_class_info(&lv, &cd_S4727C2);
    dp->~S4727C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4727C2(Test_S4727C2, "S4727C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4727C2C1Ev();
extern void _ZN7S4727C2D1Ev();
Name_Map name_map_S4727C2[] = {
  NSPAIR(_ZN7S4727C2C1Ev),
  NSPAIR(_ZN7S4727C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4727C3;
extern VTBL_ENTRY _ZTI7S4727C3[];
extern  VTBL_ENTRY _ZTV7S4727C3[];
static Base_Class bases_S4727C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4727C2[];
extern void _ZN7S4727C2D1Ev();
extern void _ZN7S4727C2D0Ev();
extern void _ZN7S4727C32v3Ev();
extern void _ZN7S4727C32v4Ev();
extern void _ZN7S4727C32v5Ev();
extern void _ZN7S4727C22v6Ev();
extern void _ZN7S4727C22v7Ev();
static  VTBL_ENTRY vtc_S4727C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4727C2[0]),
  (VTBL_ENTRY)&_ZN7S4727C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4727C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4727C2[];
extern  VTBL_ENTRY _ZTV7S4727C2[];
Class_Descriptor cd_S4727C2 = {  "S4727C2", // class name
  bases_S4727C2, 1,
  &(vtc_S4727C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4727C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4727C2),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  S4727C6_nt  {
  void *s4727c6f0;
  int s4727c6f1[5];
  void  mf4727c6(); // _ZN10S4727C6_nt8mf4727c6Ev
  virtual  ~S4727C6_nt(); // _ZN10S4727C6_ntD1Ev
  S4727C6_nt(); // tgen
};
//SIG(-1 S4727C6_nt) C1{ vd m Fp Fi[5]}


void  S4727C6_nt ::mf4727c6(){}
 S4727C6_nt ::~S4727C6_nt(){ note_dtor("S4727C6_nt", this);}
S4727C6_nt ::S4727C6_nt(){ note_ctor("S4727C6_nt", this);} // tgen

//skip512 S4727C6_nt

#else // __cplusplus

extern void _ZN10S4727C6_ntC1Ev();
extern void _ZN10S4727C6_ntD1Ev();
Name_Map name_map_S4727C6_nt[] = {
  NSPAIR(_ZN10S4727C6_ntC1Ev),
  NSPAIR(_ZN10S4727C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4727C6_nt[];
extern void _ZN10S4727C6_ntD1Ev();
extern void _ZN10S4727C6_ntD0Ev();
static  VTBL_ENTRY vtc_S4727C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4727C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S4727C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4727C6_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S4727C6_nt[];
VTBL_ENTRY *P__ZTI10S4727C6_nt = _ZTI10S4727C6_nt; 
extern  VTBL_ENTRY _ZTV10S4727C6_nt[];
Class_Descriptor cd_S4727C6_nt = {  "S4727C6_nt", // class name
  0,0,//no base classes
  &(vtc_S4727C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S4727C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4727C6_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  S4727C1  : S4727C2 , S4727C6_nt {
  virtual  ~S4727C1(); // _ZN7S4727C1D1Ev
  virtual void  v1(); // _ZN7S4727C12v1Ev
  virtual void  v2(); // _ZN7S4727C12v2Ev
  S4727C1(); // tgen
};
//SIG(1 S4727C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} BC6{ vd m Fp Fi[5]} vd v1 v2}


 S4727C1 ::~S4727C1(){ note_dtor("S4727C1", this);}
void  S4727C1 ::v1(){vfunc_called(this, "_ZN7S4727C12v1Ev");}
void  S4727C1 ::v2(){vfunc_called(this, "_ZN7S4727C12v2Ev");}
S4727C1 ::S4727C1(){ note_ctor("S4727C1", this);} // tgen

static void Test_S4727C1()
{
  extern Class_Descriptor cd_S4727C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S4727C1, buf);
    S4727C1 *dp, &lv = *(dp=new (buf) S4727C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S4727C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4727C1)");
    check_base_class_offset(lv, (S4727C3*)(S4727C2*), 0, "S4727C1");
    check_base_class_offset(lv, (S4727C2*), 0, "S4727C1");
    check_base_class_offset(lv, (S4727C6_nt*), ABISELECT(48,32), "S4727C1");
    test_class_info(&lv, &cd_S4727C1);
    dp->~S4727C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4727C1(Test_S4727C1, "S4727C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN7S4727C1C1Ev();
extern void _ZN7S4727C1D1Ev();
Name_Map name_map_S4727C1[] = {
  NSPAIR(_ZN7S4727C1C1Ev),
  NSPAIR(_ZN7S4727C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4727C3;
extern VTBL_ENTRY _ZTI7S4727C3[];
extern  VTBL_ENTRY _ZTV7S4727C3[];
extern Class_Descriptor cd_S4727C2;
extern VTBL_ENTRY _ZTI7S4727C2[];
extern  VTBL_ENTRY _ZTV7S4727C2[];
extern Class_Descriptor cd_S4727C6_nt;
extern VTBL_ENTRY _ZTI10S4727C6_nt[];
extern  VTBL_ENTRY _ZTV10S4727C6_nt[];
static Base_Class bases_S4727C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4727C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4727C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4727C6_nt,    ABISELECT(48,32), //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 _ZTI7S4727C1[];
extern void _ZN7S4727C1D1Ev();
extern void _ZN7S4727C1D0Ev();
extern void _ZN7S4727C32v3Ev();
extern void _ZN7S4727C32v4Ev();
extern void _ZN7S4727C32v5Ev();
extern void _ZN7S4727C22v6Ev();
extern void _ZN7S4727C22v7Ev();
extern void _ZN7S4727C12v1Ev();
extern void _ZN7S4727C12v2Ev();
extern void ABISELECT(_ZThn48_N7S4727C1D1Ev,_ZThn32_N7S4727C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S4727C1D0Ev,_ZThn32_N7S4727C1D0Ev)();
static  VTBL_ENTRY vtc_S4727C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4727C1[0]),
  (VTBL_ENTRY)&_ZN7S4727C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4727C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4727C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4727C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4727C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4727C12v2Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S4727C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S4727C1D1Ev,_ZThn32_N7S4727C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S4727C1D0Ev,_ZThn32_N7S4727C1D0Ev),
};
extern VTBL_ENTRY _ZTI7S4727C1[];
extern  VTBL_ENTRY _ZTV7S4727C1[];
Class_Descriptor cd_S4727C1 = {  "S4727C1", // class name
  bases_S4727C1, 3,
  &(vtc_S4727C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI7S4727C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4727C1),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  S4747C3  {
  ::S4228C19_nt s4747c3f0;
  int s4747c3f1[2];
  char s4747c3f2;
  virtual  ~S4747C3(); // _ZN7S4747C3D1Ev
  virtual void  v3(); // _ZN7S4747C32v3Ev
  virtual void  v4(); // _ZN7S4747C32v4Ev
  virtual void  v5(); // _ZN7S4747C32v5Ev
  S4747C3(); // tgen
};
//SIG(-1 S4747C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4747C3 ::~S4747C3(){ note_dtor("S4747C3", this);}
void  S4747C3 ::v3(){vfunc_called(this, "_ZN7S4747C32v3Ev");}
void  S4747C3 ::v4(){vfunc_called(this, "_ZN7S4747C32v4Ev");}
void  S4747C3 ::v5(){vfunc_called(this, "_ZN7S4747C32v5Ev");}
S4747C3 ::S4747C3(){ note_ctor("S4747C3", this);} // tgen

static void Test_S4747C3()
{
  extern Class_Descriptor cd_S4747C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4747C3, buf);
    S4747C3 *dp, &lv = *(dp=new (buf) S4747C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4747C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4747C3)");
    check_field_offset(lv, s4747c3f0, ABISELECT(8,4), "S4747C3.s4747c3f0");
    check_field_offset(lv, s4747c3f1, ABISELECT(24,16), "S4747C3.s4747c3f1");
    check_field_offset(lv, s4747c3f2, ABISELECT(32,24), "S4747C3.s4747c3f2");
    test_class_info(&lv, &cd_S4747C3);
    dp->~S4747C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4747C3(Test_S4747C3, "S4747C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4747C3C1Ev();
extern void _ZN7S4747C3D1Ev();
Name_Map name_map_S4747C3[] = {
  NSPAIR(_ZN7S4747C3C1Ev),
  NSPAIR(_ZN7S4747C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4747C3[];
extern void _ZN7S4747C3D1Ev();
extern void _ZN7S4747C3D0Ev();
extern void _ZN7S4747C32v3Ev();
extern void _ZN7S4747C32v4Ev();
extern void _ZN7S4747C32v5Ev();
static  VTBL_ENTRY vtc_S4747C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4747C3[0]),
  (VTBL_ENTRY)&_ZN7S4747C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4747C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4747C3[];
extern  VTBL_ENTRY _ZTV7S4747C3[];
Class_Descriptor cd_S4747C3 = {  "S4747C3", // class name
  0,0,//no base classes
  &(vtc_S4747C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4747C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4747C3),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  S4747C2  : S4747C3 {
  void *s4747c2f0;
  virtual void  v6(); // _ZN7S4747C22v6Ev
  virtual void  v7(); // _ZN7S4747C22v7Ev
  ~S4747C2(); // tgen
  S4747C2(); // tgen
};
//SIG(-1 S4747C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4747C2 ::v6(){vfunc_called(this, "_ZN7S4747C22v6Ev");}
void  S4747C2 ::v7(){vfunc_called(this, "_ZN7S4747C22v7Ev");}
S4747C2 ::~S4747C2(){ note_dtor("S4747C2", this);} // tgen
S4747C2 ::S4747C2(){ note_ctor("S4747C2", this);} // tgen

static void Test_S4747C2()
{
  extern Class_Descriptor cd_S4747C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4747C2, buf);
    S4747C2 *dp, &lv = *(dp=new (buf) S4747C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4747C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4747C2)");
    check_base_class_offset(lv, (S4747C3*), 0, "S4747C2");
    check_field_offset(lv, s4747c2f0, ABISELECT(40,28), "S4747C2.s4747c2f0");
    test_class_info(&lv, &cd_S4747C2);
    dp->~S4747C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4747C2(Test_S4747C2, "S4747C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4747C2C1Ev();
extern void _ZN7S4747C2D1Ev();
Name_Map name_map_S4747C2[] = {
  NSPAIR(_ZN7S4747C2C1Ev),
  NSPAIR(_ZN7S4747C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4747C3;
extern VTBL_ENTRY _ZTI7S4747C3[];
extern  VTBL_ENTRY _ZTV7S4747C3[];
static Base_Class bases_S4747C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4747C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4747C2[];
extern void _ZN7S4747C2D1Ev();
extern void _ZN7S4747C2D0Ev();
extern void _ZN7S4747C32v3Ev();
extern void _ZN7S4747C32v4Ev();
extern void _ZN7S4747C32v5Ev();
extern void _ZN7S4747C22v6Ev();
extern void _ZN7S4747C22v7Ev();
static  VTBL_ENTRY vtc_S4747C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4747C2[0]),
  (VTBL_ENTRY)&_ZN7S4747C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4747C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4747C2[];
extern  VTBL_ENTRY _ZTV7S4747C2[];
Class_Descriptor cd_S4747C2 = {  "S4747C2", // class name
  bases_S4747C2, 1,
  &(vtc_S4747C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4747C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4747C2),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  S4747C6_nt  {
  void *s4747c6f0[2];
  void  mf4747c6(); // _ZN10S4747C6_nt8mf4747c6Ev
};
//SIG(-1 S4747C6_nt) C1{ m Fp[2]}


void  S4747C6_nt ::mf4747c6(){}

//skip512 S4747C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4747C1  : S4747C2 {
  ::S4228C19_nt s4747c1f0;
  ::S4747C6_nt s4747c1f1;
  virtual  ~S4747C1(); // _ZN7S4747C1D1Ev
  virtual void  v1(); // _ZN7S4747C12v1Ev
  virtual void  v2(); // _ZN7S4747C12v2Ev
  S4747C1(); // tgen
};
//SIG(1 S4747C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 FC4 FC6{ m Fp[2]}}


 S4747C1 ::~S4747C1(){ note_dtor("S4747C1", this);}
void  S4747C1 ::v1(){vfunc_called(this, "_ZN7S4747C12v1Ev");}
void  S4747C1 ::v2(){vfunc_called(this, "_ZN7S4747C12v2Ev");}
S4747C1 ::S4747C1(){ note_ctor("S4747C1", this);} // tgen

static void Test_S4747C1()
{
  extern Class_Descriptor cd_S4747C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S4747C1, buf);
    S4747C1 *dp, &lv = *(dp=new (buf) S4747C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S4747C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4747C1)");
    check_base_class_offset(lv, (S4747C3*)(S4747C2*), 0, "S4747C1");
    check_base_class_offset(lv, (S4747C2*), 0, "S4747C1");
    check_field_offset(lv, s4747c1f0, ABISELECT(48,32), "S4747C1.s4747c1f0");
    check_field_offset(lv, s4747c1f1, ABISELECT(64,44), "S4747C1.s4747c1f1");
    test_class_info(&lv, &cd_S4747C1);
    dp->~S4747C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4747C1(Test_S4747C1, "S4747C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S4747C1C1Ev();
extern void _ZN7S4747C1D1Ev();
Name_Map name_map_S4747C1[] = {
  NSPAIR(_ZN7S4747C1C1Ev),
  NSPAIR(_ZN7S4747C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4747C3;
extern VTBL_ENTRY _ZTI7S4747C3[];
extern  VTBL_ENTRY _ZTV7S4747C3[];
extern Class_Descriptor cd_S4747C2;
extern VTBL_ENTRY _ZTI7S4747C2[];
extern  VTBL_ENTRY _ZTV7S4747C2[];
static Base_Class bases_S4747C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4747C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4747C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4747C1[];
extern void _ZN7S4747C1D1Ev();
extern void _ZN7S4747C1D0Ev();
extern void _ZN7S4747C32v3Ev();
extern void _ZN7S4747C32v4Ev();
extern void _ZN7S4747C32v5Ev();
extern void _ZN7S4747C22v6Ev();
extern void _ZN7S4747C22v7Ev();
extern void _ZN7S4747C12v1Ev();
extern void _ZN7S4747C12v2Ev();
static  VTBL_ENTRY vtc_S4747C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4747C1[0]),
  (VTBL_ENTRY)&_ZN7S4747C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4747C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4747C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4747C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4747C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4747C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4747C1[];
extern  VTBL_ENTRY _ZTV7S4747C1[];
Class_Descriptor cd_S4747C1 = {  "S4747C1", // class name
  bases_S4747C1, 2,
  &(vtc_S4747C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S4747C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4747C1),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  S12397C4_nt  {
  char s12397c4f0[12];
};
//SIG(-1 S12397C4_nt) C1{ Fc[12]}



//skip512 S12397C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C6_nt  {
  __tsi64 s12397c6f0;
};
//SIG(-1 S12397C6_nt) C1{ FL}



//skip512 S12397C6_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C5  {
  int s12397c5f0;
  char s12397c5f1[4];
  ::S12397C6_nt s12397c5f2;
};
//SIG(-1 S12397C5) C1{ Fi Fc[4] FC2{ FL}}



static void Test_S12397C5()
{
  {
    init_simple_test("S12397C5");
    S12397C5 lv;
    check2(sizeof(lv), 16, "sizeof(S12397C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12397C5)");
    check_field_offset(lv, s12397c5f0, 0, "S12397C5.s12397c5f0");
    check_field_offset(lv, s12397c5f1, 4, "S12397C5.s12397c5f1");
    check_field_offset(lv, s12397c5f2, 8, "S12397C5.s12397c5f2");
  }
}
static Arrange_To_Call_Me vS12397C5(Test_S12397C5, "S12397C5", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12397C1  {
  int s12397c1f0;
  ::S10007C30_nt s12397c1f1;
  ::S12397C4_nt s12397c1f2;
  int s12397c1f3[3];
  ::S12397C5 s12397c1f4;
  int s12397c1f5;
  __tsi64 s12397c1f6;
  int s12397c1f7;
  __tsi64 s12397c1f8;
  int s12397c1f9[2];
};
//SIG(1 S12397C1) 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_S12397C1()
{
  {
    init_simple_test("S12397C1");
    S12397C1 lv;
    check2(sizeof(lv), ABISELECT(120,112), "sizeof(S12397C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12397C1)");
    check_field_offset(lv, s12397c1f0, 0, "S12397C1.s12397c1f0");
    check_field_offset(lv, s12397c1f1, 4, "S12397C1.s12397c1f1");
    check_field_offset(lv, s12397c1f2, 40, "S12397C1.s12397c1f2");
    check_field_offset(lv, s12397c1f3, 52, "S12397C1.s12397c1f3");
    check_field_offset(lv, s12397c1f4, 64, "S12397C1.s12397c1f4");
    check_field_offset(lv, s12397c1f5, 80, "S12397C1.s12397c1f5");
    check_field_offset(lv, s12397c1f6, ABISELECT(88,84), "S12397C1.s12397c1f6");
    check_field_offset(lv, s12397c1f7, ABISELECT(96,92), "S12397C1.s12397c1f7");
    check_field_offset(lv, s12397c1f8, ABISELECT(104,96), "S12397C1.s12397c1f8");
    check_field_offset(lv, s12397c1f9, ABISELECT(112,104), "S12397C1.s12397c1f9");
  }
}
static Arrange_To_Call_Me vS12397C1(Test_S12397C1, "S12397C1", ABISELECT(120,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20197C2  {
  __tsi64 s20197c2f0:16;
  virtual void  v4(); // _ZN8S20197C22v4Ev
  virtual void  v5(); // _ZN8S20197C22v5Ev
  virtual void  v6(); // _ZN8S20197C22v6Ev
  virtual void  v7(); // _ZN8S20197C22v7Ev
  virtual void  v8(); // _ZN8S20197C22v8Ev
  virtual void  v9(); // _ZN8S20197C22v9Ev
  ~S20197C2(); // tgen
  S20197C2(); // tgen
};
//SIG(-1 S20197C2) C1{ v1 v2 v3 v4 v5 v6 FL:16}


void  S20197C2 ::v4(){vfunc_called(this, "_ZN8S20197C22v4Ev");}
void  S20197C2 ::v5(){vfunc_called(this, "_ZN8S20197C22v5Ev");}
void  S20197C2 ::v6(){vfunc_called(this, "_ZN8S20197C22v6Ev");}
void  S20197C2 ::v7(){vfunc_called(this, "_ZN8S20197C22v7Ev");}
void  S20197C2 ::v8(){vfunc_called(this, "_ZN8S20197C22v8Ev");}
void  S20197C2 ::v9(){vfunc_called(this, "_ZN8S20197C22v9Ev");}
S20197C2 ::~S20197C2(){ note_dtor("S20197C2", this);} // tgen
S20197C2 ::S20197C2(){ note_ctor("S20197C2", this);} // tgen

static void Test_S20197C2()
{
  extern Class_Descriptor cd_S20197C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,3)];
    init_test(&cd_S20197C2, buf);
    S20197C2 *dp, &lv = *(dp=new (buf) S20197C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20197C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C2)");
    set_bf_and_test(lv, s20197c2f0, ABISELECT(8,4), 0, 16, 1, "S20197C2");
    set_bf_and_test(lv, s20197c2f0, ABISELECT(8,4), 0, 16, hide_sll(1LL<<15), "S20197C2");
    test_class_info(&lv, &cd_S20197C2);
    dp->~S20197C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C2(Test_S20197C2, "S20197C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20197C2C1Ev();
extern void _ZN8S20197C2D1Ev();
Name_Map name_map_S20197C2[] = {
  NSPAIR(_ZN8S20197C2C1Ev),
  NSPAIR(_ZN8S20197C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20197C2[];
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
static  VTBL_ENTRY vtc_S20197C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C2[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
};
extern VTBL_ENTRY _ZTI8S20197C2[];
extern  VTBL_ENTRY _ZTV8S20197C2[];
Class_Descriptor cd_S20197C2 = {  "S20197C2", // class name
  0,0,//no base classes
  &(vtc_S20197C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20197C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20197C2),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  S20197C3  : virtual S20197C2 {
  virtual void  v10(); // _ZN8S20197C33v10Ev
  virtual void  v11(); // _ZN8S20197C33v11Ev
  ~S20197C3(); // tgen
  S20197C3(); // tgen
};
//SIG(-1 S20197C3) C1{ VBC2{ v3 v4 v5 v6 v7 v8 FL:16} v1 v2}


void  S20197C3 ::v10(){vfunc_called(this, "_ZN8S20197C33v10Ev");}
void  S20197C3 ::v11(){vfunc_called(this, "_ZN8S20197C33v11Ev");}
S20197C3 ::~S20197C3(){ note_dtor("S20197C3", this);} // tgen
S20197C3 ::S20197C3(){ note_ctor("S20197C3", this);} // tgen

static void Test_S20197C3()
{
  extern Class_Descriptor cd_S20197C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,4)];
    init_test(&cd_S20197C3, buf);
    S20197C3 *dp, &lv = *(dp=new (buf) S20197C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20197C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C3)");
    check_base_class_offset(lv, (S20197C2*), ABISELECT(8,4), "S20197C3");
    test_class_info(&lv, &cd_S20197C3);
    dp->~S20197C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C3(Test_S20197C3, "S20197C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20197C3C1Ev();
extern void _ZN8S20197C3D1Ev();
Name_Map name_map_S20197C3[] = {
  NSPAIR(_ZN8S20197C3C1Ev),
  NSPAIR(_ZN8S20197C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20197C2;
extern VTBL_ENTRY _ZTI8S20197C2[];
extern  VTBL_ENTRY _ZTV8S20197C2[];
static Base_Class bases_S20197C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20197C2,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20197C3[];
extern void _ZN8S20197C33v10Ev();
extern void _ZN8S20197C33v11Ev();
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
static  VTBL_ENTRY vtc_S20197C3[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20197C33v11Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
};
extern VTBL_ENTRY _ZTV8S20197C3[];
static  VTT_ENTRY vtt_S20197C3[] = {
  {&(_ZTV8S20197C3[3]),  3,19},
  {&(_ZTV8S20197C3[13]),  13,19},
};
extern VTBL_ENTRY _ZTI8S20197C3[];
extern  VTBL_ENTRY _ZTV8S20197C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20197C3[];
Class_Descriptor cd_S20197C3 = {  "S20197C3", // class name
  bases_S20197C3, 1,
  &(vtc_S20197C3[0]), // expected_vtbl_contents
  &(vtt_S20197C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20197C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20197C3),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20197C3),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  S20197C4  {
  __tsi64 s20197c4f0[6];
  virtual void  v12(); // _ZN8S20197C43v12Ev
  virtual void  v13(); // _ZN8S20197C43v13Ev
  ~S20197C4(); // tgen
  S20197C4(); // tgen
};
//SIG(-1 S20197C4) C1{ v1 v2 FL[6]}


void  S20197C4 ::v12(){vfunc_called(this, "_ZN8S20197C43v12Ev");}
void  S20197C4 ::v13(){vfunc_called(this, "_ZN8S20197C43v13Ev");}
S20197C4 ::~S20197C4(){ note_dtor("S20197C4", this);} // tgen
S20197C4 ::S20197C4(){ note_ctor("S20197C4", this);} // tgen

static void Test_S20197C4()
{
  extern Class_Descriptor cd_S20197C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,14)];
    init_test(&cd_S20197C4, buf);
    S20197C4 *dp, &lv = *(dp=new (buf) S20197C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S20197C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C4)");
    check_field_offset(lv, s20197c4f0, ABISELECT(8,4), "S20197C4.s20197c4f0");
    test_class_info(&lv, &cd_S20197C4);
    dp->~S20197C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C4(Test_S20197C4, "S20197C4", ABISELECT(56,52));

#else // __cplusplus

extern void _ZN8S20197C4C1Ev();
extern void _ZN8S20197C4D1Ev();
Name_Map name_map_S20197C4[] = {
  NSPAIR(_ZN8S20197C4C1Ev),
  NSPAIR(_ZN8S20197C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20197C4[];
extern void _ZN8S20197C43v12Ev();
extern void _ZN8S20197C43v13Ev();
static  VTBL_ENTRY vtc_S20197C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C4[0]),
  (VTBL_ENTRY)&_ZN8S20197C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20197C43v13Ev,
};
extern VTBL_ENTRY _ZTI8S20197C4[];
extern  VTBL_ENTRY _ZTV8S20197C4[];
Class_Descriptor cd_S20197C4 = {  "S20197C4", // class name
  0,0,//no base classes
  &(vtc_S20197C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,52), // object size
  NSPAIRA(_ZTI8S20197C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20197C4),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  S20197C1  : virtual S20197C2 , virtual S20197C3 , S20197C4 {
  void *s20197c1f0;
  __tsi64 s20197c1f1;
  virtual void  v1(); // _ZN8S20197C12v1Ev
  virtual void  v2(); // _ZN8S20197C12v2Ev
  virtual void  v3(); // _ZN8S20197C12v3Ev
  ~S20197C1(); // tgen
  S20197C1(); // tgen
};
//SIG(1 S20197C1) C1{ VBC2{ v4 v5 v6 v7 v8 v9 FL:16} VBC3{ VBC2 v10 v11} BC4{ v12 v13 FL[6]} v1 v2 v3 Fp FL}


void  S20197C1 ::v1(){vfunc_called(this, "_ZN8S20197C12v1Ev");}
void  S20197C1 ::v2(){vfunc_called(this, "_ZN8S20197C12v2Ev");}
void  S20197C1 ::v3(){vfunc_called(this, "_ZN8S20197C12v3Ev");}
S20197C1 ::~S20197C1(){ note_dtor("S20197C1", this);} // tgen
S20197C1 ::S20197C1(){ note_ctor("S20197C1", this);} // tgen

static void Test_S20197C1()
{
  extern Class_Descriptor cd_S20197C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,20)];
    init_test(&cd_S20197C1, buf);
    S20197C1 *dp, &lv = *(dp=new (buf) S20197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S20197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20197C1)");
    check_base_class_offset(lv, (S20197C2*), ABISELECT(72,64), "S20197C1");
    check_base_class_offset(lv, (S20197C2*)(S20197C3*), ABISELECT(72,64), "S20197C1");
    check_base_class_offset(lv, (S20197C3*), ABISELECT(88,72), "S20197C1");
    check_base_class_offset(lv, (S20197C4*), 0, "S20197C1");
    check_field_offset(lv, s20197c1f0, ABISELECT(56,52), "S20197C1.s20197c1f0");
    check_field_offset(lv, s20197c1f1, ABISELECT(64,56), "S20197C1.s20197c1f1");
    test_class_info(&lv, &cd_S20197C1);
    dp->~S20197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20197C1(Test_S20197C1, "S20197C1", ABISELECT(96,76));

#else // __cplusplus

extern void _ZN8S20197C1C1Ev();
extern void _ZN8S20197C1D1Ev();
Name_Map name_map_S20197C1[] = {
  NSPAIR(_ZN8S20197C1C1Ev),
  NSPAIR(_ZN8S20197C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20197C2;
extern VTBL_ENTRY _ZTI8S20197C2[];
extern  VTBL_ENTRY _ZTV8S20197C2[];
extern Class_Descriptor cd_S20197C3;
extern VTBL_ENTRY _ZTI8S20197C3[];
extern  VTBL_ENTRY _ZTV8S20197C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20197C3[];
extern Class_Descriptor cd_S20197C4;
extern VTBL_ENTRY _ZTI8S20197C4[];
extern  VTBL_ENTRY _ZTV8S20197C4[];
static Base_Class bases_S20197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20197C2,    ABISELECT(72,64), //bcp->offset
    9, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20197C3,    ABISELECT(88,72), //bcp->offset
    23, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20197C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20197C1[];
extern void _ZN8S20197C43v12Ev();
extern void _ZN8S20197C43v13Ev();
extern void _ZN8S20197C12v1Ev();
extern void _ZN8S20197C12v2Ev();
extern void _ZN8S20197C12v3Ev();
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
extern void _ZN8S20197C33v10Ev();
extern void _ZN8S20197C33v11Ev();
static  VTBL_ENTRY vtc_S20197C1[] = {
  ABISELECT(88,72),
  ABISELECT(72,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C1[0]),
  (VTBL_ENTRY)&_ZN8S20197C43v12Ev,
  (VTBL_ENTRY)&_ZN8S20197C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20197C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20197C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20197C12v3Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-64),
  (VTBL_ENTRY)&(_ZTI8S20197C1[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
  0,
  0,
  ABISELECT(-16,-8),
  ABISELECT(-88,-72),
  (VTBL_ENTRY)&(_ZTI8S20197C1[0]),
  (VTBL_ENTRY)&_ZN8S20197C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20197C33v11Ev,
};
extern VTBL_ENTRY _ZTV8S20197C1[];
extern void _ZN8S20197C33v10Ev();
extern void _ZN8S20197C33v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20197C3__8S20197C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20197C33v11Ev,
};
extern void _ZN8S20197C22v4Ev();
extern void _ZN8S20197C22v5Ev();
extern void _ZN8S20197C22v6Ev();
extern void _ZN8S20197C22v7Ev();
extern void _ZN8S20197C22v8Ev();
extern void _ZN8S20197C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20197C2__8S20197C3__8S20197C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20197C3[0]),
  (VTBL_ENTRY)&_ZN8S20197C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20197C22v9Ev,
};
static  VTT_ENTRY vtt_S20197C1[] = {
  {&(_ZTV8S20197C1[4]),  4,30},
  {&(_ZTV8S20197C1[17]),  17,30},
  {&(_ZTV8S20197C1[28]),  28,30},
  {&(_tg__ZTV8S20197C3__8S20197C1[3]),  3,5},
  {&(_tg__ZTV8S20197C2__8S20197C3__8S20197C1[8]),  8,14},
};
extern VTBL_ENTRY _ZTI8S20197C1[];
extern  VTBL_ENTRY _ZTV8S20197C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20197C1[];
Class_Descriptor cd_S20197C1 = {  "S20197C1", // class name
  bases_S20197C1, 3,
  &(vtc_S20197C1[0]), // expected_vtbl_contents
  &(vtt_S20197C1[0]), // expected_vtt_contents
  ABISELECT(96,76), // object size
  NSPAIRA(_ZTI8S20197C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20197C1),30, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20197C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9654C2  {
  ::S4228C19_nt s9654c2f0;
  int s9654c2f1[2];
  char s9654c2f2;
  virtual  ~S9654C2(); // _ZN7S9654C2D1Ev
  virtual void  v4(); // _ZN7S9654C22v4Ev
  virtual void  v5(); // _ZN7S9654C22v5Ev
  virtual void  v6(); // _ZN7S9654C22v6Ev
  S9654C2(); // tgen
};
//SIG(-1 S9654C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9654C2 ::~S9654C2(){ note_dtor("S9654C2", this);}
void  S9654C2 ::v4(){vfunc_called(this, "_ZN7S9654C22v4Ev");}
void  S9654C2 ::v5(){vfunc_called(this, "_ZN7S9654C22v5Ev");}
void  S9654C2 ::v6(){vfunc_called(this, "_ZN7S9654C22v6Ev");}
S9654C2 ::S9654C2(){ note_ctor("S9654C2", this);} // tgen

static void Test_S9654C2()
{
  extern Class_Descriptor cd_S9654C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9654C2, buf);
    S9654C2 *dp, &lv = *(dp=new (buf) S9654C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9654C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9654C2)");
    check_field_offset(lv, s9654c2f0, ABISELECT(8,4), "S9654C2.s9654c2f0");
    check_field_offset(lv, s9654c2f1, ABISELECT(24,16), "S9654C2.s9654c2f1");
    check_field_offset(lv, s9654c2f2, ABISELECT(32,24), "S9654C2.s9654c2f2");
    test_class_info(&lv, &cd_S9654C2);
    dp->~S9654C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9654C2(Test_S9654C2, "S9654C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9654C2C1Ev();
extern void _ZN7S9654C2D1Ev();
Name_Map name_map_S9654C2[] = {
  NSPAIR(_ZN7S9654C2C1Ev),
  NSPAIR(_ZN7S9654C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9654C2[];
extern void _ZN7S9654C2D1Ev();
extern void _ZN7S9654C2D0Ev();
extern void _ZN7S9654C22v4Ev();
extern void _ZN7S9654C22v5Ev();
extern void _ZN7S9654C22v6Ev();
static  VTBL_ENTRY vtc_S9654C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9654C2[0]),
  (VTBL_ENTRY)&_ZN7S9654C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9654C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9654C2[];
extern  VTBL_ENTRY _ZTV7S9654C2[];
Class_Descriptor cd_S9654C2 = {  "S9654C2", // class name
  0,0,//no base classes
  &(vtc_S9654C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9654C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9654C2),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  S9654C5  {
  virtual  ~S9654C5(); // _ZN7S9654C5D1Ev
  virtual void  v7(); // _ZN7S9654C52v7Ev
  S9654C5(); // tgen
};
//SIG(-1 S9654C5) C1{ vd v1}


 S9654C5 ::~S9654C5(){ note_dtor("S9654C5", this);}
void  S9654C5 ::v7(){vfunc_called(this, "_ZN7S9654C52v7Ev");}
S9654C5 ::S9654C5(){ note_ctor("S9654C5", this);} // tgen

static void Test_S9654C5()
{
  extern Class_Descriptor cd_S9654C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9654C5, buf);
    S9654C5 *dp, &lv = *(dp=new (buf) S9654C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9654C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9654C5)");
    test_class_info(&lv, &cd_S9654C5);
    dp->~S9654C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9654C5(Test_S9654C5, "S9654C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9654C5C1Ev();
extern void _ZN7S9654C5D1Ev();
Name_Map name_map_S9654C5[] = {
  NSPAIR(_ZN7S9654C5C1Ev),
  NSPAIR(_ZN7S9654C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9654C5[];
extern void _ZN7S9654C5D1Ev();
extern void _ZN7S9654C5D0Ev();
extern void _ZN7S9654C52v7Ev();
static  VTBL_ENTRY vtc_S9654C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9654C5[0]),
  (VTBL_ENTRY)&_ZN7S9654C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9654C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9654C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S9654C5[];
extern  VTBL_ENTRY _ZTV7S9654C5[];
Class_Descriptor cd_S9654C5 = {  "S9654C5", // class name
  0,0,//no base classes
  &(vtc_S9654C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9654C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9654C5),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  S9654C1  : S9654C2 , S9654C5 {
  void *s9654c1f0;
  int s9654c1f1;
  void *s9654c1f2[2];
  virtual  ~S9654C1(); // _ZN7S9654C1D1Ev
  virtual void  v1(); // _ZN7S9654C12v1Ev
  virtual void  v2(); // _ZN7S9654C12v2Ev
  virtual void  v3(); // _ZN7S9654C12v3Ev
  S9654C1(); // tgen
};
//SIG(1 S9654C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ vd v7} vd v1 v2 v3 Fp Fi Fp[2]}


 S9654C1 ::~S9654C1(){ note_dtor("S9654C1", this);}
void  S9654C1 ::v1(){vfunc_called(this, "_ZN7S9654C12v1Ev");}
void  S9654C1 ::v2(){vfunc_called(this, "_ZN7S9654C12v2Ev");}
void  S9654C1 ::v3(){vfunc_called(this, "_ZN7S9654C12v3Ev");}
S9654C1 ::S9654C1(){ note_ctor("S9654C1", this);} // tgen

static void Test_S9654C1()
{
  extern Class_Descriptor cd_S9654C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S9654C1, buf);
    S9654C1 *dp, &lv = *(dp=new (buf) S9654C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S9654C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9654C1)");
    check_base_class_offset(lv, (S9654C2*), 0, "S9654C1");
    check_base_class_offset(lv, (S9654C5*), ABISELECT(40,28), "S9654C1");
    check_field_offset(lv, s9654c1f0, ABISELECT(48,32), "S9654C1.s9654c1f0");
    check_field_offset(lv, s9654c1f1, ABISELECT(56,36), "S9654C1.s9654c1f1");
    check_field_offset(lv, s9654c1f2, ABISELECT(64,40), "S9654C1.s9654c1f2");
    test_class_info(&lv, &cd_S9654C1);
    dp->~S9654C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9654C1(Test_S9654C1, "S9654C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S9654C1C1Ev();
extern void _ZN7S9654C1D1Ev();
Name_Map name_map_S9654C1[] = {
  NSPAIR(_ZN7S9654C1C1Ev),
  NSPAIR(_ZN7S9654C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9654C2;
extern VTBL_ENTRY _ZTI7S9654C2[];
extern  VTBL_ENTRY _ZTV7S9654C2[];
extern Class_Descriptor cd_S9654C5;
extern VTBL_ENTRY _ZTI7S9654C5[];
extern  VTBL_ENTRY _ZTV7S9654C5[];
static Base_Class bases_S9654C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9654C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9654C5,    ABISELECT(40,28), //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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9654C1[];
extern void _ZN7S9654C1D1Ev();
extern void _ZN7S9654C1D0Ev();
extern void _ZN7S9654C22v4Ev();
extern void _ZN7S9654C22v5Ev();
extern void _ZN7S9654C22v6Ev();
extern void _ZN7S9654C12v1Ev();
extern void _ZN7S9654C12v2Ev();
extern void _ZN7S9654C12v3Ev();
extern void ABISELECT(_ZThn40_N7S9654C1D1Ev,_ZThn28_N7S9654C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S9654C1D0Ev,_ZThn28_N7S9654C1D0Ev)();
extern void _ZN7S9654C52v7Ev();
static  VTBL_ENTRY vtc_S9654C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9654C1[0]),
  (VTBL_ENTRY)&_ZN7S9654C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9654C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9654C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9654C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9654C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9654C12v3Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S9654C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9654C1D1Ev,_ZThn28_N7S9654C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9654C1D0Ev,_ZThn28_N7S9654C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9654C52v7Ev,
};
extern VTBL_ENTRY _ZTI7S9654C1[];
extern  VTBL_ENTRY _ZTV7S9654C1[];
Class_Descriptor cd_S9654C1 = {  "S9654C1", // class name
  bases_S9654C1, 2,
  &(vtc_S9654C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S9654C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9654C1),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  S4507C3  {
  void *s4507c3f0;
  char s4507c3f1;
  int s4507c3f2[4];
  void *s4507c3f3;
  virtual  ~S4507C3(); // _ZN7S4507C3D1Ev
  virtual void  v2(); // _ZN7S4507C32v2Ev
  virtual void  v3(); // _ZN7S4507C32v3Ev
  virtual void  v4(); // _ZN7S4507C32v4Ev
  virtual void  v5(); // _ZN7S4507C32v5Ev
  S4507C3(); // tgen
};
//SIG(-1 S4507C3) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S4507C3 ::~S4507C3(){ note_dtor("S4507C3", this);}
void  S4507C3 ::v2(){vfunc_called(this, "_ZN7S4507C32v2Ev");}
void  S4507C3 ::v3(){vfunc_called(this, "_ZN7S4507C32v3Ev");}
void  S4507C3 ::v4(){vfunc_called(this, "_ZN7S4507C32v4Ev");}
void  S4507C3 ::v5(){vfunc_called(this, "_ZN7S4507C32v5Ev");}
S4507C3 ::S4507C3(){ note_ctor("S4507C3", this);} // tgen

static void Test_S4507C3()
{
  extern Class_Descriptor cd_S4507C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4507C3, buf);
    S4507C3 *dp, &lv = *(dp=new (buf) S4507C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4507C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4507C3)");
    check_field_offset(lv, s4507c3f0, ABISELECT(8,4), "S4507C3.s4507c3f0");
    check_field_offset(lv, s4507c3f1, ABISELECT(16,8), "S4507C3.s4507c3f1");
    check_field_offset(lv, s4507c3f2, ABISELECT(20,12), "S4507C3.s4507c3f2");
    check_field_offset(lv, s4507c3f3, ABISELECT(40,28), "S4507C3.s4507c3f3");
    test_class_info(&lv, &cd_S4507C3);
    dp->~S4507C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4507C3(Test_S4507C3, "S4507C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4507C3C1Ev();
extern void _ZN7S4507C3D1Ev();
Name_Map name_map_S4507C3[] = {
  NSPAIR(_ZN7S4507C3C1Ev),
  NSPAIR(_ZN7S4507C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4507C3[];
extern void _ZN7S4507C3D1Ev();
extern void _ZN7S4507C3D0Ev();
extern void _ZN7S4507C32v2Ev();
extern void _ZN7S4507C32v3Ev();
extern void _ZN7S4507C32v4Ev();
extern void _ZN7S4507C32v5Ev();
static  VTBL_ENTRY vtc_S4507C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4507C3[0]),
  (VTBL_ENTRY)&_ZN7S4507C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4507C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4507C3[];
extern  VTBL_ENTRY _ZTV7S4507C3[];
Class_Descriptor cd_S4507C3 = {  "S4507C3", // class name
  0,0,//no base classes
  &(vtc_S4507C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4507C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4507C3),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  S4507C2  : S4507C3 {
  int s4507c2f0[3];
  virtual  ~S4507C2(); // _ZN7S4507C2D1Ev
  virtual void  v6(); // _ZN7S4507C22v6Ev
  virtual void  v7(); // _ZN7S4507C22v7Ev
  virtual void  v8(); // _ZN7S4507C22v8Ev
  S4507C2(); // tgen
};
//SIG(-1 S4507C2) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S4507C2 ::~S4507C2(){ note_dtor("S4507C2", this);}
void  S4507C2 ::v6(){vfunc_called(this, "_ZN7S4507C22v6Ev");}
void  S4507C2 ::v7(){vfunc_called(this, "_ZN7S4507C22v7Ev");}
void  S4507C2 ::v8(){vfunc_called(this, "_ZN7S4507C22v8Ev");}
S4507C2 ::S4507C2(){ note_ctor("S4507C2", this);} // tgen

static void Test_S4507C2()
{
  extern Class_Descriptor cd_S4507C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4507C2, buf);
    S4507C2 *dp, &lv = *(dp=new (buf) S4507C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4507C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4507C2)");
    check_base_class_offset(lv, (S4507C3*), 0, "S4507C2");
    check_field_offset(lv, s4507c2f0, ABISELECT(48,32), "S4507C2.s4507c2f0");
    test_class_info(&lv, &cd_S4507C2);
    dp->~S4507C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4507C2(Test_S4507C2, "S4507C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4507C2C1Ev();
extern void _ZN7S4507C2D1Ev();
Name_Map name_map_S4507C2[] = {
  NSPAIR(_ZN7S4507C2C1Ev),
  NSPAIR(_ZN7S4507C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4507C3;
extern VTBL_ENTRY _ZTI7S4507C3[];
extern  VTBL_ENTRY _ZTV7S4507C3[];
static Base_Class bases_S4507C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4507C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4507C2[];
extern void _ZN7S4507C2D1Ev();
extern void _ZN7S4507C2D0Ev();
extern void _ZN7S4507C32v2Ev();
extern void _ZN7S4507C32v3Ev();
extern void _ZN7S4507C32v4Ev();
extern void _ZN7S4507C32v5Ev();
extern void _ZN7S4507C22v6Ev();
extern void _ZN7S4507C22v7Ev();
extern void _ZN7S4507C22v8Ev();
static  VTBL_ENTRY vtc_S4507C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4507C2[0]),
  (VTBL_ENTRY)&_ZN7S4507C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4507C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4507C2[];
extern  VTBL_ENTRY _ZTV7S4507C2[];
Class_Descriptor cd_S4507C2 = {  "S4507C2", // class name
  bases_S4507C2, 1,
  &(vtc_S4507C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4507C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4507C2),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  S4507C1  : S4507C2 {
  int s4507c1f0[55];
  char s4507c1f1[12];
  virtual  ~S4507C1(); // _ZN7S4507C1D1Ev
  virtual void  v1(); // _ZN7S4507C12v1Ev
  S4507C1(); // tgen
};
//SIG(1 S4507C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} vd v1 Fi[55] Fc[12]}


 S4507C1 ::~S4507C1(){ note_dtor("S4507C1", this);}
void  S4507C1 ::v1(){vfunc_called(this, "_ZN7S4507C12v1Ev");}
S4507C1 ::S4507C1(){ note_ctor("S4507C1", this);} // tgen

static void Test_S4507C1()
{
  extern Class_Descriptor cd_S4507C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,70)];
    init_test(&cd_S4507C1, buf);
    S4507C1 *dp, &lv = *(dp=new (buf) S4507C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,276), "sizeof(S4507C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4507C1)");
    check_base_class_offset(lv, (S4507C3*)(S4507C2*), 0, "S4507C1");
    check_base_class_offset(lv, (S4507C2*), 0, "S4507C1");
    check_field_offset(lv, s4507c1f0, ABISELECT(60,44), "S4507C1.s4507c1f0");
    check_field_offset(lv, s4507c1f1, ABISELECT(280,264), "S4507C1.s4507c1f1");
    test_class_info(&lv, &cd_S4507C1);
    dp->~S4507C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4507C1(Test_S4507C1, "S4507C1", ABISELECT(296,276));

#else // __cplusplus

extern void _ZN7S4507C1C1Ev();
extern void _ZN7S4507C1D1Ev();
Name_Map name_map_S4507C1[] = {
  NSPAIR(_ZN7S4507C1C1Ev),
  NSPAIR(_ZN7S4507C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4507C3;
extern VTBL_ENTRY _ZTI7S4507C3[];
extern  VTBL_ENTRY _ZTV7S4507C3[];
extern Class_Descriptor cd_S4507C2;
extern VTBL_ENTRY _ZTI7S4507C2[];
extern  VTBL_ENTRY _ZTV7S4507C2[];
static Base_Class bases_S4507C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4507C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4507C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4507C1[];
extern void _ZN7S4507C1D1Ev();
extern void _ZN7S4507C1D0Ev();
extern void _ZN7S4507C32v2Ev();
extern void _ZN7S4507C32v3Ev();
extern void _ZN7S4507C32v4Ev();
extern void _ZN7S4507C32v5Ev();
extern void _ZN7S4507C22v6Ev();
extern void _ZN7S4507C22v7Ev();
extern void _ZN7S4507C22v8Ev();
extern void _ZN7S4507C12v1Ev();
static  VTBL_ENTRY vtc_S4507C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4507C1[0]),
  (VTBL_ENTRY)&_ZN7S4507C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4507C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4507C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4507C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4507C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4507C1[];
extern  VTBL_ENTRY _ZTV7S4507C1[];
Class_Descriptor cd_S4507C1 = {  "S4507C1", // class name
  bases_S4507C1, 2,
  &(vtc_S4507C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,276), // object size
  NSPAIRA(_ZTI7S4507C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4507C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4506C3  {
  void *s4506c3f0;
  char s4506c3f1;
  int s4506c3f2[4];
  void *s4506c3f3;
  virtual  ~S4506C3(); // _ZN7S4506C3D1Ev
  virtual void  v2(); // _ZN7S4506C32v2Ev
  virtual void  v3(); // _ZN7S4506C32v3Ev
  virtual void  v4(); // _ZN7S4506C32v4Ev
  virtual void  v5(); // _ZN7S4506C32v5Ev
  S4506C3(); // tgen
};
//SIG(-1 S4506C3) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S4506C3 ::~S4506C3(){ note_dtor("S4506C3", this);}
void  S4506C3 ::v2(){vfunc_called(this, "_ZN7S4506C32v2Ev");}
void  S4506C3 ::v3(){vfunc_called(this, "_ZN7S4506C32v3Ev");}
void  S4506C3 ::v4(){vfunc_called(this, "_ZN7S4506C32v4Ev");}
void  S4506C3 ::v5(){vfunc_called(this, "_ZN7S4506C32v5Ev");}
S4506C3 ::S4506C3(){ note_ctor("S4506C3", this);} // tgen

static void Test_S4506C3()
{
  extern Class_Descriptor cd_S4506C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4506C3, buf);
    S4506C3 *dp, &lv = *(dp=new (buf) S4506C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4506C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4506C3)");
    check_field_offset(lv, s4506c3f0, ABISELECT(8,4), "S4506C3.s4506c3f0");
    check_field_offset(lv, s4506c3f1, ABISELECT(16,8), "S4506C3.s4506c3f1");
    check_field_offset(lv, s4506c3f2, ABISELECT(20,12), "S4506C3.s4506c3f2");
    check_field_offset(lv, s4506c3f3, ABISELECT(40,28), "S4506C3.s4506c3f3");
    test_class_info(&lv, &cd_S4506C3);
    dp->~S4506C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4506C3(Test_S4506C3, "S4506C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4506C3C1Ev();
extern void _ZN7S4506C3D1Ev();
Name_Map name_map_S4506C3[] = {
  NSPAIR(_ZN7S4506C3C1Ev),
  NSPAIR(_ZN7S4506C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4506C3[];
extern void _ZN7S4506C3D1Ev();
extern void _ZN7S4506C3D0Ev();
extern void _ZN7S4506C32v2Ev();
extern void _ZN7S4506C32v3Ev();
extern void _ZN7S4506C32v4Ev();
extern void _ZN7S4506C32v5Ev();
static  VTBL_ENTRY vtc_S4506C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4506C3[0]),
  (VTBL_ENTRY)&_ZN7S4506C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4506C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4506C3[];
extern  VTBL_ENTRY _ZTV7S4506C3[];
Class_Descriptor cd_S4506C3 = {  "S4506C3", // class name
  0,0,//no base classes
  &(vtc_S4506C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4506C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4506C3),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  S4506C2  : S4506C3 {
  int s4506c2f0[3];
  virtual  ~S4506C2(); // _ZN7S4506C2D1Ev
  virtual void  v6(); // _ZN7S4506C22v6Ev
  virtual void  v7(); // _ZN7S4506C22v7Ev
  virtual void  v8(); // _ZN7S4506C22v8Ev
  S4506C2(); // tgen
};
//SIG(-1 S4506C2) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S4506C2 ::~S4506C2(){ note_dtor("S4506C2", this);}
void  S4506C2 ::v6(){vfunc_called(this, "_ZN7S4506C22v6Ev");}
void  S4506C2 ::v7(){vfunc_called(this, "_ZN7S4506C22v7Ev");}
void  S4506C2 ::v8(){vfunc_called(this, "_ZN7S4506C22v8Ev");}
S4506C2 ::S4506C2(){ note_ctor("S4506C2", this);} // tgen

static void Test_S4506C2()
{
  extern Class_Descriptor cd_S4506C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4506C2, buf);
    S4506C2 *dp, &lv = *(dp=new (buf) S4506C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4506C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4506C2)");
    check_base_class_offset(lv, (S4506C3*), 0, "S4506C2");
    check_field_offset(lv, s4506c2f0, ABISELECT(48,32), "S4506C2.s4506c2f0");
    test_class_info(&lv, &cd_S4506C2);
    dp->~S4506C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4506C2(Test_S4506C2, "S4506C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4506C2C1Ev();
extern void _ZN7S4506C2D1Ev();
Name_Map name_map_S4506C2[] = {
  NSPAIR(_ZN7S4506C2C1Ev),
  NSPAIR(_ZN7S4506C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4506C3;
extern VTBL_ENTRY _ZTI7S4506C3[];
extern  VTBL_ENTRY _ZTV7S4506C3[];
static Base_Class bases_S4506C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4506C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4506C2[];
extern void _ZN7S4506C2D1Ev();
extern void _ZN7S4506C2D0Ev();
extern void _ZN7S4506C32v2Ev();
extern void _ZN7S4506C32v3Ev();
extern void _ZN7S4506C32v4Ev();
extern void _ZN7S4506C32v5Ev();
extern void _ZN7S4506C22v6Ev();
extern void _ZN7S4506C22v7Ev();
extern void _ZN7S4506C22v8Ev();
static  VTBL_ENTRY vtc_S4506C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4506C2[0]),
  (VTBL_ENTRY)&_ZN7S4506C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4506C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S4506C2[];
extern  VTBL_ENTRY _ZTV7S4506C2[];
Class_Descriptor cd_S4506C2 = {  "S4506C2", // class name
  bases_S4506C2, 1,
  &(vtc_S4506C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4506C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4506C2),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  S4506C4_nt  {
  ::S381C11_nt s4506c4f0;
  void  mf4506c4(); // _ZN10S4506C4_nt8mf4506c4Ev
};
//SIG(-1 S4506C4_nt) C1{ m FC2{ m FL}}


void  S4506C4_nt ::mf4506c4(){}

//skip512 S4506C4_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4506C1  : S4506C2 {
  ::S4506C4_nt s4506c1f0;
  virtual void  v1(); // _ZN7S4506C12v1Ev
  ~S4506C1(); // tgen
  S4506C1(); // tgen
};
//SIG(1 S4506C1) C1{ BC2{ BC3{ vd v2 v3 v4 v5 Fp Fc Fi[4] Fp} vd v6 v7 v8 Fi[3]} v1 FC4{ m FC5{ m FL}}}


void  S4506C1 ::v1(){vfunc_called(this, "_ZN7S4506C12v1Ev");}
S4506C1 ::~S4506C1(){ note_dtor("S4506C1", this);} // tgen
S4506C1 ::S4506C1(){ note_ctor("S4506C1", this);} // tgen

static void Test_S4506C1()
{
  extern Class_Descriptor cd_S4506C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S4506C1, buf);
    S4506C1 *dp, &lv = *(dp=new (buf) S4506C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S4506C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4506C1)");
    check_base_class_offset(lv, (S4506C3*)(S4506C2*), 0, "S4506C1");
    check_base_class_offset(lv, (S4506C2*), 0, "S4506C1");
    check_field_offset(lv, s4506c1f0, ABISELECT(64,44), "S4506C1.s4506c1f0");
    test_class_info(&lv, &cd_S4506C1);
    dp->~S4506C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4506C1(Test_S4506C1, "S4506C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S4506C1C1Ev();
extern void _ZN7S4506C1D1Ev();
Name_Map name_map_S4506C1[] = {
  NSPAIR(_ZN7S4506C1C1Ev),
  NSPAIR(_ZN7S4506C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4506C3;
extern VTBL_ENTRY _ZTI7S4506C3[];
extern  VTBL_ENTRY _ZTV7S4506C3[];
extern Class_Descriptor cd_S4506C2;
extern VTBL_ENTRY _ZTI7S4506C2[];
extern  VTBL_ENTRY _ZTV7S4506C2[];
static Base_Class bases_S4506C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4506C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4506C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S4506C1[];
extern void _ZN7S4506C1D1Ev();
extern void _ZN7S4506C1D0Ev();
extern void _ZN7S4506C32v2Ev();
extern void _ZN7S4506C32v3Ev();
extern void _ZN7S4506C32v4Ev();
extern void _ZN7S4506C32v5Ev();
extern void _ZN7S4506C22v6Ev();
extern void _ZN7S4506C22v7Ev();
extern void _ZN7S4506C22v8Ev();
extern void _ZN7S4506C12v1Ev();
static  VTBL_ENTRY vtc_S4506C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4506C1[0]),
  (VTBL_ENTRY)&_ZN7S4506C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4506C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4506C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4506C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4506C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4506C1[];
extern  VTBL_ENTRY _ZTV7S4506C1[];
Class_Descriptor cd_S4506C1 = {  "S4506C1", // class name
  bases_S4506C1, 2,
  &(vtc_S4506C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S4506C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4506C1),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  S18834C1  {
  virtual  ~S18834C1(); // _ZN8S18834C1D1Ev
  virtual void  v1(); // _ZN8S18834C12v1Ev
  virtual void  v2(); // _ZN8S18834C12v2Ev
  virtual void  v3(); // _ZN8S18834C12v3Ev
  virtual void  v4(); // _ZN8S18834C12v4Ev
  virtual void  v5(); // _ZN8S18834C12v5Ev
  virtual void  v6(); // _ZN8S18834C12v6Ev
  virtual void  v7(); // _ZN8S18834C12v7Ev
  virtual void  v8(); // _ZN8S18834C12v8Ev
  virtual void  v9(); // _ZN8S18834C12v9Ev
  virtual void  v10(); // _ZN8S18834C13v10Ev
  virtual void  v11(); // _ZN8S18834C13v11Ev
  virtual void  v12(); // _ZN8S18834C13v12Ev
  virtual void  v13(); // _ZN8S18834C13v13Ev
  virtual void  v14(); // _ZN8S18834C13v14Ev
  virtual void  v15(); // _ZN8S18834C13v15Ev
  virtual void  v16(); // _ZN8S18834C13v16Ev
  virtual void  v17(); // _ZN8S18834C13v17Ev
  virtual void  v18(); // _ZN8S18834C13v18Ev
  virtual void  v19(); // _ZN8S18834C13v19Ev
  virtual void  v20(); // _ZN8S18834C13v20Ev
  S18834C1(); // tgen
};
//SIG(1 S18834C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20}


 S18834C1 ::~S18834C1(){ note_dtor("S18834C1", this);}
void  S18834C1 ::v1(){vfunc_called(this, "_ZN8S18834C12v1Ev");}
void  S18834C1 ::v2(){vfunc_called(this, "_ZN8S18834C12v2Ev");}
void  S18834C1 ::v3(){vfunc_called(this, "_ZN8S18834C12v3Ev");}
void  S18834C1 ::v4(){vfunc_called(this, "_ZN8S18834C12v4Ev");}
void  S18834C1 ::v5(){vfunc_called(this, "_ZN8S18834C12v5Ev");}
void  S18834C1 ::v6(){vfunc_called(this, "_ZN8S18834C12v6Ev");}
void  S18834C1 ::v7(){vfunc_called(this, "_ZN8S18834C12v7Ev");}
void  S18834C1 ::v8(){vfunc_called(this, "_ZN8S18834C12v8Ev");}
void  S18834C1 ::v9(){vfunc_called(this, "_ZN8S18834C12v9Ev");}
void  S18834C1 ::v10(){vfunc_called(this, "_ZN8S18834C13v10Ev");}
void  S18834C1 ::v11(){vfunc_called(this, "_ZN8S18834C13v11Ev");}
void  S18834C1 ::v12(){vfunc_called(this, "_ZN8S18834C13v12Ev");}
void  S18834C1 ::v13(){vfunc_called(this, "_ZN8S18834C13v13Ev");}
void  S18834C1 ::v14(){vfunc_called(this, "_ZN8S18834C13v14Ev");}
void  S18834C1 ::v15(){vfunc_called(this, "_ZN8S18834C13v15Ev");}
void  S18834C1 ::v16(){vfunc_called(this, "_ZN8S18834C13v16Ev");}
void  S18834C1 ::v17(){vfunc_called(this, "_ZN8S18834C13v17Ev");}
void  S18834C1 ::v18(){vfunc_called(this, "_ZN8S18834C13v18Ev");}
void  S18834C1 ::v19(){vfunc_called(this, "_ZN8S18834C13v19Ev");}
void  S18834C1 ::v20(){vfunc_called(this, "_ZN8S18834C13v20Ev");}
S18834C1 ::S18834C1(){ note_ctor("S18834C1", this);} // tgen

static void Test_S18834C1()
{
  extern Class_Descriptor cd_S18834C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18834C1, buf);
    S18834C1 *dp, &lv = *(dp=new (buf) S18834C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18834C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18834C1)");
    test_class_info(&lv, &cd_S18834C1);
    dp->~S18834C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18834C1(Test_S18834C1, "S18834C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18834C1C1Ev();
extern void _ZN8S18834C1D1Ev();
Name_Map name_map_S18834C1[] = {
  NSPAIR(_ZN8S18834C1C1Ev),
  NSPAIR(_ZN8S18834C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18834C1[];
extern void _ZN8S18834C1D1Ev();
extern void _ZN8S18834C1D0Ev();
extern void _ZN8S18834C12v1Ev();
extern void _ZN8S18834C12v2Ev();
extern void _ZN8S18834C12v3Ev();
extern void _ZN8S18834C12v4Ev();
extern void _ZN8S18834C12v5Ev();
extern void _ZN8S18834C12v6Ev();
extern void _ZN8S18834C12v7Ev();
extern void _ZN8S18834C12v8Ev();
extern void _ZN8S18834C12v9Ev();
extern void _ZN8S18834C13v10Ev();
extern void _ZN8S18834C13v11Ev();
extern void _ZN8S18834C13v12Ev();
extern void _ZN8S18834C13v13Ev();
extern void _ZN8S18834C13v14Ev();
extern void _ZN8S18834C13v15Ev();
extern void _ZN8S18834C13v16Ev();
extern void _ZN8S18834C13v17Ev();
extern void _ZN8S18834C13v18Ev();
extern void _ZN8S18834C13v19Ev();
extern void _ZN8S18834C13v20Ev();
static  VTBL_ENTRY vtc_S18834C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18834C1[0]),
  (VTBL_ENTRY)&_ZN8S18834C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18834C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v8Ev,
  (VTBL_ENTRY)&_ZN8S18834C12v9Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v10Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v11Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v12Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v13Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v14Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v15Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v16Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v17Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v18Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v19Ev,
  (VTBL_ENTRY)&_ZN8S18834C13v20Ev,
};
extern VTBL_ENTRY _ZTI8S18834C1[];
extern  VTBL_ENTRY _ZTV8S18834C1[];
Class_Descriptor cd_S18834C1 = {  "S18834C1", // class name
  0,0,//no base classes
  &(vtc_S18834C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18834C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18834C1),24, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17264C1  {
  int s17264c1f0[5];
  ::S4228C19_nt s17264c1f1;
  ::S4228C19_nt s17264c1f2;
  char s17264c1f3[2];
  int s17264c1f4;
  ::S4228C19_nt s17264c1f5;
  int s17264c1f6[5];
  ::S4506C4_nt s17264c1f7;
  char s17264c1f8;
  int s17264c1f9;
  void  mf17264c1(); // _ZN8S17264C19mf17264c1Ev
};
//SIG(1 S17264C1) C1{ m Fi[5] FC2{ m Fp Fi FC3{ m}} FC2 Fc[2] Fi FC2 Fi[5] FC4{ m FC5{ m FL}} Fc Fi}


void  S17264C1 ::mf17264c1(){}

static void Test_S17264C1()
{
  {
    init_simple_test("S17264C1");
    S17264C1 lv;
    check2(sizeof(lv), ABISELECT(120,100), "sizeof(S17264C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17264C1)");
    check_field_offset(lv, s17264c1f0, 0, "S17264C1.s17264c1f0");
    check_field_offset(lv, s17264c1f1, ABISELECT(24,20), "S17264C1.s17264c1f1");
    check_field_offset(lv, s17264c1f2, ABISELECT(40,32), "S17264C1.s17264c1f2");
    check_field_offset(lv, s17264c1f3, ABISELECT(56,44), "S17264C1.s17264c1f3");
    check_field_offset(lv, s17264c1f4, ABISELECT(60,48), "S17264C1.s17264c1f4");
    check_field_offset(lv, s17264c1f5, ABISELECT(64,52), "S17264C1.s17264c1f5");
    check_field_offset(lv, s17264c1f6, ABISELECT(80,64), "S17264C1.s17264c1f6");
    check_field_offset(lv, s17264c1f7, ABISELECT(104,84), "S17264C1.s17264c1f7");
    check_field_offset(lv, s17264c1f8, ABISELECT(112,92), "S17264C1.s17264c1f8");
    check_field_offset(lv, s17264c1f9, ABISELECT(116,96), "S17264C1.s17264c1f9");
  }
}
static Arrange_To_Call_Me vS17264C1(Test_S17264C1, "S17264C1", ABISELECT(120,100));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19877C6  : virtual S20760C9 {
  ::S4228C27 s19877c6f0;
  virtual  ~S19877C6(); // _ZN8S19877C6D2Ev
  S19877C6(); // tgen
};
//SIG(-1 S19877C6) C1{ VBC2{ vd m FL} vd FC3{ m}}


 S19877C6 ::~S19877C6(){ note_dtor("S19877C6", this);}
S19877C6 ::S19877C6(){ note_ctor("S19877C6", this);} // tgen

static void Test_S19877C6()
{
  extern Class_Descriptor cd_S19877C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19877C6, buf);
    S19877C6 *dp, &lv = *(dp=new (buf) S19877C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19877C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19877C6)");
    check_base_class_offset(lv, (S20760C9*), ABISELECT(16,8), "S19877C6");
    check_field_offset(lv, s19877c6f0, ABISELECT(8,4), "S19877C6.s19877c6f0");
    test_class_info(&lv, &cd_S19877C6);
    dp->~S19877C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19877C6(Test_S19877C6, "S19877C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19877C6C1Ev();
extern void _ZN8S19877C6D2Ev();
Name_Map name_map_S19877C6[] = {
  NSPAIR(_ZN8S19877C6C1Ev),
  NSPAIR(_ZN8S19877C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S19877C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    ABISELECT(16,8), //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 _ZTI8S19877C6[];
extern void _ZN8S19877C6D1Ev();
extern void _ZN8S19877C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19877C6[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&_ZN8S19877C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19877C6D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S19877C6[];
static  VTT_ENTRY vtt_S19877C6[] = {
  {&(_ZTV8S19877C6[3]),  3,10},
  {&(_ZTV8S19877C6[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19877C6[];
extern  VTBL_ENTRY _ZTV8S19877C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19877C6[];
static VTBL_ENTRY alt_thunk_names327[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19877C6 = {  "S19877C6", // class name
  bases_S19877C6, 1,
  &(vtc_S19877C6[0]), // expected_vtbl_contents
  &(vtt_S19877C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19877C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19877C6),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19877C6),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names327,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19877C1  : virtual S4228C37 , virtual S19115C12 , S20760C13 , virtual S19877C6 {
  int s19877c1f0;
  virtual  ~S19877C1(); // _ZN8S19877C1D2Ev
  S19877C1(); // tgen
};
//SIG(1 S19877C1) C1{ VBC2{ m} VBC3{ m FC4{ vd m FL}[10]} BC5{ vd m Fi[6]} VBC6{ VBC4 vd FC7{ m}} vd Fi}


 S19877C1 ::~S19877C1(){ note_dtor("S19877C1", this);}
S19877C1 ::S19877C1(){ note_ctor("S19877C1", this);} // tgen

static void Test_S19877C1()
{
  extern Class_Descriptor cd_S19877C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,44)];
    init_test(&cd_S19877C1, buf);
    S19877C1 *dp, &lv = *(dp=new (buf) S19877C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,172), "sizeof(S19877C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19877C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S19877C1");
    check_base_class_offset(lv, (S19115C12*), ABISELECT(40,32), "S19877C1");
    check_base_class_offset(lv, (S20760C13*), 0, "S19877C1");
    check_base_class_offset(lv, (S20760C9*)(S19877C6*), ABISELECT(216,160), "S19877C1");
    check_base_class_offset(lv, (S19877C6*), ABISELECT(200,152), "S19877C1");
    check_field_offset(lv, s19877c1f0, ABISELECT(32,28), "S19877C1.s19877c1f0");
    test_class_info(&lv, &cd_S19877C1);
    dp->~S19877C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19877C1(Test_S19877C1, "S19877C1", ABISELECT(232,172));

#else // __cplusplus

extern void _ZN8S19877C1C1Ev();
extern void _ZN8S19877C1D2Ev();
Name_Map name_map_S19877C1[] = {
  NSPAIR(_ZN8S19877C1C1Ev),
  NSPAIR(_ZN8S19877C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S19115C12;
extern VTBL_ENTRY _ZTI9S19115C12[];
extern Class_Descriptor cd_S20760C13;
extern VTBL_ENTRY _ZTI9S20760C13[];
extern  VTBL_ENTRY _ZTV9S20760C13[];
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S19877C6;
extern VTBL_ENTRY _ZTI8S19877C6[];
extern  VTBL_ENTRY _ZTV8S19877C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19877C6[];
static Base_Class bases_S19877C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19115C12,    ABISELECT(40,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20760C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20760C9,    ABISELECT(216,160), //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19877C6,    ABISELECT(200,152), //bcp->offset
    8, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S19877C1[];
extern void _ZN8S19877C1D1Ev();
extern void _ZN8S19877C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S19877C1D1Ev,_ZTv0_n16_N8S19877C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S19877C1D1Ev,_ZThn152_N8S19877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19877C1D0Ev,_ZTv0_n16_N8S19877C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S19877C1D0Ev,_ZThn152_N8S19877C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C1D1Ev,_ZTv0_n12_N8S19877C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19877C1D1Ev,_ZThn160_N8S19877C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C1D0Ev,_ZTv0_n12_N8S19877C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S19877C1D0Ev,_ZThn160_N8S19877C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19877C1[] = {
  ABISELECT(216,160),
  ABISELECT(200,152),
  ABISELECT(40,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19877C1[0]),
  (VTBL_ENTRY)&_ZN8S19877C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19877C1D0Ev,
  ABISELECT(-200,-152),
  ABISELECT(16,8),
  ABISELECT(-200,-152),
  (VTBL_ENTRY)&(_ZTI8S19877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19877C1D1Ev,_ZTv0_n16_N8S19877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19877C1D0Ev,_ZTv0_n16_N8S19877C1D0Ev),
  ABISELECT(-216,-160),
  ABISELECT(-216,-160),
  (VTBL_ENTRY)&(_ZTI8S19877C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C1D1Ev,_ZTv0_n12_N8S19877C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C1D0Ev,_ZTv0_n12_N8S19877C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19877C1[];
extern void _ZN8S19877C6D1Ev();
extern void _ZN8S19877C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19877C6__8S19877C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&_ZN8S19877C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19877C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev)();
extern void ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20760C9__8S19877C6__8S19877C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19877C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev),
};
static  VTT_ENTRY vtt_S19877C1[] = {
  {&(_ZTV8S19877C1[6]),  6,19},
  {&(_ZTV8S19877C1[12]),  12,19},
  {&(_ZTV8S19877C1[17]),  17,19},
  {&(_tg__ZTV8S19877C6__8S19877C1[3]),  3,5},
  {&(_tg__ZTV8S20760C9__8S19877C6__8S19877C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19877C1[];
extern  VTBL_ENTRY _ZTV8S19877C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19877C1[];
static VTBL_ENTRY alt_thunk_names328[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D0Ev,_ZTv0_n12_N8S19877C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D0Ev,_ZThn8_N8S19877C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C6D1Ev,_ZTv0_n12_N8S19877C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19877C6D1Ev,_ZThn8_N8S19877C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C1D0Ev,_ZTv0_n12_N8S19877C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19877C1D0Ev,_ZThn160_N8S19877C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19877C1D1Ev,_ZTv0_n12_N8S19877C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19877C1D1Ev,_ZThn160_N8S19877C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19877C1D0Ev,_ZTv0_n16_N8S19877C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19877C1D0Ev,_ZThn152_N8S19877C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19877C1D1Ev,_ZTv0_n16_N8S19877C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19877C1D1Ev,_ZThn152_N8S19877C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19877C1 = {  "S19877C1", // class name
  bases_S19877C1, 5,
  &(vtc_S19877C1[0]), // expected_vtbl_contents
  &(vtt_S19877C1[0]), // expected_vtt_contents
  ABISELECT(232,172), // object size
  NSPAIRA(_ZTI8S19877C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19877C1),19, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19877C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names328,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C3_nt  {
  void *s21765c3f0;
  int s21765c3f1;
};
//SIG(-1 S21765C3_nt) C1{ Fp Fi}



//skip512 S21765C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C4  {
  void *s21765c4f0;
  int s21765c4f1;
  char s21765c4f2[4];
};
//SIG(-1 S21765C4) C1{ Fp Fi Fc[4]}



static void Test_S21765C4()
{
  {
    init_simple_test("S21765C4");
    S21765C4 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S21765C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21765C4)");
    check_field_offset(lv, s21765c4f0, 0, "S21765C4.s21765c4f0");
    check_field_offset(lv, s21765c4f1, ABISELECT(8,4), "S21765C4.s21765c4f1");
    check_field_offset(lv, s21765c4f2, ABISELECT(12,8), "S21765C4.s21765c4f2");
  }
}
static Arrange_To_Call_Me vS21765C4(Test_S21765C4, "S21765C4", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C2  {
  int s21765c2f0[3];
  ::S21765C3_nt s21765c2f1;
  ::S21765C3_nt s21765c2f2;
  ::S21765C4 s21765c2f3;
  ::S21765C4 s21765c2f4;
};
//SIG(-1 S21765C2) C1{ Fi[3] FC2{ Fp Fi} FC2 FC3{ Fp Fi Fc[4]} FC3}



static void Test_S21765C2()
{
  {
    init_simple_test("S21765C2");
    S21765C2 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S21765C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21765C2)");
    check_field_offset(lv, s21765c2f0, 0, "S21765C2.s21765c2f0");
    check_field_offset(lv, s21765c2f1, ABISELECT(16,12), "S21765C2.s21765c2f1");
    check_field_offset(lv, s21765c2f2, ABISELECT(32,20), "S21765C2.s21765c2f2");
    check_field_offset(lv, s21765c2f3, ABISELECT(48,28), "S21765C2.s21765c2f3");
    check_field_offset(lv, s21765c2f4, ABISELECT(64,40), "S21765C2.s21765c2f4");
  }
}
static Arrange_To_Call_Me vS21765C2(Test_S21765C2, "S21765C2", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21765C1  {
  void *s21765c1f0;
  int s21765c1f1[8];
  void *s21765c1f2;
  ::S21765C2 s21765c1f3;
  char s21765c1f4;
  int s21765c1f5[2];
  void  mf21765c1(); // _ZN8S21765C19mf21765c1Ev
  virtual  ~S21765C1(); // _ZN8S21765C1D1Ev
  S21765C1(); // tgen
};
//SIG(1 S21765C1) C1{ vd m Fp Fi[8] Fp FC2{ Fi[3] FC3{ Fp Fi} FC3 FC4{ Fp Fi Fc[4]} FC4} Fc Fi[2]}


void  S21765C1 ::mf21765c1(){}
 S21765C1 ::~S21765C1(){ note_dtor("S21765C1", this);}
S21765C1 ::S21765C1(){ note_ctor("S21765C1", this);} // tgen

static void Test_S21765C1()
{
  extern Class_Descriptor cd_S21765C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S21765C1, buf);
    S21765C1 *dp, &lv = *(dp=new (buf) S21765C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S21765C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21765C1)");
    check_field_offset(lv, s21765c1f0, ABISELECT(8,4), "S21765C1.s21765c1f0");
    check_field_offset(lv, s21765c1f1, ABISELECT(16,8), "S21765C1.s21765c1f1");
    check_field_offset(lv, s21765c1f2, ABISELECT(48,40), "S21765C1.s21765c1f2");
    check_field_offset(lv, s21765c1f3, ABISELECT(56,44), "S21765C1.s21765c1f3");
    check_field_offset(lv, s21765c1f4, ABISELECT(136,96), "S21765C1.s21765c1f4");
    check_field_offset(lv, s21765c1f5, ABISELECT(140,100), "S21765C1.s21765c1f5");
    test_class_info(&lv, &cd_S21765C1);
    dp->~S21765C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21765C1(Test_S21765C1, "S21765C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN8S21765C1C1Ev();
extern void _ZN8S21765C1D1Ev();
Name_Map name_map_S21765C1[] = {
  NSPAIR(_ZN8S21765C1C1Ev),
  NSPAIR(_ZN8S21765C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21765C1[];
extern void _ZN8S21765C1D1Ev();
extern void _ZN8S21765C1D0Ev();
static  VTBL_ENTRY vtc_S21765C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21765C1[0]),
  (VTBL_ENTRY)&_ZN8S21765C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21765C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21765C1[];
extern  VTBL_ENTRY _ZTV8S21765C1[];
Class_Descriptor cd_S21765C1 = {  "S21765C1", // class name
  0,0,//no base classes
  &(vtc_S21765C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI8S21765C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21765C1),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  S9325C2  {
  ::S4228C19_nt s9325c2f0;
  int s9325c2f1[2];
  char s9325c2f2;
  virtual  ~S9325C2(); // _ZN7S9325C2D1Ev
  virtual void  v3(); // _ZN7S9325C22v3Ev
  virtual void  v4(); // _ZN7S9325C22v4Ev
  virtual void  v5(); // _ZN7S9325C22v5Ev
  S9325C2(); // tgen
};
//SIG(-1 S9325C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9325C2 ::~S9325C2(){ note_dtor("S9325C2", this);}
void  S9325C2 ::v3(){vfunc_called(this, "_ZN7S9325C22v3Ev");}
void  S9325C2 ::v4(){vfunc_called(this, "_ZN7S9325C22v4Ev");}
void  S9325C2 ::v5(){vfunc_called(this, "_ZN7S9325C22v5Ev");}
S9325C2 ::S9325C2(){ note_ctor("S9325C2", this);} // tgen

static void Test_S9325C2()
{
  extern Class_Descriptor cd_S9325C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9325C2, buf);
    S9325C2 *dp, &lv = *(dp=new (buf) S9325C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9325C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9325C2)");
    check_field_offset(lv, s9325c2f0, ABISELECT(8,4), "S9325C2.s9325c2f0");
    check_field_offset(lv, s9325c2f1, ABISELECT(24,16), "S9325C2.s9325c2f1");
    check_field_offset(lv, s9325c2f2, ABISELECT(32,24), "S9325C2.s9325c2f2");
    test_class_info(&lv, &cd_S9325C2);
    dp->~S9325C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9325C2(Test_S9325C2, "S9325C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9325C2C1Ev();
extern void _ZN7S9325C2D1Ev();
Name_Map name_map_S9325C2[] = {
  NSPAIR(_ZN7S9325C2C1Ev),
  NSPAIR(_ZN7S9325C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9325C2[];
extern void _ZN7S9325C2D1Ev();
extern void _ZN7S9325C2D0Ev();
extern void _ZN7S9325C22v3Ev();
extern void _ZN7S9325C22v4Ev();
extern void _ZN7S9325C22v5Ev();
static  VTBL_ENTRY vtc_S9325C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9325C2[0]),
  (VTBL_ENTRY)&_ZN7S9325C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9325C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9325C2[];
extern  VTBL_ENTRY _ZTV7S9325C2[];
Class_Descriptor cd_S9325C2 = {  "S9325C2", // class name
  0,0,//no base classes
  &(vtc_S9325C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9325C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9325C2),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  S9325C1  : S9325C2 {
  int s9325c1f0;
  void *s9325c1f1;
  ::S4228C19_nt s9325c1f2;
  void *s9325c1f3[2];
  virtual  ~S9325C1(); // _ZN7S9325C1D1Ev
  virtual void  v1(); // _ZN7S9325C12v1Ev
  virtual void  v2(); // _ZN7S9325C12v2Ev
  S9325C1(); // tgen
};
//SIG(1 S9325C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fi Fp FC3 Fp[2]}


 S9325C1 ::~S9325C1(){ note_dtor("S9325C1", this);}
void  S9325C1 ::v1(){vfunc_called(this, "_ZN7S9325C12v1Ev");}
void  S9325C1 ::v2(){vfunc_called(this, "_ZN7S9325C12v2Ev");}
S9325C1 ::S9325C1(){ note_ctor("S9325C1", this);} // tgen

static void Test_S9325C1()
{
  extern Class_Descriptor cd_S9325C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,15)];
    init_test(&cd_S9325C1, buf);
    S9325C1 *dp, &lv = *(dp=new (buf) S9325C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S9325C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9325C1)");
    check_base_class_offset(lv, (S9325C2*), 0, "S9325C1");
    check_field_offset(lv, s9325c1f0, ABISELECT(36,28), "S9325C1.s9325c1f0");
    check_field_offset(lv, s9325c1f1, ABISELECT(40,32), "S9325C1.s9325c1f1");
    check_field_offset(lv, s9325c1f2, ABISELECT(48,36), "S9325C1.s9325c1f2");
    check_field_offset(lv, s9325c1f3, ABISELECT(64,48), "S9325C1.s9325c1f3");
    test_class_info(&lv, &cd_S9325C1);
    dp->~S9325C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9325C1(Test_S9325C1, "S9325C1", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN7S9325C1C1Ev();
extern void _ZN7S9325C1D1Ev();
Name_Map name_map_S9325C1[] = {
  NSPAIR(_ZN7S9325C1C1Ev),
  NSPAIR(_ZN7S9325C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9325C2;
extern VTBL_ENTRY _ZTI7S9325C2[];
extern  VTBL_ENTRY _ZTV7S9325C2[];
static Base_Class bases_S9325C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9325C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9325C1[];
extern void _ZN7S9325C1D1Ev();
extern void _ZN7S9325C1D0Ev();
extern void _ZN7S9325C22v3Ev();
extern void _ZN7S9325C22v4Ev();
extern void _ZN7S9325C22v5Ev();
extern void _ZN7S9325C12v1Ev();
extern void _ZN7S9325C12v2Ev();
static  VTBL_ENTRY vtc_S9325C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9325C1[0]),
  (VTBL_ENTRY)&_ZN7S9325C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9325C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9325C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9325C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9325C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9325C1[];
extern  VTBL_ENTRY _ZTV7S9325C1[];
Class_Descriptor cd_S9325C1 = {  "S9325C1", // class name
  bases_S9325C1, 1,
  &(vtc_S9325C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI7S9325C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9325C1),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  S18256C3  {
  ::S4228C19_nt s18256c3f0;
  __tsi64 s18256c3f1;
  ::S4228C19_nt s18256c3f2;
  ::S4228C19_nt s18256c3f3;
  int s18256c3f4;
  void *s18256c3f5;
  ::S4228C19_nt s18256c3f6;
};
//SIG(-1 S18256C3) C1{ FC2{ m Fp Fi FC3{ m}} FL FC2 FC2 Fi Fp FC2}



static void Test_S18256C3()
{
  {
    init_simple_test("S18256C3");
    S18256C3 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S18256C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18256C3)");
    check_field_offset(lv, s18256c3f0, 0, "S18256C3.s18256c3f0");
    check_field_offset(lv, s18256c3f1, ABISELECT(16,12), "S18256C3.s18256c3f1");
    check_field_offset(lv, s18256c3f2, ABISELECT(24,20), "S18256C3.s18256c3f2");
    check_field_offset(lv, s18256c3f3, ABISELECT(40,32), "S18256C3.s18256c3f3");
    check_field_offset(lv, s18256c3f4, ABISELECT(56,44), "S18256C3.s18256c3f4");
    check_field_offset(lv, s18256c3f5, ABISELECT(64,48), "S18256C3.s18256c3f5");
    check_field_offset(lv, s18256c3f6, ABISELECT(72,52), "S18256C3.s18256c3f6");
  }
}
static Arrange_To_Call_Me vS18256C3(Test_S18256C3, "S18256C3", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18256C2  {
  __tsi64 s18256c2f0;
  ::S18256C3 s18256c2f1;
  void  mf18256c2(); // _ZN8S18256C29mf18256c2Ev
};
//SIG(-1 S18256C2) C1{ m FL FC2{ FC3{ m Fp Fi FC4{ m}} FL FC3 FC3 Fi Fp FC3}}


void  S18256C2 ::mf18256c2(){}

static void Test_S18256C2()
{
  {
    init_simple_test("S18256C2");
    S18256C2 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S18256C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18256C2)");
    check_field_offset(lv, s18256c2f0, 0, "S18256C2.s18256c2f0");
    check_field_offset(lv, s18256c2f1, 8, "S18256C2.s18256c2f1");
  }
}
static Arrange_To_Call_Me vS18256C2(Test_S18256C2, "S18256C2", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18256C1  {
  void *s18256c1f0[3];
  ::S18256C2 s18256c1f1;
  char s18256c1f2[2];
  void  mf18256c1(); // _ZN8S18256C19mf18256c1Ev
};
//SIG(1 S18256C1) C1{ m Fp[3] FC2{ m FL FC3{ FC4{ m Fp Fi FC5{ m}} FL FC4 FC4 Fi Fp FC4}} Fc[2]}


void  S18256C1 ::mf18256c1(){}

static void Test_S18256C1()
{
  {
    init_simple_test("S18256C1");
    S18256C1 lv;
    check2(sizeof(lv), ABISELECT(128,88), "sizeof(S18256C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18256C1)");
    check_field_offset(lv, s18256c1f0, 0, "S18256C1.s18256c1f0");
    check_field_offset(lv, s18256c1f1, ABISELECT(24,12), "S18256C1.s18256c1f1");
    check_field_offset(lv, s18256c1f2, ABISELECT(120,84), "S18256C1.s18256c1f2");
  }
}
static Arrange_To_Call_Me vS18256C1(Test_S18256C1, "S18256C1", ABISELECT(128,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21766C1  {
  void *s21766c1f0;
  int s21766c1f1[8];
  void *s21766c1f2;
  ::S21765C2 s21766c1f3;
  char s21766c1f4;
  int s21766c1f5;
  void  mf21766c1(); // _ZN8S21766C19mf21766c1Ev
  virtual  ~S21766C1(); // _ZN8S21766C1D1Ev
  S21766C1(); // tgen
};
//SIG(1 S21766C1) C1{ vd m Fp Fi[8] Fp FC2{ Fi[3] FC3{ Fp Fi} FC3 FC4{ Fp Fi Fc[4]} FC4} Fc Fi}


void  S21766C1 ::mf21766c1(){}
 S21766C1 ::~S21766C1(){ note_dtor("S21766C1", this);}
S21766C1 ::S21766C1(){ note_ctor("S21766C1", this);} // tgen

static void Test_S21766C1()
{
  extern Class_Descriptor cd_S21766C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,27)];
    init_test(&cd_S21766C1, buf);
    S21766C1 *dp, &lv = *(dp=new (buf) S21766C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,104), "sizeof(S21766C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21766C1)");
    check_field_offset(lv, s21766c1f0, ABISELECT(8,4), "S21766C1.s21766c1f0");
    check_field_offset(lv, s21766c1f1, ABISELECT(16,8), "S21766C1.s21766c1f1");
    check_field_offset(lv, s21766c1f2, ABISELECT(48,40), "S21766C1.s21766c1f2");
    check_field_offset(lv, s21766c1f3, ABISELECT(56,44), "S21766C1.s21766c1f3");
    check_field_offset(lv, s21766c1f4, ABISELECT(136,96), "S21766C1.s21766c1f4");
    check_field_offset(lv, s21766c1f5, ABISELECT(140,100), "S21766C1.s21766c1f5");
    test_class_info(&lv, &cd_S21766C1);
    dp->~S21766C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21766C1(Test_S21766C1, "S21766C1", ABISELECT(144,104));

#else // __cplusplus

extern void _ZN8S21766C1C1Ev();
extern void _ZN8S21766C1D1Ev();
Name_Map name_map_S21766C1[] = {
  NSPAIR(_ZN8S21766C1C1Ev),
  NSPAIR(_ZN8S21766C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21766C1[];
extern void _ZN8S21766C1D1Ev();
extern void _ZN8S21766C1D0Ev();
static  VTBL_ENTRY vtc_S21766C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21766C1[0]),
  (VTBL_ENTRY)&_ZN8S21766C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21766C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21766C1[];
extern  VTBL_ENTRY _ZTV8S21766C1[];
Class_Descriptor cd_S21766C1 = {  "S21766C1", // class name
  0,0,//no base classes
  &(vtc_S21766C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(144,104), // object size
  NSPAIRA(_ZTI8S21766C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21766C1),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  S12394C1  {
  int s12394c1f0;
  ::S10007C30_nt s12394c1f1;
  ::S12397C4_nt s12394c1f2;
  int s12394c1f3[2];
  char s12394c1f4[4];
  long s12394c1f5;
  int s12394c1f6[2];
  void *s12394c1f7;
  char s12394c1f8[4];
};
//SIG(1 S12394C1) C1{ Fi FC2{ FC3{ Fc[20]} Fc[16]} FC4{ Fc[12]} Fi[2] Fc[4] Fl Fi[2] Fp Fc[4]}



static void Test_S12394C1()
{
  {
    init_simple_test("S12394C1");
    S12394C1 lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S12394C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12394C1)");
    check_field_offset(lv, s12394c1f0, 0, "S12394C1.s12394c1f0");
    check_field_offset(lv, s12394c1f1, 4, "S12394C1.s12394c1f1");
    check_field_offset(lv, s12394c1f2, 40, "S12394C1.s12394c1f2");
    check_field_offset(lv, s12394c1f3, 52, "S12394C1.s12394c1f3");
    check_field_offset(lv, s12394c1f4, 60, "S12394C1.s12394c1f4");
    check_field_offset(lv, s12394c1f5, 64, "S12394C1.s12394c1f5");
    check_field_offset(lv, s12394c1f6, ABISELECT(72,68), "S12394C1.s12394c1f6");
    check_field_offset(lv, s12394c1f7, ABISELECT(80,76), "S12394C1.s12394c1f7");
    check_field_offset(lv, s12394c1f8, ABISELECT(88,80), "S12394C1.s12394c1f8");
  }
}
static Arrange_To_Call_Me vS12394C1(Test_S12394C1, "S12394C1", ABISELECT(96,84));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9261C2  {
  ::S4228C19_nt s9261c2f0;
  int s9261c2f1[2];
  char s9261c2f2;
  virtual  ~S9261C2(); // _ZN7S9261C2D1Ev
  virtual void  v3(); // _ZN7S9261C22v3Ev
  virtual void  v4(); // _ZN7S9261C22v4Ev
  virtual void  v5(); // _ZN7S9261C22v5Ev
  S9261C2(); // tgen
};
//SIG(-1 S9261C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9261C2 ::~S9261C2(){ note_dtor("S9261C2", this);}
void  S9261C2 ::v3(){vfunc_called(this, "_ZN7S9261C22v3Ev");}
void  S9261C2 ::v4(){vfunc_called(this, "_ZN7S9261C22v4Ev");}
void  S9261C2 ::v5(){vfunc_called(this, "_ZN7S9261C22v5Ev");}
S9261C2 ::S9261C2(){ note_ctor("S9261C2", this);} // tgen

static void Test_S9261C2()
{
  extern Class_Descriptor cd_S9261C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9261C2, buf);
    S9261C2 *dp, &lv = *(dp=new (buf) S9261C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9261C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9261C2)");
    check_field_offset(lv, s9261c2f0, ABISELECT(8,4), "S9261C2.s9261c2f0");
    check_field_offset(lv, s9261c2f1, ABISELECT(24,16), "S9261C2.s9261c2f1");
    check_field_offset(lv, s9261c2f2, ABISELECT(32,24), "S9261C2.s9261c2f2");
    test_class_info(&lv, &cd_S9261C2);
    dp->~S9261C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9261C2(Test_S9261C2, "S9261C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9261C2C1Ev();
extern void _ZN7S9261C2D1Ev();
Name_Map name_map_S9261C2[] = {
  NSPAIR(_ZN7S9261C2C1Ev),
  NSPAIR(_ZN7S9261C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9261C2[];
extern void _ZN7S9261C2D1Ev();
extern void _ZN7S9261C2D0Ev();
extern void _ZN7S9261C22v3Ev();
extern void _ZN7S9261C22v4Ev();
extern void _ZN7S9261C22v5Ev();
static  VTBL_ENTRY vtc_S9261C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9261C2[0]),
  (VTBL_ENTRY)&_ZN7S9261C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9261C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9261C2[];
extern  VTBL_ENTRY _ZTV7S9261C2[];
Class_Descriptor cd_S9261C2 = {  "S9261C2", // class name
  0,0,//no base classes
  &(vtc_S9261C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9261C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9261C2),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  S9261C1  : S9261C2 {
  char s9261c1f0[2];
  int s9261c1f1[3];
  virtual  ~S9261C1(); // _ZN7S9261C1D1Ev
  virtual void  v1(); // _ZN7S9261C12v1Ev
  virtual void  v2(); // _ZN7S9261C12v2Ev
  S9261C1(); // tgen
};
//SIG(1 S9261C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fc[2] Fi[3]}


 S9261C1 ::~S9261C1(){ note_dtor("S9261C1", this);}
void  S9261C1 ::v1(){vfunc_called(this, "_ZN7S9261C12v1Ev");}
void  S9261C1 ::v2(){vfunc_called(this, "_ZN7S9261C12v2Ev");}
S9261C1 ::S9261C1(){ note_ctor("S9261C1", this);} // tgen

static void Test_S9261C1()
{
  extern Class_Descriptor cd_S9261C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S9261C1, buf);
    S9261C1 *dp, &lv = *(dp=new (buf) S9261C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S9261C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9261C1)");
    check_base_class_offset(lv, (S9261C2*), 0, "S9261C1");
    check_field_offset(lv, s9261c1f0, ABISELECT(33,25), "S9261C1.s9261c1f0");
    check_field_offset(lv, s9261c1f1, ABISELECT(36,28), "S9261C1.s9261c1f1");
    test_class_info(&lv, &cd_S9261C1);
    dp->~S9261C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9261C1(Test_S9261C1, "S9261C1", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN7S9261C1C1Ev();
extern void _ZN7S9261C1D1Ev();
Name_Map name_map_S9261C1[] = {
  NSPAIR(_ZN7S9261C1C1Ev),
  NSPAIR(_ZN7S9261C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9261C2;
extern VTBL_ENTRY _ZTI7S9261C2[];
extern  VTBL_ENTRY _ZTV7S9261C2[];
static Base_Class bases_S9261C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9261C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9261C1[];
extern void _ZN7S9261C1D1Ev();
extern void _ZN7S9261C1D0Ev();
extern void _ZN7S9261C22v3Ev();
extern void _ZN7S9261C22v4Ev();
extern void _ZN7S9261C22v5Ev();
extern void _ZN7S9261C12v1Ev();
extern void _ZN7S9261C12v2Ev();
static  VTBL_ENTRY vtc_S9261C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9261C1[0]),
  (VTBL_ENTRY)&_ZN7S9261C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9261C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9261C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9261C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9261C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9261C1[];
extern  VTBL_ENTRY _ZTV7S9261C1[];
Class_Descriptor cd_S9261C1 = {  "S9261C1", // class name
  bases_S9261C1, 1,
  &(vtc_S9261C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI7S9261C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9261C1),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  S13507C3_nt  {
  void *s13507c3f0;
  int s13507c3f1;
  void *s13507c3f2;
  int s13507c3f3;
};
//SIG(-1 S13507C3_nt) C1{ Fp Fi Fp Fi}



//skip512 S13507C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13507C1  {
  int s13507c1f0[4];
  void *s13507c1f1[3];
  int s13507c1f2[3];
  void *s13507c1f3[98];
  int s13507c1f4[4];
  ::S10007C29_nt s13507c1f5;
  ::S13507C3_nt s13507c1f6;
  void *s13507c1f7;
  int s13507c1f8;
};
//SIG(1 S13507C1) C1{ Fi[4] Fp[3] Fi[3] Fp[98] Fi[4] FC2{ FL[4]} FC3{ Fp Fi Fp Fi} Fp Fi}



static void Test_S13507C1()
{
  {
    init_simple_test("S13507C1");
    S13507C1 lv;
    check2(sizeof(lv), ABISELECT(936,504), "sizeof(S13507C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13507C1)");
    check_field_offset(lv, s13507c1f0, 0, "S13507C1.s13507c1f0");
    check_field_offset(lv, s13507c1f1, 16, "S13507C1.s13507c1f1");
    check_field_offset(lv, s13507c1f2, ABISELECT(40,28), "S13507C1.s13507c1f2");
    check_field_offset(lv, s13507c1f3, ABISELECT(56,40), "S13507C1.s13507c1f3");
    check_field_offset(lv, s13507c1f4, ABISELECT(840,432), "S13507C1.s13507c1f4");
    check_field_offset(lv, s13507c1f5, ABISELECT(856,448), "S13507C1.s13507c1f5");
    check_field_offset(lv, s13507c1f6, ABISELECT(888,480), "S13507C1.s13507c1f6");
    check_field_offset(lv, s13507c1f7, ABISELECT(920,496), "S13507C1.s13507c1f7");
    check_field_offset(lv, s13507c1f8, ABISELECT(928,500), "S13507C1.s13507c1f8");
  }
}
static Arrange_To_Call_Me vS13507C1(Test_S13507C1, "S13507C1", ABISELECT(936,504));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9677C2  {
  ::S4228C19_nt s9677c2f0;
  int s9677c2f1[2];
  char s9677c2f2;
  virtual  ~S9677C2(); // _ZN7S9677C2D1Ev
  virtual void  v4(); // _ZN7S9677C22v4Ev
  virtual void  v5(); // _ZN7S9677C22v5Ev
  virtual void  v6(); // _ZN7S9677C22v6Ev
  S9677C2(); // tgen
};
//SIG(-1 S9677C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9677C2 ::~S9677C2(){ note_dtor("S9677C2", this);}
void  S9677C2 ::v4(){vfunc_called(this, "_ZN7S9677C22v4Ev");}
void  S9677C2 ::v5(){vfunc_called(this, "_ZN7S9677C22v5Ev");}
void  S9677C2 ::v6(){vfunc_called(this, "_ZN7S9677C22v6Ev");}
S9677C2 ::S9677C2(){ note_ctor("S9677C2", this);} // tgen

static void Test_S9677C2()
{
  extern Class_Descriptor cd_S9677C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9677C2, buf);
    S9677C2 *dp, &lv = *(dp=new (buf) S9677C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9677C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9677C2)");
    check_field_offset(lv, s9677c2f0, ABISELECT(8,4), "S9677C2.s9677c2f0");
    check_field_offset(lv, s9677c2f1, ABISELECT(24,16), "S9677C2.s9677c2f1");
    check_field_offset(lv, s9677c2f2, ABISELECT(32,24), "S9677C2.s9677c2f2");
    test_class_info(&lv, &cd_S9677C2);
    dp->~S9677C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9677C2(Test_S9677C2, "S9677C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9677C2C1Ev();
extern void _ZN7S9677C2D1Ev();
Name_Map name_map_S9677C2[] = {
  NSPAIR(_ZN7S9677C2C1Ev),
  NSPAIR(_ZN7S9677C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9677C2[];
extern void _ZN7S9677C2D1Ev();
extern void _ZN7S9677C2D0Ev();
extern void _ZN7S9677C22v4Ev();
extern void _ZN7S9677C22v5Ev();
extern void _ZN7S9677C22v6Ev();
static  VTBL_ENTRY vtc_S9677C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9677C2[0]),
  (VTBL_ENTRY)&_ZN7S9677C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9677C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9677C2[];
extern  VTBL_ENTRY _ZTV7S9677C2[];
Class_Descriptor cd_S9677C2 = {  "S9677C2", // class name
  0,0,//no base classes
  &(vtc_S9677C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9677C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9677C2),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  S9677C1  : S9677C2 {
  int s9677c1f0;
  void *s9677c1f1;
  virtual  ~S9677C1(); // _ZN7S9677C1D1Ev
  virtual void  v1(); // _ZN7S9677C12v1Ev
  virtual void  v2(); // _ZN7S9677C12v2Ev
  virtual void  v3(); // _ZN7S9677C12v3Ev
  S9677C1(); // tgen
};
//SIG(1 S9677C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fi Fp}


 S9677C1 ::~S9677C1(){ note_dtor("S9677C1", this);}
void  S9677C1 ::v1(){vfunc_called(this, "_ZN7S9677C12v1Ev");}
void  S9677C1 ::v2(){vfunc_called(this, "_ZN7S9677C12v2Ev");}
void  S9677C1 ::v3(){vfunc_called(this, "_ZN7S9677C12v3Ev");}
S9677C1 ::S9677C1(){ note_ctor("S9677C1", this);} // tgen

static void Test_S9677C1()
{
  extern Class_Descriptor cd_S9677C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,10)];
    init_test(&cd_S9677C1, buf);
    S9677C1 *dp, &lv = *(dp=new (buf) S9677C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S9677C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9677C1)");
    check_base_class_offset(lv, (S9677C2*), 0, "S9677C1");
    check_field_offset(lv, s9677c1f0, ABISELECT(36,28), "S9677C1.s9677c1f0");
    check_field_offset(lv, s9677c1f1, ABISELECT(40,32), "S9677C1.s9677c1f1");
    test_class_info(&lv, &cd_S9677C1);
    dp->~S9677C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9677C1(Test_S9677C1, "S9677C1", ABISELECT(48,36));

#else // __cplusplus

extern void _ZN7S9677C1C1Ev();
extern void _ZN7S9677C1D1Ev();
Name_Map name_map_S9677C1[] = {
  NSPAIR(_ZN7S9677C1C1Ev),
  NSPAIR(_ZN7S9677C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9677C2;
extern VTBL_ENTRY _ZTI7S9677C2[];
extern  VTBL_ENTRY _ZTV7S9677C2[];
static Base_Class bases_S9677C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9677C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9677C1[];
extern void _ZN7S9677C1D1Ev();
extern void _ZN7S9677C1D0Ev();
extern void _ZN7S9677C22v4Ev();
extern void _ZN7S9677C22v5Ev();
extern void _ZN7S9677C22v6Ev();
extern void _ZN7S9677C12v1Ev();
extern void _ZN7S9677C12v2Ev();
extern void _ZN7S9677C12v3Ev();
static  VTBL_ENTRY vtc_S9677C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9677C1[0]),
  (VTBL_ENTRY)&_ZN7S9677C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9677C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9677C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9677C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9677C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9677C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9677C1[];
extern  VTBL_ENTRY _ZTV7S9677C1[];
Class_Descriptor cd_S9677C1 = {  "S9677C1", // class name
  bases_S9677C1, 1,
  &(vtc_S9677C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,36), // object size
  NSPAIRA(_ZTI7S9677C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9677C1),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  S7125C2  {
  virtual  ~S7125C2(); // _ZN7S7125C2D1Ev
  virtual void  v7(); // _ZN7S7125C22v7Ev
  virtual void  v8(); // _ZN7S7125C22v8Ev
  virtual void  v9(); // _ZN7S7125C22v9Ev
  virtual void  v10(); // _ZN7S7125C23v10Ev
  virtual void  v11(); // _ZN7S7125C23v11Ev
  virtual void  v12(); // _ZN7S7125C23v12Ev
  virtual void  v13(); // _ZN7S7125C23v13Ev
  S7125C2(); // tgen
};
//SIG(-1 S7125C2) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S7125C2 ::~S7125C2(){ note_dtor("S7125C2", this);}
void  S7125C2 ::v7(){vfunc_called(this, "_ZN7S7125C22v7Ev");}
void  S7125C2 ::v8(){vfunc_called(this, "_ZN7S7125C22v8Ev");}
void  S7125C2 ::v9(){vfunc_called(this, "_ZN7S7125C22v9Ev");}
void  S7125C2 ::v10(){vfunc_called(this, "_ZN7S7125C23v10Ev");}
void  S7125C2 ::v11(){vfunc_called(this, "_ZN7S7125C23v11Ev");}
void  S7125C2 ::v12(){vfunc_called(this, "_ZN7S7125C23v12Ev");}
void  S7125C2 ::v13(){vfunc_called(this, "_ZN7S7125C23v13Ev");}
S7125C2 ::S7125C2(){ note_ctor("S7125C2", this);} // tgen

static void Test_S7125C2()
{
  extern Class_Descriptor cd_S7125C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7125C2, buf);
    S7125C2 *dp, &lv = *(dp=new (buf) S7125C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7125C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7125C2)");
    test_class_info(&lv, &cd_S7125C2);
    dp->~S7125C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7125C2(Test_S7125C2, "S7125C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7125C2C1Ev();
extern void _ZN7S7125C2D1Ev();
Name_Map name_map_S7125C2[] = {
  NSPAIR(_ZN7S7125C2C1Ev),
  NSPAIR(_ZN7S7125C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7125C2[];
extern void _ZN7S7125C2D1Ev();
extern void _ZN7S7125C2D0Ev();
extern void _ZN7S7125C22v7Ev();
extern void _ZN7S7125C22v8Ev();
extern void _ZN7S7125C22v9Ev();
extern void _ZN7S7125C23v10Ev();
extern void _ZN7S7125C23v11Ev();
extern void _ZN7S7125C23v12Ev();
extern void _ZN7S7125C23v13Ev();
static  VTBL_ENTRY vtc_S7125C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7125C2[0]),
  (VTBL_ENTRY)&_ZN7S7125C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7125C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v13Ev,
};
extern VTBL_ENTRY _ZTI7S7125C2[];
extern  VTBL_ENTRY _ZTV7S7125C2[];
Class_Descriptor cd_S7125C2 = {  "S7125C2", // class name
  0,0,//no base classes
  &(vtc_S7125C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7125C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7125C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7125C1  : S7125C2 {
  void *s7125c1f0;
  int s7125c1f1[2];
  virtual  ~S7125C1(); // _ZN7S7125C1D1Ev
  virtual void  v1(); // _ZN7S7125C12v1Ev
  virtual void  v2(); // _ZN7S7125C12v2Ev
  virtual void  v3(); // _ZN7S7125C12v3Ev
  virtual void  v4(); // _ZN7S7125C12v4Ev
  virtual void  v5(); // _ZN7S7125C12v5Ev
  virtual void  v6(); // _ZN7S7125C12v6Ev
  S7125C1(); // tgen
};
//SIG(1 S7125C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13} vd v1 v2 v3 v4 v5 v6 Fp Fi[2]}


 S7125C1 ::~S7125C1(){ note_dtor("S7125C1", this);}
void  S7125C1 ::v1(){vfunc_called(this, "_ZN7S7125C12v1Ev");}
void  S7125C1 ::v2(){vfunc_called(this, "_ZN7S7125C12v2Ev");}
void  S7125C1 ::v3(){vfunc_called(this, "_ZN7S7125C12v3Ev");}
void  S7125C1 ::v4(){vfunc_called(this, "_ZN7S7125C12v4Ev");}
void  S7125C1 ::v5(){vfunc_called(this, "_ZN7S7125C12v5Ev");}
void  S7125C1 ::v6(){vfunc_called(this, "_ZN7S7125C12v6Ev");}
S7125C1 ::S7125C1(){ note_ctor("S7125C1", this);} // tgen

static void Test_S7125C1()
{
  extern Class_Descriptor cd_S7125C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S7125C1, buf);
    S7125C1 *dp, &lv = *(dp=new (buf) S7125C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S7125C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7125C1)");
    check_base_class_offset(lv, (S7125C2*), 0, "S7125C1");
    check_field_offset(lv, s7125c1f0, ABISELECT(8,4), "S7125C1.s7125c1f0");
    check_field_offset(lv, s7125c1f1, ABISELECT(16,8), "S7125C1.s7125c1f1");
    test_class_info(&lv, &cd_S7125C1);
    dp->~S7125C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7125C1(Test_S7125C1, "S7125C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S7125C1C1Ev();
extern void _ZN7S7125C1D1Ev();
Name_Map name_map_S7125C1[] = {
  NSPAIR(_ZN7S7125C1C1Ev),
  NSPAIR(_ZN7S7125C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7125C2;
extern VTBL_ENTRY _ZTI7S7125C2[];
extern  VTBL_ENTRY _ZTV7S7125C2[];
static Base_Class bases_S7125C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7125C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7125C1[];
extern void _ZN7S7125C1D1Ev();
extern void _ZN7S7125C1D0Ev();
extern void _ZN7S7125C22v7Ev();
extern void _ZN7S7125C22v8Ev();
extern void _ZN7S7125C22v9Ev();
extern void _ZN7S7125C23v10Ev();
extern void _ZN7S7125C23v11Ev();
extern void _ZN7S7125C23v12Ev();
extern void _ZN7S7125C23v13Ev();
extern void _ZN7S7125C12v1Ev();
extern void _ZN7S7125C12v2Ev();
extern void _ZN7S7125C12v3Ev();
extern void _ZN7S7125C12v4Ev();
extern void _ZN7S7125C12v5Ev();
extern void _ZN7S7125C12v6Ev();
static  VTBL_ENTRY vtc_S7125C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7125C1[0]),
  (VTBL_ENTRY)&_ZN7S7125C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7125C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7125C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7125C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7125C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7125C1[];
extern  VTBL_ENTRY _ZTV7S7125C1[];
Class_Descriptor cd_S7125C1 = {  "S7125C1", // class name
  bases_S7125C1, 1,
  &(vtc_S7125C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S7125C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7125C1),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  S9946C2  {
  virtual  ~S9946C2(); // _ZN7S9946C2D1Ev
  virtual void  v5(); // _ZN7S9946C22v5Ev
  virtual void  v6(); // _ZN7S9946C22v6Ev
  virtual void  v7(); // _ZN7S9946C22v7Ev
  virtual void  v8(); // _ZN7S9946C22v8Ev
  S9946C2(); // tgen
};
//SIG(-1 S9946C2) C1{ vd v1 v2 v3 v4}


 S9946C2 ::~S9946C2(){ note_dtor("S9946C2", this);}
void  S9946C2 ::v5(){vfunc_called(this, "_ZN7S9946C22v5Ev");}
void  S9946C2 ::v6(){vfunc_called(this, "_ZN7S9946C22v6Ev");}
void  S9946C2 ::v7(){vfunc_called(this, "_ZN7S9946C22v7Ev");}
void  S9946C2 ::v8(){vfunc_called(this, "_ZN7S9946C22v8Ev");}
S9946C2 ::S9946C2(){ note_ctor("S9946C2", this);} // tgen

static void Test_S9946C2()
{
  extern Class_Descriptor cd_S9946C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S9946C2, buf);
    S9946C2 *dp, &lv = *(dp=new (buf) S9946C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S9946C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9946C2)");
    test_class_info(&lv, &cd_S9946C2);
    dp->~S9946C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9946C2(Test_S9946C2, "S9946C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S9946C2C1Ev();
extern void _ZN7S9946C2D1Ev();
Name_Map name_map_S9946C2[] = {
  NSPAIR(_ZN7S9946C2C1Ev),
  NSPAIR(_ZN7S9946C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9946C2[];
extern void _ZN7S9946C2D1Ev();
extern void _ZN7S9946C2D0Ev();
extern void _ZN7S9946C22v5Ev();
extern void _ZN7S9946C22v6Ev();
extern void _ZN7S9946C22v7Ev();
extern void _ZN7S9946C22v8Ev();
static  VTBL_ENTRY vtc_S9946C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9946C2[0]),
  (VTBL_ENTRY)&_ZN7S9946C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9946C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S9946C2[];
extern  VTBL_ENTRY _ZTV7S9946C2[];
Class_Descriptor cd_S9946C2 = {  "S9946C2", // class name
  0,0,//no base classes
  &(vtc_S9946C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9946C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9946C2),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  S9946C3  {
  __tsi64 s9946c3f0[2];
  long s9946c3f1;
  void  mf9946c3(); // _ZN7S9946C38mf9946c3Ev
};
//SIG(-1 S9946C3) C1{ m FL[2] Fl}


void  S9946C3 ::mf9946c3(){}

static void Test_S9946C3()
{
  {
    init_simple_test("S9946C3");
    S9946C3 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S9946C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9946C3)");
    check_field_offset(lv, s9946c3f0, 0, "S9946C3.s9946c3f0");
    check_field_offset(lv, s9946c3f1, 16, "S9946C3.s9946c3f1");
  }
}
static Arrange_To_Call_Me vS9946C3(Test_S9946C3, "S9946C3", ABISELECT(24,20));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S9946C3[];
VTBL_ENTRY *P__ZTI7S9946C3 = _ZTI7S9946C3; 
Class_Descriptor cd_S9946C3 = {  "S9946C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI7S9946C3),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  S9946C1  : S9946C2 , S9946C3 {
  ::S4161C4_nt s9946c1f0;
  void *s9946c1f1;
  virtual  ~S9946C1(); // _ZN7S9946C1D1Ev
  virtual void  v1(); // _ZN7S9946C12v1Ev
  virtual void  v2(); // _ZN7S9946C12v2Ev
  virtual void  v3(); // _ZN7S9946C12v3Ev
  virtual void  v4(); // _ZN7S9946C12v4Ev
  S9946C1(); // tgen
};
//SIG(1 S9946C1) C1{ BC2{ vd v5 v6 v7 v8} BC3{ m FL[2] Fl} vd v1 v2 v3 v4 FC4{ m Fp} Fp}


 S9946C1 ::~S9946C1(){ note_dtor("S9946C1", this);}
void  S9946C1 ::v1(){vfunc_called(this, "_ZN7S9946C12v1Ev");}
void  S9946C1 ::v2(){vfunc_called(this, "_ZN7S9946C12v2Ev");}
void  S9946C1 ::v3(){vfunc_called(this, "_ZN7S9946C12v3Ev");}
void  S9946C1 ::v4(){vfunc_called(this, "_ZN7S9946C12v4Ev");}
S9946C1 ::S9946C1(){ note_ctor("S9946C1", this);} // tgen

static void Test_S9946C1()
{
  extern Class_Descriptor cd_S9946C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S9946C1, buf);
    S9946C1 *dp, &lv = *(dp=new (buf) S9946C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S9946C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9946C1)");
    check_base_class_offset(lv, (S9946C2*), 0, "S9946C1");
    check_base_class_offset(lv, (S9946C3*), ABISELECT(8,4), "S9946C1");
    check_field_offset(lv, s9946c1f0, ABISELECT(32,24), "S9946C1.s9946c1f0");
    check_field_offset(lv, s9946c1f1, ABISELECT(40,28), "S9946C1.s9946c1f1");
    test_class_info(&lv, &cd_S9946C1);
    dp->~S9946C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9946C1(Test_S9946C1, "S9946C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S9946C1C1Ev();
extern void _ZN7S9946C1D1Ev();
Name_Map name_map_S9946C1[] = {
  NSPAIR(_ZN7S9946C1C1Ev),
  NSPAIR(_ZN7S9946C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9946C2;
extern VTBL_ENTRY _ZTI7S9946C2[];
extern  VTBL_ENTRY _ZTV7S9946C2[];
extern Class_Descriptor cd_S9946C3;
extern VTBL_ENTRY _ZTI7S9946C3[];
static Base_Class bases_S9946C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9946C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9946C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9946C1[];
extern void _ZN7S9946C1D1Ev();
extern void _ZN7S9946C1D0Ev();
extern void _ZN7S9946C22v5Ev();
extern void _ZN7S9946C22v6Ev();
extern void _ZN7S9946C22v7Ev();
extern void _ZN7S9946C22v8Ev();
extern void _ZN7S9946C12v1Ev();
extern void _ZN7S9946C12v2Ev();
extern void _ZN7S9946C12v3Ev();
extern void _ZN7S9946C12v4Ev();
static  VTBL_ENTRY vtc_S9946C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9946C1[0]),
  (VTBL_ENTRY)&_ZN7S9946C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9946C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9946C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9946C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9946C1[];
extern  VTBL_ENTRY _ZTV7S9946C1[];
Class_Descriptor cd_S9946C1 = {  "S9946C1", // class name
  bases_S9946C1, 2,
  &(vtc_S9946C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S9946C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9946C1),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  S9404C2  {
  ::S4228C19_nt s9404c2f0;
  int s9404c2f1[2];
  char s9404c2f2;
  virtual  ~S9404C2(); // _ZN7S9404C2D1Ev
  virtual void  v3(); // _ZN7S9404C22v3Ev
  virtual void  v4(); // _ZN7S9404C22v4Ev
  virtual void  v5(); // _ZN7S9404C22v5Ev
  S9404C2(); // tgen
};
//SIG(-1 S9404C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9404C2 ::~S9404C2(){ note_dtor("S9404C2", this);}
void  S9404C2 ::v3(){vfunc_called(this, "_ZN7S9404C22v3Ev");}
void  S9404C2 ::v4(){vfunc_called(this, "_ZN7S9404C22v4Ev");}
void  S9404C2 ::v5(){vfunc_called(this, "_ZN7S9404C22v5Ev");}
S9404C2 ::S9404C2(){ note_ctor("S9404C2", this);} // tgen

static void Test_S9404C2()
{
  extern Class_Descriptor cd_S9404C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9404C2, buf);
    S9404C2 *dp, &lv = *(dp=new (buf) S9404C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9404C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9404C2)");
    check_field_offset(lv, s9404c2f0, ABISELECT(8,4), "S9404C2.s9404c2f0");
    check_field_offset(lv, s9404c2f1, ABISELECT(24,16), "S9404C2.s9404c2f1");
    check_field_offset(lv, s9404c2f2, ABISELECT(32,24), "S9404C2.s9404c2f2");
    test_class_info(&lv, &cd_S9404C2);
    dp->~S9404C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9404C2(Test_S9404C2, "S9404C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9404C2C1Ev();
extern void _ZN7S9404C2D1Ev();
Name_Map name_map_S9404C2[] = {
  NSPAIR(_ZN7S9404C2C1Ev),
  NSPAIR(_ZN7S9404C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9404C2[];
extern void _ZN7S9404C2D1Ev();
extern void _ZN7S9404C2D0Ev();
extern void _ZN7S9404C22v3Ev();
extern void _ZN7S9404C22v4Ev();
extern void _ZN7S9404C22v5Ev();
static  VTBL_ENTRY vtc_S9404C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9404C2[0]),
  (VTBL_ENTRY)&_ZN7S9404C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9404C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9404C2[];
extern  VTBL_ENTRY _ZTV7S9404C2[];
Class_Descriptor cd_S9404C2 = {  "S9404C2", // class name
  0,0,//no base classes
  &(vtc_S9404C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9404C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9404C2),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  S9404C1  : S9404C2 {
  void *s9404c1f0[2];
  virtual  ~S9404C1(); // _ZN7S9404C1D1Ev
  virtual void  v1(); // _ZN7S9404C12v1Ev
  virtual void  v2(); // _ZN7S9404C12v2Ev
  S9404C1(); // tgen
};
//SIG(1 S9404C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp[2]}


 S9404C1 ::~S9404C1(){ note_dtor("S9404C1", this);}
void  S9404C1 ::v1(){vfunc_called(this, "_ZN7S9404C12v1Ev");}
void  S9404C1 ::v2(){vfunc_called(this, "_ZN7S9404C12v2Ev");}
S9404C1 ::S9404C1(){ note_ctor("S9404C1", this);} // tgen

static void Test_S9404C1()
{
  extern Class_Descriptor cd_S9404C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S9404C1, buf);
    S9404C1 *dp, &lv = *(dp=new (buf) S9404C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S9404C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9404C1)");
    check_base_class_offset(lv, (S9404C2*), 0, "S9404C1");
    check_field_offset(lv, s9404c1f0, ABISELECT(40,28), "S9404C1.s9404c1f0");
    test_class_info(&lv, &cd_S9404C1);
    dp->~S9404C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9404C1(Test_S9404C1, "S9404C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S9404C1C1Ev();
extern void _ZN7S9404C1D1Ev();
Name_Map name_map_S9404C1[] = {
  NSPAIR(_ZN7S9404C1C1Ev),
  NSPAIR(_ZN7S9404C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9404C2;
extern VTBL_ENTRY _ZTI7S9404C2[];
extern  VTBL_ENTRY _ZTV7S9404C2[];
static Base_Class bases_S9404C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9404C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9404C1[];
extern void _ZN7S9404C1D1Ev();
extern void _ZN7S9404C1D0Ev();
extern void _ZN7S9404C22v3Ev();
extern void _ZN7S9404C22v4Ev();
extern void _ZN7S9404C22v5Ev();
extern void _ZN7S9404C12v1Ev();
extern void _ZN7S9404C12v2Ev();
static  VTBL_ENTRY vtc_S9404C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9404C1[0]),
  (VTBL_ENTRY)&_ZN7S9404C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9404C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9404C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9404C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9404C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9404C1[];
extern  VTBL_ENTRY _ZTV7S9404C1[];
Class_Descriptor cd_S9404C1 = {  "S9404C1", // class name
  bases_S9404C1, 1,
  &(vtc_S9404C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S9404C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9404C1),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  S17230C2  {
  void *s17230c2f0;
  int s17230c2f1;
  void *s17230c2f2;
  int s17230c2f3;
  void *s17230c2f4;
  int s17230c2f5;
  void *s17230c2f6;
  int s17230c2f7;
  void *s17230c2f8;
  int s17230c2f9;
  void *s17230c2f10[5];
  void  mf17230c2(); // _ZN8S17230C29mf17230c2Ev
};
//SIG(-1 S17230C2) C1{ m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]}


void  S17230C2 ::mf17230c2(){}

static void Test_S17230C2()
{
  {
    init_simple_test("S17230C2");
    S17230C2 lv;
    check2(sizeof(lv), ABISELECT(120,60), "sizeof(S17230C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17230C2)");
    check_field_offset(lv, s17230c2f0, 0, "S17230C2.s17230c2f0");
    check_field_offset(lv, s17230c2f1, ABISELECT(8,4), "S17230C2.s17230c2f1");
    check_field_offset(lv, s17230c2f2, ABISELECT(16,8), "S17230C2.s17230c2f2");
    check_field_offset(lv, s17230c2f3, ABISELECT(24,12), "S17230C2.s17230c2f3");
    check_field_offset(lv, s17230c2f4, ABISELECT(32,16), "S17230C2.s17230c2f4");
    check_field_offset(lv, s17230c2f5, ABISELECT(40,20), "S17230C2.s17230c2f5");
    check_field_offset(lv, s17230c2f6, ABISELECT(48,24), "S17230C2.s17230c2f6");
    check_field_offset(lv, s17230c2f7, ABISELECT(56,28), "S17230C2.s17230c2f7");
    check_field_offset(lv, s17230c2f8, ABISELECT(64,32), "S17230C2.s17230c2f8");
    check_field_offset(lv, s17230c2f9, ABISELECT(72,36), "S17230C2.s17230c2f9");
    check_field_offset(lv, s17230c2f10, ABISELECT(80,40), "S17230C2.s17230c2f10");
  }
}
static Arrange_To_Call_Me vS17230C2(Test_S17230C2, "S17230C2", ABISELECT(120,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17230C1  {
  int s17230c1f0[4];
  ::S17230C2 s17230c1f1;
  void *s17230c1f2;
  int s17230c1f3;
  void *s17230c1f4;
  void  mf17230c1(); // _ZN8S17230C19mf17230c1Ev
};
//SIG(1 S17230C1) C1{ m Fi[4] FC2{ m Fp Fi Fp Fi Fp Fi Fp Fi Fp Fi Fp[5]} Fp Fi Fp}


void  S17230C1 ::mf17230c1(){}

static void Test_S17230C1()
{
  {
    init_simple_test("S17230C1");
    S17230C1 lv;
    check2(sizeof(lv), ABISELECT(160,88), "sizeof(S17230C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17230C1)");
    check_field_offset(lv, s17230c1f0, 0, "S17230C1.s17230c1f0");
    check_field_offset(lv, s17230c1f1, 16, "S17230C1.s17230c1f1");
    check_field_offset(lv, s17230c1f2, ABISELECT(136,76), "S17230C1.s17230c1f2");
    check_field_offset(lv, s17230c1f3, ABISELECT(144,80), "S17230C1.s17230c1f3");
    check_field_offset(lv, s17230c1f4, ABISELECT(152,84), "S17230C1.s17230c1f4");
  }
}
static Arrange_To_Call_Me vS17230C1(Test_S17230C1, "S17230C1", ABISELECT(160,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16749C3  {
  ::S3423C4_nt s16749c3f0;
  char s16749c3f1;
  ::S3423C17 s16749c3f2;
  void  mf16749c3(); // _ZN8S16749C39mf16749c3Ev
};
//SIG(-1 S16749C3) C1{ m FC2{ m Fi[2]} Fc FC3{ BC4{ BC5{ m Fp Fi[2]}}}}


void  S16749C3 ::mf16749c3(){}

static void Test_S16749C3()
{
  {
    init_simple_test("S16749C3");
    S16749C3 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S16749C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16749C3)");
    check_field_offset(lv, s16749c3f0, 0, "S16749C3.s16749c3f0");
    check_field_offset(lv, s16749c3f1, 8, "S16749C3.s16749c3f1");
    check_field_offset(lv, s16749c3f2, ABISELECT(16,12), "S16749C3.s16749c3f2");
  }
}
static Arrange_To_Call_Me vS16749C3(Test_S16749C3, "S16749C3", ABISELECT(32,24));

#else // __cplusplus

Class_Descriptor cd_S16749C3 = {  "S16749C3", // 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  S16749C1  {
  int s16749c1f0;
  ::S3423C4_nt s16749c1f1;
  ::S16749C3 s16749c1f2;
  void  mf16749c1(); // _ZN8S16749C19mf16749c1Ev
};
//SIG(1 S16749C1) C1{ m Fi FC2{ m Fi[2]} FC3{ m FC2 Fc FC4{ BC5{ BC6{ m Fp Fi[2]}}}}}


void  S16749C1 ::mf16749c1(){}

static void Test_S16749C1()
{
  {
    init_simple_test("S16749C1");
    S16749C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S16749C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16749C1)");
    check_field_offset(lv, s16749c1f0, 0, "S16749C1.s16749c1f0");
    check_field_offset(lv, s16749c1f1, 4, "S16749C1.s16749c1f1");
    check_field_offset(lv, s16749c1f2, ABISELECT(16,12), "S16749C1.s16749c1f2");
  }
}
static Arrange_To_Call_Me vS16749C1(Test_S16749C1, "S16749C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16255C1  {
  ::S4228C19_nt s16255c1f0;
  ::S4161C4_nt s16255c1f1;
  ::S4228C25 s16255c1f2;
  void  mf16255c1(); // _ZN8S16255C19mf16255c1Ev
};
//SIG(1 S16255C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ m Fp} FC5{ m Fp Fi FC6{ m} FC7{ m}}}


void  S16255C1 ::mf16255c1(){}

static void Test_S16255C1()
{
  {
    init_simple_test("S16255C1");
    S16255C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16255C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16255C1)");
    check_field_offset(lv, s16255c1f0, 0, "S16255C1.s16255c1f0");
    check_field_offset(lv, s16255c1f1, ABISELECT(16,12), "S16255C1.s16255c1f1");
    check_field_offset(lv, s16255c1f2, ABISELECT(24,16), "S16255C1.s16255c1f2");
  }
}
static Arrange_To_Call_Me vS16255C1(Test_S16255C1, "S16255C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13281C3_nt  {
  int s13281c3f0[2];
};
//SIG(1 S13281C3_nt) C1{ Fi[2]}



//skip512 S13281C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13281C2  {
  ::S13281C3_nt s13281c2f0[33];
  int s13281c2f1[4];
};
//SIG(-1 S13281C2) C1{ FC2{ Fi[2]}[33] Fi[4]}



static void Test_S13281C2()
{
  {
    init_simple_test("S13281C2");
    S13281C2 lv;
    check2(sizeof(lv), 280, "sizeof(S13281C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13281C2)");
    check_field_offset(lv, s13281c2f0, 0, "S13281C2.s13281c2f0");
    check_field_offset(lv, s13281c2f1, 264, "S13281C2.s13281c2f1");
  }
}
static Arrange_To_Call_Me vS13281C2(Test_S13281C2, "S13281C2", 280);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13281C1  {
  int s13281c1f0[24];
  void *s13281c1f1[3];
  int s13281c1f2[3];
  void *s13281c1f3;
  int s13281c1f4[11];
  ::S13281C2 s13281c1f5;
};
//SIG(1 S13281C1) C1{ Fi[24] Fp[3] Fi[3] Fp Fi[11] FC2{ FC3{ Fi[2]}[33] Fi[4]}}



static void Test_S13281C1()
{
  {
    init_simple_test("S13281C1");
    S13281C1 lv;
    check2(sizeof(lv), ABISELECT(472,448), "sizeof(S13281C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13281C1)");
    check_field_offset(lv, s13281c1f0, 0, "S13281C1.s13281c1f0");
    check_field_offset(lv, s13281c1f1, 96, "S13281C1.s13281c1f1");
    check_field_offset(lv, s13281c1f2, ABISELECT(120,108), "S13281C1.s13281c1f2");
    check_field_offset(lv, s13281c1f3, ABISELECT(136,120), "S13281C1.s13281c1f3");
    check_field_offset(lv, s13281c1f4, ABISELECT(144,124), "S13281C1.s13281c1f4");
    check_field_offset(lv, s13281c1f5, ABISELECT(188,168), "S13281C1.s13281c1f5");
  }
}
static Arrange_To_Call_Me vS13281C1(Test_S13281C1, "S13281C1", ABISELECT(472,448));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18007C2  {
  __tsi64 s18007c2f0;
  ::S4228C19_nt s18007c2f1;
  ::S4228C19_nt s18007c2f2;
  int s18007c2f3[2];
  ::S4228C19_nt s18007c2f4;
  char s18007c2f5;
  void  mf18007c2(); // _ZN8S18007C29mf18007c2Ev
};
//SIG(-1 S18007C2) C1{ m FL FC2{ m Fp Fi FC3{ m}} FC2 Fi[2] FC2 Fc}


void  S18007C2 ::mf18007c2(){}

static void Test_S18007C2()
{
  {
    init_simple_test("S18007C2");
    S18007C2 lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S18007C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18007C2)");
    check_field_offset(lv, s18007c2f0, 0, "S18007C2.s18007c2f0");
    check_field_offset(lv, s18007c2f1, 8, "S18007C2.s18007c2f1");
    check_field_offset(lv, s18007c2f2, ABISELECT(24,20), "S18007C2.s18007c2f2");
    check_field_offset(lv, s18007c2f3, ABISELECT(40,32), "S18007C2.s18007c2f3");
    check_field_offset(lv, s18007c2f4, ABISELECT(48,40), "S18007C2.s18007c2f4");
    check_field_offset(lv, s18007c2f5, ABISELECT(64,52), "S18007C2.s18007c2f5");
  }
}
static Arrange_To_Call_Me vS18007C2(Test_S18007C2, "S18007C2", ABISELECT(72,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18007C1  {
  void *s18007c1f0[2];
  ::S18007C2 s18007c1f1;
  void  mf18007c1(); // _ZN8S18007C19mf18007c1Ev
};
//SIG(1 S18007C1) C1{ m Fp[2] FC2{ m FL FC3{ m Fp Fi FC4{ m}} FC3 Fi[2] FC3 Fc}}


void  S18007C1 ::mf18007c1(){}

static void Test_S18007C1()
{
  {
    init_simple_test("S18007C1");
    S18007C1 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S18007C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18007C1)");
    check_field_offset(lv, s18007c1f0, 0, "S18007C1.s18007c1f0");
    check_field_offset(lv, s18007c1f1, ABISELECT(16,8), "S18007C1.s18007c1f1");
  }
}
static Arrange_To_Call_Me vS18007C1(Test_S18007C1, "S18007C1", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21384C2_nt  {
  ::S10006C29_nt s21384c2f0;
  void  mf21384c2(); // _ZN11S21384C2_nt9mf21384c2Ev
};
//SIG(-1 S21384C2_nt) C1{ m FC2{ Fl[4]}}


void  S21384C2_nt ::mf21384c2(){}

//skip512 S21384C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21384C1  {
  ::S21384C2_nt s21384c1f0;
  ::S4228C24 s21384c1f1;
  void  mf21384c1(); // _ZN8S21384C19mf21384c1Ev
  virtual  ~S21384C1(); // _ZN8S21384C1D1Ev
  S21384C1(); // tgen
};
//SIG(1 S21384C1) C1{ vd m FC2{ m FC3{ Fl[4]}} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}}}


void  S21384C1 ::mf21384c1(){}
 S21384C1 ::~S21384C1(){ note_dtor("S21384C1", this);}
S21384C1 ::S21384C1(){ note_ctor("S21384C1", this);} // tgen

static void Test_S21384C1()
{
  extern Class_Descriptor cd_S21384C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21384C1, buf);
    S21384C1 *dp, &lv = *(dp=new (buf) S21384C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21384C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21384C1)");
    check_field_offset(lv, s21384c1f0, ABISELECT(8,4), "S21384C1.s21384c1f0");
    check_field_offset(lv, s21384c1f1, ABISELECT(40,20), "S21384C1.s21384c1f1");
    test_class_info(&lv, &cd_S21384C1);
    dp->~S21384C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21384C1(Test_S21384C1, "S21384C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S21384C1C1Ev();
extern void _ZN8S21384C1D1Ev();
Name_Map name_map_S21384C1[] = {
  NSPAIR(_ZN8S21384C1C1Ev),
  NSPAIR(_ZN8S21384C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21384C1[];
extern void _ZN8S21384C1D1Ev();
extern void _ZN8S21384C1D0Ev();
static  VTBL_ENTRY vtc_S21384C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21384C1[0]),
  (VTBL_ENTRY)&_ZN8S21384C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21384C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21384C1[];
extern  VTBL_ENTRY _ZTV8S21384C1[];
Class_Descriptor cd_S21384C1 = {  "S21384C1", // class name
  0,0,//no base classes
  &(vtc_S21384C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S21384C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21384C1),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  S15065C1  {
  char s15065c1f0;
  ::S4228C19_nt s15065c1f1;
  int s15065c1f2;
  ::S4228C19_nt s15065c1f3;
  ::S4228C19_nt s15065c1f4;
  int s15065c1f5[2];
  char s15065c1f6;
  int s15065c1f7[2];
  __tsi64 s15065c1f8;
  void  mf15065c1(); // _ZN8S15065C19mf15065c1Ev
};
//SIG(1 S15065C1) C1{ m Fc FC2{ m Fp Fi FC3{ m}} Fi FC2 FC2 Fi[2] Fc Fi[2] FL}


void  S15065C1 ::mf15065c1(){}

static void Test_S15065C1()
{
  {
    init_simple_test("S15065C1");
    S15065C1 lv;
    check2(sizeof(lv), ABISELECT(96,72), "sizeof(S15065C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15065C1)");
    check_field_offset(lv, s15065c1f0, 0, "S15065C1.s15065c1f0");
    check_field_offset(lv, s15065c1f1, ABISELECT(8,4), "S15065C1.s15065c1f1");
    check_field_offset(lv, s15065c1f2, ABISELECT(24,16), "S15065C1.s15065c1f2");
    check_field_offset(lv, s15065c1f3, ABISELECT(32,20), "S15065C1.s15065c1f3");
    check_field_offset(lv, s15065c1f4, ABISELECT(48,32), "S15065C1.s15065c1f4");
    check_field_offset(lv, s15065c1f5, ABISELECT(64,44), "S15065C1.s15065c1f5");
    check_field_offset(lv, s15065c1f6, ABISELECT(72,52), "S15065C1.s15065c1f6");
    check_field_offset(lv, s15065c1f7, ABISELECT(76,56), "S15065C1.s15065c1f7");
    check_field_offset(lv, s15065c1f8, ABISELECT(88,64), "S15065C1.s15065c1f8");
  }
}
static Arrange_To_Call_Me vS15065C1(Test_S15065C1, "S15065C1", ABISELECT(96,72));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12172C4_nt  {
  char s12172c4f0;
  char s12172c4f1[15];
  void  mf12172c4(); // _ZN11S12172C4_nt9mf12172c4Ev
};
//SIG(-1 S12172C4_nt) C1{ m Fc[16]}


void  S12172C4_nt ::mf12172c4(){}

//skip512 S12172C4_nt

#else // __cplusplus

Class_Descriptor cd_S12172C4_nt = {  "S12172C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12172C3_nt  : S12172C4_nt {
};
//SIG(-1 S12172C3_nt) C1{ BC2{ m Fc[16]}}



//skip512 S12172C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S12172C4_nt;
static Base_Class bases_S12172C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S12172C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S12172C1  {
  ::S4161C4_nt s12172c1f0;
  ::S12172C3_nt s12172c1f1;
  ::S12172C3_nt s12172c1f2;
  int s12172c1f3;
  ::S3423C4_nt s12172c1f4;
};
//SIG(1 S12172C1) C1{ FC2{ m Fp} FC3{ BC4{ m Fc[16]}} FC3 Fi FC5{ m Fi[2]}}



static void Test_S12172C1()
{
  {
    init_simple_test("S12172C1");
    S12172C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S12172C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12172C1)");
    check_field_offset(lv, s12172c1f0, 0, "S12172C1.s12172c1f0");
    check_field_offset(lv, s12172c1f1, ABISELECT(8,4), "S12172C1.s12172c1f1");
    check_field_offset(lv, s12172c1f2, ABISELECT(24,20), "S12172C1.s12172c1f2");
    check_field_offset(lv, s12172c1f3, ABISELECT(40,36), "S12172C1.s12172c1f3");
    check_field_offset(lv, s12172c1f4, ABISELECT(44,40), "S12172C1.s12172c1f4");
  }
}
static Arrange_To_Call_Me vS12172C1(Test_S12172C1, "S12172C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11747C2_nt  {
  __tsi64 s11747c2f0[3];
};
//SIG(-1 S11747C2_nt) C1{ FL[3]}



//skip512 S11747C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11747C4  {
  long s11747c4f0;
  void *s11747c4f1;
};
//SIG(-1 S11747C4) C1{ Fl Fp}



static void Test_S11747C4()
{
  {
    init_simple_test("S11747C4");
    S11747C4 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S11747C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11747C4)");
    check_field_offset(lv, s11747c4f0, 0, "S11747C4.s11747c4f0");
    check_field_offset(lv, s11747c4f1, ABISELECT(8,4), "S11747C4.s11747c4f1");
  }
}
static Arrange_To_Call_Me vS11747C4(Test_S11747C4, "S11747C4", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11747C1  {
  ::S11747C2_nt s11747c1f0;
  ::S10007C29_nt s11747c1f1;
  ::S11747C4 s11747c1f2;
  void *s11747c1f3;
  __tsi64 s11747c1f4;
  void *s11747c1f5;
  long s11747c1f6;
  __tsi64 s11747c1f7[2];
  long s11747c1f8;
};
//SIG(1 S11747C1) C1{ FC2{ FL[3]} FC3{ FL[4]} FC4{ Fl Fp} Fp FL Fp Fl FL[2] Fl}



static void Test_S11747C1()
{
  {
    init_simple_test("S11747C1");
    S11747C1 lv;
    check2(sizeof(lv), ABISELECT(128,104), "sizeof(S11747C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11747C1)");
    check_field_offset(lv, s11747c1f0, 0, "S11747C1.s11747c1f0");
    check_field_offset(lv, s11747c1f1, 24, "S11747C1.s11747c1f1");
    check_field_offset(lv, s11747c1f2, 56, "S11747C1.s11747c1f2");
    check_field_offset(lv, s11747c1f3, ABISELECT(72,64), "S11747C1.s11747c1f3");
    check_field_offset(lv, s11747c1f4, ABISELECT(80,68), "S11747C1.s11747c1f4");
    check_field_offset(lv, s11747c1f5, ABISELECT(88,76), "S11747C1.s11747c1f5");
    check_field_offset(lv, s11747c1f6, ABISELECT(96,80), "S11747C1.s11747c1f6");
    check_field_offset(lv, s11747c1f7, ABISELECT(104,84), "S11747C1.s11747c1f7");
    check_field_offset(lv, s11747c1f8, ABISELECT(120,100), "S11747C1.s11747c1f8");
  }
}
static Arrange_To_Call_Me vS11747C1(Test_S11747C1, "S11747C1", ABISELECT(128,104));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5646C1  : S16749C3 {
  void *s5646c1f0;
};
//SIG(1 S5646C1) C1{ BC2{ m FC3{ m Fi[2]} Fc FC4{ BC5{ BC6{ m Fp Fi[2]}}}} Fp}



static void Test_S5646C1()
{
  extern Class_Descriptor cd_S5646C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S5646C1, buf);
    S5646C1 &lv = *(new (buf) S5646C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S5646C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5646C1)");
    check_base_class_offset(lv, (S16749C3*), 0, "S5646C1");
    check_field_offset(lv, s5646c1f0, ABISELECT(32,24), "S5646C1.s5646c1f0");
    test_class_info(&lv, &cd_S5646C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5646C1(Test_S5646C1, "S5646C1", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S16749C3;
static Base_Class bases_S5646C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16749C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5646C1 = {  "S5646C1", // class name
  bases_S5646C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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  S13319C1  {
  int s13319c1f0[3];
  char s13319c1f1[4];
  void *s13319c1f2;
  int s13319c1f3;
  __tsi64 s13319c1f4;
  int s13319c1f5[10];
  char s13319c1f6[16];
  int s13319c1f7[3];
  char s13319c1f8[164];
};
//SIG(1 S13319C1) C1{ Fi[3] Fc[4] Fp Fi FL Fi[10] Fc[16] Fi[3] Fc[164]}



static void Test_S13319C1()
{
  {
    init_simple_test("S13319C1");
    S13319C1 lv;
    check2(sizeof(lv), ABISELECT(272,264), "sizeof(S13319C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13319C1)");
    check_field_offset(lv, s13319c1f0, 0, "S13319C1.s13319c1f0");
    check_field_offset(lv, s13319c1f1, 12, "S13319C1.s13319c1f1");
    check_field_offset(lv, s13319c1f2, 16, "S13319C1.s13319c1f2");
    check_field_offset(lv, s13319c1f3, ABISELECT(24,20), "S13319C1.s13319c1f3");
    check_field_offset(lv, s13319c1f4, ABISELECT(32,24), "S13319C1.s13319c1f4");
    check_field_offset(lv, s13319c1f5, ABISELECT(40,32), "S13319C1.s13319c1f5");
    check_field_offset(lv, s13319c1f6, ABISELECT(80,72), "S13319C1.s13319c1f6");
    check_field_offset(lv, s13319c1f7, ABISELECT(96,88), "S13319C1.s13319c1f7");
    check_field_offset(lv, s13319c1f8, ABISELECT(108,100), "S13319C1.s13319c1f8");
  }
}
static Arrange_To_Call_Me vS13319C1(Test_S13319C1, "S13319C1", ABISELECT(272,264));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11713C2  {
  long s11713c2f0;
  short s11713c2f1[3];
  long s11713c2f2[2];
  short s11713c2f3[2];
  char s11713c2f4;
};
//SIG(-1 S11713C2) C1{ Fl Fs[3] Fl[2] Fs[2] Fc}



static void Test_S11713C2()
{
  {
    init_simple_test("S11713C2");
    S11713C2 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S11713C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11713C2)");
    check_field_offset(lv, s11713c2f0, 0, "S11713C2.s11713c2f0");
    check_field_offset(lv, s11713c2f1, ABISELECT(8,4), "S11713C2.s11713c2f1");
    check_field_offset(lv, s11713c2f2, ABISELECT(16,12), "S11713C2.s11713c2f2");
    check_field_offset(lv, s11713c2f3, ABISELECT(32,20), "S11713C2.s11713c2f3");
    check_field_offset(lv, s11713c2f4, ABISELECT(36,24), "S11713C2.s11713c2f4");
  }
}
static Arrange_To_Call_Me vS11713C2(Test_S11713C2, "S11713C2", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11713C3  {
  char s11713c3f0[2];
  short s11713c3f1[3];
};
//SIG(-1 S11713C3) C1{ Fc[2] Fs[3]}



static void Test_S11713C3()
{
  {
    init_simple_test("S11713C3");
    S11713C3 lv;
    check2(sizeof(lv), 8, "sizeof(S11713C3)");
    check2(__alignof__(lv), 2, "__alignof__(S11713C3)");
    check_field_offset(lv, s11713c3f0, 0, "S11713C3.s11713c3f0");
    check_field_offset(lv, s11713c3f1, 2, "S11713C3.s11713c3f1");
  }
}
static Arrange_To_Call_Me vS11713C3(Test_S11713C3, "S11713C3", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11713C1  {
  ::S11713C2 s11713c1f0;
  long s11713c1f1;
  ::S11713C3 s11713c1f2;
};
//SIG(1 S11713C1) C1{ FC2{ Fl Fs[3] Fl[2] Fs[2] Fc} Fl FC3{ Fc[2] Fs[3]}}



static void Test_S11713C1()
{
  {
    init_simple_test("S11713C1");
    S11713C1 lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S11713C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11713C1)");
    check_field_offset(lv, s11713c1f0, 0, "S11713C1.s11713c1f0");
    check_field_offset(lv, s11713c1f1, ABISELECT(40,28), "S11713C1.s11713c1f1");
    check_field_offset(lv, s11713c1f2, ABISELECT(48,32), "S11713C1.s11713c1f2");
  }
}
static Arrange_To_Call_Me vS11713C1(Test_S11713C1, "S11713C1", ABISELECT(56,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3897C2_nt  : S20760C9 {
  int s3897c2f0;
  void *s3897c2f1;
  int s3897c2f2;
  virtual  ~S3897C2_nt(); // _ZN10S3897C2_ntD1Ev
  S3897C2_nt(); // tgen
};
//SIG(-1 S3897C2_nt) C1{ BC2{ vd m FL} vd Fi Fp Fi}


 S3897C2_nt ::~S3897C2_nt(){ note_dtor("S3897C2_nt", this);}
S3897C2_nt ::S3897C2_nt(){ note_ctor("S3897C2_nt", this);} // tgen

//skip512 S3897C2_nt

#else // __cplusplus

extern void _ZN10S3897C2_ntC1Ev();
extern void _ZN10S3897C2_ntD1Ev();
Name_Map name_map_S3897C2_nt[] = {
  NSPAIR(_ZN10S3897C2_ntC1Ev),
  NSPAIR(_ZN10S3897C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
static Base_Class bases_S3897C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3897C2_nt[];
extern void _ZN10S3897C2_ntD1Ev();
extern void _ZN10S3897C2_ntD0Ev();
static  VTBL_ENTRY vtc_S3897C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3897C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3897C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3897C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3897C2_nt[];
VTBL_ENTRY *P__ZTI10S3897C2_nt = _ZTI10S3897C2_nt; 
extern  VTBL_ENTRY _ZTV10S3897C2_nt[];
Class_Descriptor cd_S3897C2_nt = {  "S3897C2_nt", // class name
  bases_S3897C2_nt, 1,
  &(vtc_S3897C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI10S3897C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3897C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3897C1  : S3897C2_nt {
  ::S20760C13 s3897c1f0;
  virtual  ~S3897C1(); // _ZN7S3897C1D1Ev
  S3897C1(); // tgen
};
//SIG(1 S3897C1) C1{ BC2{ BC3{ vd m FL} vd Fi Fp Fi} vd FC4{ vd m Fi[6]}}


 S3897C1 ::~S3897C1(){ note_dtor("S3897C1", this);}
S3897C1 ::S3897C1(){ note_ctor("S3897C1", this);} // tgen

static void Test_S3897C1()
{
  extern Class_Descriptor cd_S3897C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,14)];
    init_test(&cd_S3897C1, buf);
    S3897C1 *dp, &lv = *(dp=new (buf) S3897C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S3897C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3897C1)");
    check_base_class_offset(lv, (S20760C9*)(S3897C2_nt*), 0, "S3897C1");
    check_base_class_offset(lv, (S3897C2_nt*), 0, "S3897C1");
    check_field_offset(lv, s3897c1f0, ABISELECT(40,24), "S3897C1.s3897c1f0");
    test_class_info(&lv, &cd_S3897C1);
    dp->~S3897C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3897C1(Test_S3897C1, "S3897C1", ABISELECT(72,52));

#else // __cplusplus

extern void _ZN7S3897C1C1Ev();
extern void _ZN7S3897C1D1Ev();
Name_Map name_map_S3897C1[] = {
  NSPAIR(_ZN7S3897C1C1Ev),
  NSPAIR(_ZN7S3897C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20760C9;
extern VTBL_ENTRY _ZTI8S20760C9[];
extern  VTBL_ENTRY _ZTV8S20760C9[];
extern Class_Descriptor cd_S3897C2_nt;
extern VTBL_ENTRY _ZTI10S3897C2_nt[];
extern  VTBL_ENTRY _ZTV10S3897C2_nt[];
static Base_Class bases_S3897C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20760C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3897C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3897C1[];
extern void _ZN7S3897C1D1Ev();
extern void _ZN7S3897C1D0Ev();
static  VTBL_ENTRY vtc_S3897C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3897C1[0]),
  (VTBL_ENTRY)&_ZN7S3897C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3897C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S3897C1[];
extern  VTBL_ENTRY _ZTV7S3897C1[];
Class_Descriptor cd_S3897C1 = {  "S3897C1", // class name
  bases_S3897C1, 2,
  &(vtc_S3897C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,52), // object size
  NSPAIRA(_ZTI7S3897C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3897C1),4, //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  S16313C1  {
  ::S4228C44 s16313c1f0;
  ::S21384C2_nt s16313c1f1;
  int s16313c1f2;
  void *s16313c1f3;
  void  mf16313c1(); // _ZN8S16313C19mf16313c1Ev
};
//SIG(1 S16313C1) C1{ m FC2{ m Fp Fi[2] FC3{ m}} FC4{ m FC5{ Fl[4]}} Fi Fp}


void  S16313C1 ::mf16313c1(){}

static void Test_S16313C1()
{
  {
    init_simple_test("S16313C1");
    S16313C1 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S16313C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16313C1)");
    check_field_offset(lv, s16313c1f0, 0, "S16313C1.s16313c1f0");
    check_field_offset(lv, s16313c1f1, ABISELECT(24,16), "S16313C1.s16313c1f1");
    check_field_offset(lv, s16313c1f2, ABISELECT(56,32), "S16313C1.s16313c1f2");
    check_field_offset(lv, s16313c1f3, ABISELECT(64,36), "S16313C1.s16313c1f3");
  }
}
static Arrange_To_Call_Me vS16313C1(Test_S16313C1, "S16313C1", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15031C2_nt  {
  char s15031c2f0[8];
  void  mf15031c2(); // _ZN11S15031C2_nt9mf15031c2Ev
};
//SIG(-1 S15031C2_nt) C1{ m Fc[8]}


void  S15031C2_nt ::mf15031c2(){}

//skip512 S15031C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15031C1  {
  char s15031c1f0;
  ::S15031C2_nt s15031c1f1;
  ::S3423C17 s15031c1f2;
  ::S3423C17 s15031c1f3;
  void  mf15031c1(); // _ZN8S15031C19mf15031c1Ev
};
//SIG(1 S15031C1) C1{ m Fc FC2{ m Fc[8]} FC3{ BC4{ BC5{ m Fp Fi[2]}}} FC3}


void  S15031C1 ::mf15031c1(){}

static void Test_S15031C1()
{
  {
    init_simple_test("S15031C1");
    S15031C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S15031C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15031C1)");
    check_field_offset(lv, s15031c1f0, 0, "S15031C1.s15031c1f0");
    check_field_offset(lv, s15031c1f1, 1, "S15031C1.s15031c1f1");
    check_field_offset(lv, s15031c1f2, ABISELECT(16,12), "S15031C1.s15031c1f2");
    check_field_offset(lv, s15031c1f3, ABISELECT(32,24), "S15031C1.s15031c1f3");
  }
}
static Arrange_To_Call_Me vS15031C1(Test_S15031C1, "S15031C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12587C1  {
  int s12587c1f0;
  ::S4228C19_nt s12587c1f1;
  ::S4228C44 s12587c1f2;
};
//SIG(1 S12587C1) C1{ Fi FC2{ m Fp Fi FC3{ m}} FC4{ m Fp Fi[2] FC5{ m}}}



static void Test_S12587C1()
{
  {
    init_simple_test("S12587C1");
    S12587C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S12587C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12587C1)");
    check_field_offset(lv, s12587c1f0, 0, "S12587C1.s12587c1f0");
    check_field_offset(lv, s12587c1f1, ABISELECT(8,4), "S12587C1.s12587c1f1");
    check_field_offset(lv, s12587c1f2, ABISELECT(24,16), "S12587C1.s12587c1f2");
  }
}
static Arrange_To_Call_Me vS12587C1(Test_S12587C1, "S12587C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13180C1  {
  int s13180c1f0[2];
  void *s13180c1f1;
  char s13180c1f2[2];
  void *s13180c1f3[2];
  int s13180c1f4[5];
  void *s13180c1f5[3];
  char s13180c1f6;
  int s13180c1f7;
  char s13180c1f8[2];
};
//SIG(1 S13180C1) C1{ Fi[2] Fp Fc[2] Fp[2] Fi[5] Fp[3] Fc Fi Fc[2]}



static void Test_S13180C1()
{
  {
    init_simple_test("S13180C1");
    S13180C1 lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S13180C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13180C1)");
    check_field_offset(lv, s13180c1f0, 0, "S13180C1.s13180c1f0");
    check_field_offset(lv, s13180c1f1, 8, "S13180C1.s13180c1f1");
    check_field_offset(lv, s13180c1f2, ABISELECT(16,12), "S13180C1.s13180c1f2");
    check_field_offset(lv, s13180c1f3, ABISELECT(24,16), "S13180C1.s13180c1f3");
    check_field_offset(lv, s13180c1f4, ABISELECT(40,24), "S13180C1.s13180c1f4");
    check_field_offset(lv, s13180c1f5, ABISELECT(64,44), "S13180C1.s13180c1f5");
    check_field_offset(lv, s13180c1f6, ABISELECT(88,56), "S13180C1.s13180c1f6");
    check_field_offset(lv, s13180c1f7, ABISELECT(92,60), "S13180C1.s13180c1f7");
    check_field_offset(lv, s13180c1f8, ABISELECT(96,64), "S13180C1.s13180c1f8");
  }
}
static Arrange_To_Call_Me vS13180C1(Test_S13180C1, "S13180C1", ABISELECT(104,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14017C1  {
  __tsi64 s14017c1f0[4];
  void *s14017c1f1[5];
  int s14017c1f2[3];
  char s14017c1f3[3];
  short s14017c1f4[2];
  void *s14017c1f5[3];
  char s14017c1f6[180];
};
//SIG(1 S14017C1) C1{ FL[4] Fp[5] Fi[3] Fc[3] Fs[2] Fp[3] Fc[180]}



static void Test_S14017C1()
{
  {
    init_simple_test("S14017C1");
    S14017C1 lv;
    check2(sizeof(lv), ABISELECT(304,264), "sizeof(S14017C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14017C1)");
    check_field_offset(lv, s14017c1f0, 0, "S14017C1.s14017c1f0");
    check_field_offset(lv, s14017c1f1, 32, "S14017C1.s14017c1f1");
    check_field_offset(lv, s14017c1f2, ABISELECT(72,52), "S14017C1.s14017c1f2");
    check_field_offset(lv, s14017c1f3, ABISELECT(84,64), "S14017C1.s14017c1f3");
    check_field_offset(lv, s14017c1f4, ABISELECT(88,68), "S14017C1.s14017c1f4");
    check_field_offset(lv, s14017c1f5, ABISELECT(96,72), "S14017C1.s14017c1f5");
    check_field_offset(lv, s14017c1f6, ABISELECT(120,84), "S14017C1.s14017c1f6");
  }
}
static Arrange_To_Call_Me vS14017C1(Test_S14017C1, "S14017C1", ABISELECT(304,264));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18216C3  {
  ::S4747C6_nt s18216c3f0;
  char s18216c3f1;
};
//SIG(-1 S18216C3) C1{ FC2{ m Fp[2]} Fc}



static void Test_S18216C3()
{
  {
    init_simple_test("S18216C3");
    S18216C3 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18216C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18216C3)");
    check_field_offset(lv, s18216c3f0, 0, "S18216C3.s18216c3f0");
    check_field_offset(lv, s18216c3f1, ABISELECT(16,8), "S18216C3.s18216c3f1");
  }
}
static Arrange_To_Call_Me vS18216C3(Test_S18216C3, "S18216C3", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18216C2  {
  int s18216c2f0;
  ::S18216C3 s18216c2f1;
  void  mf18216c2(); // _ZN8S18216C29mf18216c2Ev
};
//SIG(-1 S18216C2) C1{ m Fi FC2{ FC3{ m Fp[2]} Fc}}


void  S18216C2 ::mf18216c2(){}

static void Test_S18216C2()
{
  {
    init_simple_test("S18216C2");
    S18216C2 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18216C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18216C2)");
    check_field_offset(lv, s18216c2f0, 0, "S18216C2.s18216c2f0");
    check_field_offset(lv, s18216c2f1, ABISELECT(8,4), "S18216C2.s18216c2f1");
  }
}
static Arrange_To_Call_Me vS18216C2(Test_S18216C2, "S18216C2", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18216C1  {
  void *s18216c1f0[3];
  ::S18216C2 s18216c1f1;
  char s18216c1f2[2];
  void  mf18216c1(); // _ZN8S18216C19mf18216c1Ev
};
//SIG(1 S18216C1) C1{ m Fp[3] FC2{ m Fi FC3{ FC4{ m Fp[2]} Fc}} Fc[2]}


void  S18216C1 ::mf18216c1(){}

static void Test_S18216C1()
{
  {
    init_simple_test("S18216C1");
    S18216C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S18216C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18216C1)");
    check_field_offset(lv, s18216c1f0, 0, "S18216C1.s18216c1f0");
    check_field_offset(lv, s18216c1f1, ABISELECT(24,12), "S18216C1.s18216c1f1");
    check_field_offset(lv, s18216c1f2, ABISELECT(56,28), "S18216C1.s18216c1f2");
  }
}
static Arrange_To_Call_Me vS18216C1(Test_S18216C1, "S18216C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17728C1  {
  void *s17728c1f0;
  int s17728c1f1;
  void *s17728c1f2;
  char s17728c1f3;
  int s17728c1f4;
  __tsi64 s17728c1f5;
  ::S4747C6_nt s17728c1f6;
  ::S4747C6_nt s17728c1f7;
  char s17728c1f8[2];
  void  mf17728c1(); // _ZN8S17728C19mf17728c1Ev
};
//SIG(1 S17728C1) C1{ m Fp Fi Fp Fc Fi FL FC2{ m Fp[2]} FC2 Fc[2]}


void  S17728C1 ::mf17728c1(){}

static void Test_S17728C1()
{
  {
    init_simple_test("S17728C1");
    S17728C1 lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S17728C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17728C1)");
    check_field_offset(lv, s17728c1f0, 0, "S17728C1.s17728c1f0");
    check_field_offset(lv, s17728c1f1, ABISELECT(8,4), "S17728C1.s17728c1f1");
    check_field_offset(lv, s17728c1f2, ABISELECT(16,8), "S17728C1.s17728c1f2");
    check_field_offset(lv, s17728c1f3, ABISELECT(24,12), "S17728C1.s17728c1f3");
    check_field_offset(lv, s17728c1f4, ABISELECT(28,16), "S17728C1.s17728c1f4");
    check_field_offset(lv, s17728c1f5, ABISELECT(32,20), "S17728C1.s17728c1f5");
    check_field_offset(lv, s17728c1f6, ABISELECT(40,28), "S17728C1.s17728c1f6");
    check_field_offset(lv, s17728c1f7, ABISELECT(56,36), "S17728C1.s17728c1f7");
    check_field_offset(lv, s17728c1f8, ABISELECT(72,44), "S17728C1.s17728c1f8");
  }
}
static Arrange_To_Call_Me vS17728C1(Test_S17728C1, "S17728C1", ABISELECT(80,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15724C1  {
  ::S7169C12_nt s15724c1f0;
  ::S4228C44 s15724c1f1;
  void  mf15724c1(); // _ZN8S15724C19mf15724c1Ev
};
//SIG(1 S15724C1) C1{ m FC2{ m FC3{ FL[4]}} FC4{ m Fp Fi[2] FC5{ m}}}


void  S15724C1 ::mf15724c1(){}

static void Test_S15724C1()
{
  {
    init_simple_test("S15724C1");
    S15724C1 lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S15724C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15724C1)");
    check_field_offset(lv, s15724c1f0, 0, "S15724C1.s15724c1f0");
    check_field_offset(lv, s15724c1f1, 32, "S15724C1.s15724c1f1");
  }
}
static Arrange_To_Call_Me vS15724C1(Test_S15724C1, "S15724C1", ABISELECT(56,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11455C2_nt  {
  int s11455c2f0;
  void *s11455c2f1[3];
  int s11455c2f2;
  void *s11455c2f3;
  int s11455c2f4[17];
};
//SIG(-1 S11455C2_nt) C1{ Fi Fp[3] Fi Fp Fi[17]}



//skip512 S11455C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11455C1  {
  ::S11455C2_nt s11455c1f0;
  void *s11455c1f1;
  int s11455c1f2[3];
  __tsi64 s11455c1f3[2];
};
//SIG(1 S11455C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} Fp Fi[3] FL[2]}



static void Test_S11455C1()
{
  {
    init_simple_test("S11455C1");
    S11455C1 lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S11455C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11455C1)");
    check_field_offset(lv, s11455c1f0, 0, "S11455C1.s11455c1f0");
    check_field_offset(lv, s11455c1f1, ABISELECT(120,92), "S11455C1.s11455c1f1");
    check_field_offset(lv, s11455c1f2, ABISELECT(128,96), "S11455C1.s11455c1f2");
    check_field_offset(lv, s11455c1f3, ABISELECT(144,108), "S11455C1.s11455c1f3");
  }
}
static Arrange_To_Call_Me vS11455C1(Test_S11455C1, "S11455C1", ABISELECT(160,124));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17717C1  {
  void *s17717c1f0;
  int s17717c1f1;
  ::S4161C4_nt s17717c1f2;
  ::S4228C44 s17717c1f3;
  void  mf17717c1(); // _ZN8S17717C19mf17717c1Ev
};
//SIG(1 S17717C1) C1{ m Fp Fi FC2{ m Fp} FC3{ m Fp Fi[2] FC4{ m}}}


void  S17717C1 ::mf17717c1(){}

static void Test_S17717C1()
{
  {
    init_simple_test("S17717C1");
    S17717C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S17717C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17717C1)");
    check_field_offset(lv, s17717c1f0, 0, "S17717C1.s17717c1f0");
    check_field_offset(lv, s17717c1f1, ABISELECT(8,4), "S17717C1.s17717c1f1");
    check_field_offset(lv, s17717c1f2, ABISELECT(16,8), "S17717C1.s17717c1f2");
    check_field_offset(lv, s17717c1f3, ABISELECT(24,12), "S17717C1.s17717c1f3");
  }
}
static Arrange_To_Call_Me vS17717C1(Test_S17717C1, "S17717C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17732C1  {
  void *s17732c1f0;
  int s17732c1f1;
  void *s17732c1f2;
  ::S4506C4_nt s17732c1f3;
  char s17732c1f4[2];
  ::S4506C4_nt s17732c1f5;
  int s17732c1f6;
  void  mf17732c1(); // _ZN8S17732C19mf17732c1Ev
};
//SIG(1 S17732C1) C1{ m Fp Fi Fp FC2{ m FC3{ m FL}} Fc[2] FC2 Fi}


void  S17732C1 ::mf17732c1(){}

static void Test_S17732C1()
{
  {
    init_simple_test("S17732C1");
    S17732C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S17732C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17732C1)");
    check_field_offset(lv, s17732c1f0, 0, "S17732C1.s17732c1f0");
    check_field_offset(lv, s17732c1f1, ABISELECT(8,4), "S17732C1.s17732c1f1");
    check_field_offset(lv, s17732c1f2, ABISELECT(16,8), "S17732C1.s17732c1f2");
    check_field_offset(lv, s17732c1f3, ABISELECT(24,12), "S17732C1.s17732c1f3");
    check_field_offset(lv, s17732c1f4, ABISELECT(32,20), "S17732C1.s17732c1f4");
    check_field_offset(lv, s17732c1f5, ABISELECT(40,24), "S17732C1.s17732c1f5");
    check_field_offset(lv, s17732c1f6, ABISELECT(48,32), "S17732C1.s17732c1f6");
  }
}
static Arrange_To_Call_Me vS17732C1(Test_S17732C1, "S17732C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16609C1  {
  int s16609c1f0;
  ::S205C8_nt s16609c1f1;
  ::S205C8_nt s16609c1f2;
  void  mf16609c1(); // _ZN8S16609C19mf16609c1Ev
};
//SIG(1 S16609C1) C1{ m Fi FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} FC2}


void  S16609C1 ::mf16609c1(){}

static void Test_S16609C1()
{
  {
    init_simple_test("S16609C1");
    S16609C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S16609C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16609C1)");
    check_field_offset(lv, s16609c1f0, 0, "S16609C1.s16609c1f0");
    check_field_offset(lv, s16609c1f1, ABISELECT(8,4), "S16609C1.s16609c1f1");
    check_field_offset(lv, s16609c1f2, ABISELECT(24,16), "S16609C1.s16609c1f2");
  }
}
static Arrange_To_Call_Me vS16609C1(Test_S16609C1, "S16609C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6052C2_nt  {
  void *s6052c2f0[4];
  void  mf6052c2(); // _ZN10S6052C2_nt8mf6052c2Ev
};
//SIG(-1 S6052C2_nt) C1{ m Fp[4]}


void  S6052C2_nt ::mf6052c2(){}

//skip512 S6052C2_nt

#else // __cplusplus

Class_Descriptor cd_S6052C2_nt = {  "S6052C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,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  S6052C1  : S6052C2_nt {
  ::S3423C18 s6052c1f0;
  void *s6052c1f1;
  int s6052c1f2;
};
//SIG(1 S6052C1) C1{ BC2{ m Fp[4]} FC3{ BC4{ m Fp Fi[2]}} Fp Fi}



static void Test_S6052C1()
{
  extern Class_Descriptor cd_S6052C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6052C1, buf);
    S6052C1 &lv = *(new (buf) S6052C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6052C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6052C1)");
    check_base_class_offset(lv, (S6052C2_nt*), 0, "S6052C1");
    check_field_offset(lv, s6052c1f0, ABISELECT(32,16), "S6052C1.s6052c1f0");
    check_field_offset(lv, s6052c1f1, ABISELECT(48,28), "S6052C1.s6052c1f1");
    check_field_offset(lv, s6052c1f2, ABISELECT(56,32), "S6052C1.s6052c1f2");
    test_class_info(&lv, &cd_S6052C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6052C1(Test_S6052C1, "S6052C1", ABISELECT(64,36));

#else // __cplusplus

extern Class_Descriptor cd_S6052C2_nt;
static Base_Class bases_S6052C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6052C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6052C1 = {  "S6052C1", // class name
  bases_S6052C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,36), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11384C3_nt  {
  int s11384c3f0[11];
};
//SIG(-1 S11384C3_nt) C1{ Fi[11]}



//skip512 S11384C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11384C1  {
  ::S11455C2_nt s11384c1f0;
  ::S11384C3_nt s11384c1f1;
};
//SIG(1 S11384C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} FC3{ Fi[11]}}



static void Test_S11384C1()
{
  {
    init_simple_test("S11384C1");
    S11384C1 lv;
    check2(sizeof(lv), ABISELECT(168,136), "sizeof(S11384C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11384C1)");
    check_field_offset(lv, s11384c1f0, 0, "S11384C1.s11384c1f0");
    check_field_offset(lv, s11384c1f1, ABISELECT(120,92), "S11384C1.s11384c1f1");
  }
}
static Arrange_To_Call_Me vS11384C1(Test_S11384C1, "S11384C1", ABISELECT(168,136));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17975C1  {
  void *s17975c1f0[2];
  ::S4228C18_nt s17975c1f1;
  void  mf17975c1(); // _ZN8S17975C19mf17975c1Ev
};
//SIG(1 S17975C1) C1{ m Fp[2] FC2{ m FC3{ m Fp Fi FC4{ m}} Fi}}


void  S17975C1 ::mf17975c1(){}

static void Test_S17975C1()
{
  {
    init_simple_test("S17975C1");
    S17975C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S17975C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17975C1)");
    check_field_offset(lv, s17975c1f0, 0, "S17975C1.s17975c1f0");
    check_field_offset(lv, s17975c1f1, ABISELECT(16,8), "S17975C1.s17975c1f1");
  }
}
static Arrange_To_Call_Me vS17975C1(Test_S17975C1, "S17975C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17193C1  {
  int s17193c1f0[3];
  ::S4228C44 s17193c1f1;
  void *s17193c1f2[3];
  void  mf17193c1(); // _ZN8S17193C19mf17193c1Ev
};
//SIG(1 S17193C1) C1{ m Fi[3] FC2{ m Fp Fi[2] FC3{ m}} Fp[3]}


void  S17193C1 ::mf17193c1(){}

static void Test_S17193C1()
{
  {
    init_simple_test("S17193C1");
    S17193C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S17193C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17193C1)");
    check_field_offset(lv, s17193c1f0, 0, "S17193C1.s17193c1f0");
    check_field_offset(lv, s17193c1f1, ABISELECT(16,12), "S17193C1.s17193c1f1");
    check_field_offset(lv, s17193c1f2, ABISELECT(40,28), "S17193C1.s17193c1f2");
  }
}
static Arrange_To_Call_Me vS17193C1(Test_S17193C1, "S17193C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15801C1  {
  ::S10007C19 s15801c1f0;
  ::S10007C26_nt s15801c1f1;
  void  mf15801c1(); // _ZN8S15801C19mf15801c1Ev
};
//SIG(1 S15801C1) C1{ m FC2{ m FC3{ m FL[2]} FC3 FC3 FC3} FC4{ m FL[2]}}


void  S15801C1 ::mf15801c1(){}

static void Test_S15801C1()
{
  {
    init_simple_test("S15801C1");
    S15801C1 lv;
    check2(sizeof(lv), 80, "sizeof(S15801C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15801C1)");
    check_field_offset(lv, s15801c1f0, 0, "S15801C1.s15801c1f0");
    check_field_offset(lv, s15801c1f1, 64, "S15801C1.s15801c1f1");
  }
}
static Arrange_To_Call_Me vS15801C1(Test_S15801C1, "S15801C1", 80);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17817C1  {
  void *s17817c1f0;
  int s17817c1f1[4];
  void *s17817c1f2[5];
  char s17817c1f3;
  int s17817c1f4;
  void *s17817c1f5;
  int s17817c1f6[2];
  void *s17817c1f7;
  void  mf17817c1(); // _ZN8S17817C19mf17817c1Ev
};
//SIG(1 S17817C1) C1{ m Fp Fi[4] Fp[5] Fc Fi Fp Fi[2] Fp}


void  S17817C1 ::mf17817c1(){}

static void Test_S17817C1()
{
  {
    init_simple_test("S17817C1");
    S17817C1 lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S17817C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17817C1)");
    check_field_offset(lv, s17817c1f0, 0, "S17817C1.s17817c1f0");
    check_field_offset(lv, s17817c1f1, ABISELECT(8,4), "S17817C1.s17817c1f1");
    check_field_offset(lv, s17817c1f2, ABISELECT(24,20), "S17817C1.s17817c1f2");
    check_field_offset(lv, s17817c1f3, ABISELECT(64,40), "S17817C1.s17817c1f3");
    check_field_offset(lv, s17817c1f4, ABISELECT(68,44), "S17817C1.s17817c1f4");
    check_field_offset(lv, s17817c1f5, ABISELECT(72,48), "S17817C1.s17817c1f5");
    check_field_offset(lv, s17817c1f6, ABISELECT(80,52), "S17817C1.s17817c1f6");
    check_field_offset(lv, s17817c1f7, ABISELECT(88,60), "S17817C1.s17817c1f7");
  }
}
static Arrange_To_Call_Me vS17817C1(Test_S17817C1, "S17817C1", ABISELECT(96,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11746C1  {
  ::S11747C2_nt s11746c1f0;
  ::S11747C4 s11746c1f1;
  void *s11746c1f2[2];
  long s11746c1f3;
  __tsi64 s11746c1f4[2];
};
//SIG(1 S11746C1) C1{ FC2{ FL[3]} FC3{ Fl Fp} Fp[2] Fl FL[2]}



static void Test_S11746C1()
{
  {
    init_simple_test("S11746C1");
    S11746C1 lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S11746C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11746C1)");
    check_field_offset(lv, s11746c1f0, 0, "S11746C1.s11746c1f0");
    check_field_offset(lv, s11746c1f1, 24, "S11746C1.s11746c1f1");
    check_field_offset(lv, s11746c1f2, ABISELECT(40,32), "S11746C1.s11746c1f2");
    check_field_offset(lv, s11746c1f3, ABISELECT(56,40), "S11746C1.s11746c1f3");
    check_field_offset(lv, s11746c1f4, ABISELECT(64,44), "S11746C1.s11746c1f4");
  }
}
static Arrange_To_Call_Me vS11746C1(Test_S11746C1, "S11746C1", ABISELECT(80,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15332C1  {
  ::S3423C17 s15332c1f0;
  ::S3423C17 s15332c1f1;
  void *s15332c1f2;
  void  mf15332c1(); // _ZN8S15332C19mf15332c1Ev
};
//SIG(1 S15332C1) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC2 Fp}


void  S15332C1 ::mf15332c1(){}

static void Test_S15332C1()
{
  {
    init_simple_test("S15332C1");
    S15332C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S15332C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15332C1)");
    check_field_offset(lv, s15332c1f0, 0, "S15332C1.s15332c1f0");
    check_field_offset(lv, s15332c1f1, ABISELECT(16,12), "S15332C1.s15332c1f1");
    check_field_offset(lv, s15332c1f2, ABISELECT(32,24), "S15332C1.s15332c1f2");
  }
}
static Arrange_To_Call_Me vS15332C1(Test_S15332C1, "S15332C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11618C2_nt  {
  int s11618c2f0[3];
};
//SIG(-1 S11618C2_nt) C1{ Fi[3]}



//skip512 S11618C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11618C1  {
  ::S11618C2_nt s11618c1f0;
  ::S11618C2_nt s11618c1f1;
  ::S11618C2_nt s11618c1f2;
  int s11618c1f3[3];
  long s11618c1f4;
  char s11618c1f5[8];
};
//SIG(1 S11618C1) C1{ FC2{ Fi[3]} FC2 FC2 Fi[3] Fl Fc[8]}



static void Test_S11618C1()
{
  {
    init_simple_test("S11618C1");
    S11618C1 lv;
    check2(sizeof(lv), ABISELECT(64,60), "sizeof(S11618C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11618C1)");
    check_field_offset(lv, s11618c1f0, 0, "S11618C1.s11618c1f0");
    check_field_offset(lv, s11618c1f1, 12, "S11618C1.s11618c1f1");
    check_field_offset(lv, s11618c1f2, 24, "S11618C1.s11618c1f2");
    check_field_offset(lv, s11618c1f3, 36, "S11618C1.s11618c1f3");
    check_field_offset(lv, s11618c1f4, 48, "S11618C1.s11618c1f4");
    check_field_offset(lv, s11618c1f5, ABISELECT(56,52), "S11618C1.s11618c1f5");
  }
}
static Arrange_To_Call_Me vS11618C1(Test_S11618C1, "S11618C1", ABISELECT(64,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14012C1  {
  __tsi64 s14012c1f0[4];
  long s14012c1f1[4];
  __tsi64 s14012c1f2;
  long s14012c1f3[4];
  __tsi64 s14012c1f4[3];
  void *s14012c1f5[2];
};
//SIG(1 S14012C1) C1{ FL[4] Fl[4] FL Fl[4] FL[3] Fp[2]}



static void Test_S14012C1()
{
  {
    init_simple_test("S14012C1");
    S14012C1 lv;
    check2(sizeof(lv), ABISELECT(144,104), "sizeof(S14012C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14012C1)");
    check_field_offset(lv, s14012c1f0, 0, "S14012C1.s14012c1f0");
    check_field_offset(lv, s14012c1f1, 32, "S14012C1.s14012c1f1");
    check_field_offset(lv, s14012c1f2, ABISELECT(64,48), "S14012C1.s14012c1f2");
    check_field_offset(lv, s14012c1f3, ABISELECT(72,56), "S14012C1.s14012c1f3");
    check_field_offset(lv, s14012c1f4, ABISELECT(104,72), "S14012C1.s14012c1f4");
    check_field_offset(lv, s14012c1f5, ABISELECT(128,96), "S14012C1.s14012c1f5");
  }
}
static Arrange_To_Call_Me vS14012C1(Test_S14012C1, "S14012C1", ABISELECT(144,104));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13061C1  {
  int s13061c1f0[2];
  ::S3423C18 s13061c1f1;
  void *s13061c1f2;
  int s13061c1f3;
};
//SIG(1 S13061C1) C1{ Fi[2] FC2{ BC3{ m Fp Fi[2]}} Fp Fi}



static void Test_S13061C1()
{
  {
    init_simple_test("S13061C1");
    S13061C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S13061C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13061C1)");
    check_field_offset(lv, s13061c1f0, 0, "S13061C1.s13061c1f0");
    check_field_offset(lv, s13061c1f1, 8, "S13061C1.s13061c1f1");
    check_field_offset(lv, s13061c1f2, ABISELECT(24,20), "S13061C1.s13061c1f2");
    check_field_offset(lv, s13061c1f3, ABISELECT(32,24), "S13061C1.s13061c1f3");
  }
}
static Arrange_To_Call_Me vS13061C1(Test_S13061C1, "S13061C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7756C3  : virtual S4228C37 , S4228C27 {
  ~S7756C3(); // tgen
  S7756C3(); // tgen
};
//SIG(-1 S7756C3) C1{ VBC2{ m} BC3{ m}}


S7756C3 ::~S7756C3(){ note_dtor("S7756C3", this);} // tgen
S7756C3 ::S7756C3(){ note_ctor("S7756C3", this);} // tgen

static void Test_S7756C3()
{
  extern Class_Descriptor cd_S7756C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7756C3, buf);
    S7756C3 *dp, &lv = *(dp=new (buf) S7756C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7756C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7756C3)");
    check_base_class_offset(lv, (S4228C37*), 0, "S7756C3");
    check_base_class_offset(lv, (S4228C27*), 0, "S7756C3");
    test_class_info(&lv, &cd_S7756C3);
    dp->~S7756C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7756C3(Test_S7756C3, "S7756C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7756C3C1Ev();
extern void _ZN7S7756C3D1Ev();
Name_Map name_map_S7756C3[] = {
  NSPAIR(_ZN7S7756C3C1Ev),
  NSPAIR(_ZN7S7756C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
static Base_Class bases_S7756C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7756C3[];
static  VTBL_ENTRY vtc_S7756C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C3[0]),
};
extern VTBL_ENTRY _ZTV7S7756C3[];
static  VTT_ENTRY vtt_S7756C3[] = {
  {&(_ZTV7S7756C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7756C3[];
extern  VTBL_ENTRY _ZTV7S7756C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C3[];
Class_Descriptor cd_S7756C3 = {  "S7756C3", // class name
  bases_S7756C3, 2,
  &(vtc_S7756C3[0]), // expected_vtbl_contents
  &(vtt_S7756C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7756C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7756C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7756C3),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  S7756C2  : virtual S7756C3 {
  virtual  ~S7756C2(); // _ZN7S7756C2D2Ev
  S7756C2(); // tgen
};
//SIG(-1 S7756C2) C1{ VBC2{ VBC3{ m} BC4{ m}} vd}


 S7756C2 ::~S7756C2(){ note_dtor("S7756C2", this);}
S7756C2 ::S7756C2(){ note_ctor("S7756C2", this);} // tgen

static void Test_S7756C2()
{
  extern Class_Descriptor cd_S7756C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7756C2, buf);
    S7756C2 *dp, &lv = *(dp=new (buf) S7756C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7756C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7756C2)");
    check_base_class_offset(lv, (S4228C37*)(S7756C3*), 0, "S7756C2");
    check_base_class_offset(lv, (S4228C27*)(S7756C3*), 0, "S7756C2");
    check_base_class_offset(lv, (S7756C3*), 0, "S7756C2");
    test_class_info(&lv, &cd_S7756C2);
    dp->~S7756C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7756C2(Test_S7756C2, "S7756C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7756C2C1Ev();
extern void _ZN7S7756C2D2Ev();
Name_Map name_map_S7756C2[] = {
  NSPAIR(_ZN7S7756C2C1Ev),
  NSPAIR(_ZN7S7756C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7756C3;
extern VTBL_ENTRY _ZTI7S7756C3[];
extern  VTBL_ENTRY _ZTV7S7756C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C3[];
static Base_Class bases_S7756C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7756C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7756C2[];
extern void _ZN7S7756C2D1Ev();
extern void _ZN7S7756C2D0Ev();
static  VTBL_ENTRY vtc_S7756C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C2[0]),
  (VTBL_ENTRY)&_ZN7S7756C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7756C2D0Ev,
};
extern VTBL_ENTRY _ZTV7S7756C2[];
static  VTBL_ENTRY _tg__ZTV7S7756C3__7S7756C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C3[0]),
};
static  VTT_ENTRY vtt_S7756C2[] = {
  {&(_ZTV7S7756C2[4]),  4,6},
  {&(_ZTV7S7756C2[4]),  4,6},
  {&(_tg__ZTV7S7756C3__7S7756C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7756C2[];
extern  VTBL_ENTRY _ZTV7S7756C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C2[];
Class_Descriptor cd_S7756C2 = {  "S7756C2", // class name
  bases_S7756C2, 3,
  &(vtc_S7756C2[0]), // expected_vtbl_contents
  &(vtt_S7756C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7756C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7756C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7756C2),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  S7756C1  : S7756C2 {
  int s7756c1f0;
  virtual  ~S7756C1(); // _ZN7S7756C1D2Ev
  S7756C1(); // tgen
};
//SIG(1 S7756C1) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m}} vd} vd Fi}


 S7756C1 ::~S7756C1(){ note_dtor("S7756C1", this);}
S7756C1 ::S7756C1(){ note_ctor("S7756C1", this);} // tgen

static void Test_S7756C1()
{
  extern Class_Descriptor cd_S7756C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7756C1, buf);
    S7756C1 *dp, &lv = *(dp=new (buf) S7756C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7756C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7756C1)");
    check_base_class_offset(lv, (S4228C37*)(S7756C3*), 0, "S7756C1");
    check_base_class_offset(lv, (S4228C27*)(S7756C3*), 0, "S7756C1");
    check_base_class_offset(lv, (S7756C3*)(S7756C2*), 0, "S7756C1");
    check_base_class_offset(lv, (S7756C2*), 0, "S7756C1");
    check_field_offset(lv, s7756c1f0, ABISELECT(8,4), "S7756C1.s7756c1f0");
    test_class_info(&lv, &cd_S7756C1);
    dp->~S7756C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7756C1(Test_S7756C1, "S7756C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7756C1C1Ev();
extern void _ZN7S7756C1D2Ev();
Name_Map name_map_S7756C1[] = {
  NSPAIR(_ZN7S7756C1C1Ev),
  NSPAIR(_ZN7S7756C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S4228C27;
extern VTBL_ENTRY _ZTI8S4228C27[];
extern Class_Descriptor cd_S7756C3;
extern VTBL_ENTRY _ZTI7S7756C3[];
extern  VTBL_ENTRY _ZTV7S7756C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C3[];
extern Class_Descriptor cd_S7756C2;
extern VTBL_ENTRY _ZTI7S7756C2[];
extern  VTBL_ENTRY _ZTV7S7756C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C2[];
static Base_Class bases_S7756C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4228C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7756C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7756C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7756C1[];
extern void _ZN7S7756C1D1Ev();
extern void _ZN7S7756C1D0Ev();
static  VTBL_ENTRY vtc_S7756C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C1[0]),
  (VTBL_ENTRY)&_ZN7S7756C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7756C1D0Ev,
};
extern VTBL_ENTRY _ZTV7S7756C1[];
extern void _ZN7S7756C2D1Ev();
extern void _ZN7S7756C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7756C2__7S7756C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C2[0]),
  (VTBL_ENTRY)&_ZN7S7756C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7756C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S7756C3__7S7756C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7756C3[0]),
};
static  VTT_ENTRY vtt_S7756C1[] = {
  {&(_ZTV7S7756C1[4]),  4,6},
  {&(_tg__ZTV7S7756C2__7S7756C1[4]),  4,6},
  {&(_tg__ZTV7S7756C2__7S7756C1[4]),  4,6},
  {&(_ZTV7S7756C1[4]),  4,6},
  {&(_tg__ZTV7S7756C3__7S7756C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S7756C1[];
extern  VTBL_ENTRY _ZTV7S7756C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7756C1[];
Class_Descriptor cd_S7756C1 = {  "S7756C1", // class name
  bases_S7756C1, 4,
  &(vtc_S7756C1[0]), // expected_vtbl_contents
  &(vtt_S7756C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7756C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7756C1),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7756C1),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18073C1  {
  void *s18073c1f0[2];
  int s18073c1f1;
  ::S4228C19_nt s18073c1f2;
  void  mf18073c1(); // _ZN8S18073C19mf18073c1Ev
};
//SIG(1 S18073C1) C1{ m Fp[2] Fi FC2{ m Fp Fi FC3{ m}}}


void  S18073C1 ::mf18073c1(){}

static void Test_S18073C1()
{
  {
    init_simple_test("S18073C1");
    S18073C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18073C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18073C1)");
    check_field_offset(lv, s18073c1f0, 0, "S18073C1.s18073c1f0");
    check_field_offset(lv, s18073c1f1, ABISELECT(16,8), "S18073C1.s18073c1f1");
    check_field_offset(lv, s18073c1f2, ABISELECT(24,12), "S18073C1.s18073c1f2");
  }
}
static Arrange_To_Call_Me vS18073C1(Test_S18073C1, "S18073C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C4  {
  int s967c4f0[4];
  void *s967c4f1;
  void  mf967c4(); // _ZN6S967C47mf967c4Ev
};
//SIG(-1 S967C4) C1{ m Fi[4] Fp}


void  S967C4 ::mf967c4(){}

static void Test_S967C4()
{
  {
    init_simple_test("S967C4");
    S967C4 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S967C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C4)");
    check_field_offset(lv, s967c4f0, 0, "S967C4.s967c4f0");
    check_field_offset(lv, s967c4f1, 16, "S967C4.s967c4f1");
  }
}
static Arrange_To_Call_Me vS967C4(Test_S967C4, "S967C4", ABISELECT(24,20));

#else // __cplusplus

Class_Descriptor cd_S967C4 = {  "S967C4", // class name
  0,0,//no base classes
  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  S967C3  : S967C4 {
  void *s967c3f0[2];
};
//SIG(-1 S967C3) C1{ BC2{ m Fi[4] Fp} Fp[2]}



static void Test_S967C3()
{
  extern Class_Descriptor cd_S967C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S967C3, buf);
    S967C3 &lv = *(new (buf) S967C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S967C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C3)");
    check_base_class_offset(lv, (S967C4*), 0, "S967C3");
    check_field_offset(lv, s967c3f0, ABISELECT(24,20), "S967C3.s967c3f0");
    test_class_info(&lv, &cd_S967C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS967C3(Test_S967C3, "S967C3", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S967C4;
static Base_Class bases_S967C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S967C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S967C3 = {  "S967C3", // class name
  bases_S967C3, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C2  : S967C3 {
};
//SIG(-1 S967C2) C1{ BC2{ BC3{ m Fi[4] Fp} Fp[2]}}



static void Test_S967C2()
{
  extern Class_Descriptor cd_S967C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S967C2, buf);
    S967C2 &lv = *(new (buf) S967C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S967C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C2)");
    check_base_class_offset(lv, (S967C4*)(S967C3*), 0, "S967C2");
    check_base_class_offset(lv, (S967C3*), 0, "S967C2");
    test_class_info(&lv, &cd_S967C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS967C2(Test_S967C2, "S967C2", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S967C4;
extern Class_Descriptor cd_S967C3;
static Base_Class bases_S967C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S967C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S967C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S967C2 = {  "S967C2", // class name
  bases_S967C2, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S967C1  : S967C2 {
};
//SIG(1 S967C1) C1{ BC2{ BC3{ BC4{ m Fi[4] Fp} Fp[2]}}}



static void Test_S967C1()
{
  extern Class_Descriptor cd_S967C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S967C1, buf);
    S967C1 &lv = *(new (buf) S967C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S967C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S967C1)");
    check_base_class_offset(lv, (S967C4*)(S967C3*)(S967C2*), 0, "S967C1");
    check_base_class_offset(lv, (S967C3*)(S967C2*), 0, "S967C1");
    check_base_class_offset(lv, (S967C2*), 0, "S967C1");
    test_class_info(&lv, &cd_S967C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS967C1(Test_S967C1, "S967C1", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S967C4;
extern Class_Descriptor cd_S967C3;
extern Class_Descriptor cd_S967C2;
static Base_Class bases_S967C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S967C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S967C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S967C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S967C1 = {  "S967C1", // class name
  bases_S967C1, 3,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10547C1  {
  char s10547c1f0:8;
  char s10547c1f1:4;
  char s10547c1f2:2;
  unsigned char s10547c1f3:1;
  unsigned char s10547c1f4:1;
  char s10547c1f5:8;
};
//SIG(1 S10547C1) C1{ Fc:8 Fc:4 Fc:2 Fc:1 Fc:1 Fc:8}



static void Test_S10547C1()
{
  {
    init_simple_test("S10547C1");
    static S10547C1 lv;
    check2(sizeof(lv), 3, "sizeof(S10547C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10547C1)");
    set_bf_and_test(lv, s10547c1f0, 0, 0, 8, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f0, 0, 0, 8, hide_sll(1LL<<7), "S10547C1");
    set_bf_and_test(lv, s10547c1f1, 1, 0, 4, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f1, 1, 0, 4, hide_sll(1LL<<3), "S10547C1");
    set_bf_and_test(lv, s10547c1f2, 1, 4, 2, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f2, 1, 4, 2, hide_sll(1LL<<1), "S10547C1");
    set_bf_and_test(lv, s10547c1f3, 1, 6, 1, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f4, 1, 7, 1, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f5, 2, 0, 8, 1, "S10547C1");
    set_bf_and_test(lv, s10547c1f5, 2, 0, 8, hide_sll(1LL<<7), "S10547C1");
  }
}
static Arrange_To_Call_Me vS10547C1(Test_S10547C1, "S10547C1", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S22035C1  {
  void *s22035c1f0;
  int s22035c1f1;
  void *s22035c1f2;
  virtual  ~S22035C1(); // _ZN8S22035C1D1Ev
  virtual void  v1(); // _ZN8S22035C12v1Ev
  virtual void  v2(); // _ZN8S22035C12v2Ev
  virtual void  v3(); // _ZN8S22035C12v3Ev
  virtual void  v4(); // _ZN8S22035C12v4Ev
  virtual void  v5(); // _ZN8S22035C12v5Ev
  virtual void  v6(); // _ZN8S22035C12v6Ev
  S22035C1(); // tgen
};
//SIG(1 S22035C1) C1{ vd v1 v2 v3 v4 v5 v6 Fp Fi Fp}


 S22035C1 ::~S22035C1(){ note_dtor("S22035C1", this);}
void  S22035C1 ::v1(){vfunc_called(this, "_ZN8S22035C12v1Ev");}
void  S22035C1 ::v2(){vfunc_called(this, "_ZN8S22035C12v2Ev");}
void  S22035C1 ::v3(){vfunc_called(this, "_ZN8S22035C12v3Ev");}
void  S22035C1 ::v4(){vfunc_called(this, "_ZN8S22035C12v4Ev");}
void  S22035C1 ::v5(){vfunc_called(this, "_ZN8S22035C12v5Ev");}
void  S22035C1 ::v6(){vfunc_called(this, "_ZN8S22035C12v6Ev");}
S22035C1 ::S22035C1(){ note_ctor("S22035C1", this);} // tgen

static void Test_S22035C1()
{
  extern Class_Descriptor cd_S22035C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S22035C1, buf);
    S22035C1 *dp, &lv = *(dp=new (buf) S22035C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S22035C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22035C1)");
    check_field_offset(lv, s22035c1f0, ABISELECT(8,4), "S22035C1.s22035c1f0");
    check_field_offset(lv, s22035c1f1, ABISELECT(16,8), "S22035C1.s22035c1f1");
    check_field_offset(lv, s22035c1f2, ABISELECT(24,12), "S22035C1.s22035c1f2");
    test_class_info(&lv, &cd_S22035C1);
    dp->~S22035C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22035C1(Test_S22035C1, "S22035C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S22035C1C1Ev();
extern void _ZN8S22035C1D1Ev();
Name_Map name_map_S22035C1[] = {
  NSPAIR(_ZN8S22035C1C1Ev),
  NSPAIR(_ZN8S22035C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22035C1[];
extern void _ZN8S22035C1D1Ev();
extern void _ZN8S22035C1D0Ev();
extern void _ZN8S22035C12v1Ev();
extern void _ZN8S22035C12v2Ev();
extern void _ZN8S22035C12v3Ev();
extern void _ZN8S22035C12v4Ev();
extern void _ZN8S22035C12v5Ev();
extern void _ZN8S22035C12v6Ev();
static  VTBL_ENTRY vtc_S22035C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22035C1[0]),
  (VTBL_ENTRY)&_ZN8S22035C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22035C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22035C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S22035C1[];
extern  VTBL_ENTRY _ZTV8S22035C1[];
Class_Descriptor cd_S22035C1 = {  "S22035C1", // class name
  0,0,//no base classes
  &(vtc_S22035C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S22035C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22035C1),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  S18806C1  {
  void *s18806c1f0;
  int s18806c1f1:2;
  virtual void  v1(); // _ZN8S18806C12v1Ev
  virtual void  v2(); // _ZN8S18806C12v2Ev
  virtual void  v3(); // _ZN8S18806C12v3Ev
  virtual void  v4(); // _ZN8S18806C12v4Ev
  virtual void  v5(); // _ZN8S18806C12v5Ev
  virtual void  v6(); // _ZN8S18806C12v6Ev
  virtual void  v7(); // _ZN8S18806C12v7Ev
  ~S18806C1(); // tgen
  S18806C1(); // tgen
};
//SIG(1 S18806C1) C1{ v1 v2 v3 v4 v5 v6 v7 Fp Fi:2}


void  S18806C1 ::v1(){vfunc_called(this, "_ZN8S18806C12v1Ev");}
void  S18806C1 ::v2(){vfunc_called(this, "_ZN8S18806C12v2Ev");}
void  S18806C1 ::v3(){vfunc_called(this, "_ZN8S18806C12v3Ev");}
void  S18806C1 ::v4(){vfunc_called(this, "_ZN8S18806C12v4Ev");}
void  S18806C1 ::v5(){vfunc_called(this, "_ZN8S18806C12v5Ev");}
void  S18806C1 ::v6(){vfunc_called(this, "_ZN8S18806C12v6Ev");}
void  S18806C1 ::v7(){vfunc_called(this, "_ZN8S18806C12v7Ev");}
S18806C1 ::~S18806C1(){ note_dtor("S18806C1", this);} // tgen
S18806C1 ::S18806C1(){ note_ctor("S18806C1", this);} // tgen

static void Test_S18806C1()
{
  extern Class_Descriptor cd_S18806C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S18806C1, buf);
    S18806C1 *dp, &lv = *(dp=new (buf) S18806C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S18806C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18806C1)");
    check_field_offset(lv, s18806c1f0, ABISELECT(8,4), "S18806C1.s18806c1f0");
    set_bf_and_test(lv, s18806c1f1, ABISELECT(16,8), 0, 2, 1, "S18806C1");
    set_bf_and_test(lv, s18806c1f1, ABISELECT(16,8), 0, 2, hide_sll(1LL<<1), "S18806C1");
    test_class_info(&lv, &cd_S18806C1);
    dp->~S18806C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18806C1(Test_S18806C1, "S18806C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S18806C1C1Ev();
extern void _ZN8S18806C1D1Ev();
Name_Map name_map_S18806C1[] = {
  NSPAIR(_ZN8S18806C1C1Ev),
  NSPAIR(_ZN8S18806C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18806C1[];
extern void _ZN8S18806C12v1Ev();
extern void _ZN8S18806C12v2Ev();
extern void _ZN8S18806C12v3Ev();
extern void _ZN8S18806C12v4Ev();
extern void _ZN8S18806C12v5Ev();
extern void _ZN8S18806C12v6Ev();
extern void _ZN8S18806C12v7Ev();
static  VTBL_ENTRY vtc_S18806C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18806C1[0]),
  (VTBL_ENTRY)&_ZN8S18806C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18806C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S18806C1[];
extern  VTBL_ENTRY _ZTV8S18806C1[];
Class_Descriptor cd_S18806C1 = {  "S18806C1", // class name
  0,0,//no base classes
  &(vtc_S18806C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S18806C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18806C1),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  S11667C2_nt  {
  int s11667c2f0;
};
//SIG(-1 S11667C2_nt) C1{ Fi}



//skip512 S11667C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11667C1  {
  ::S11667C2_nt s11667c1f0;
  char s11667c1f1[16];
  long s11667c1f2[101];
  __tsi64 s11667c1f3[3];
};
//SIG(1 S11667C1) C1{ FC2{ Fi} Fc[16] Fl[101] FL[3]}



static void Test_S11667C1()
{
  {
    init_simple_test("S11667C1");
    S11667C1 lv;
    check2(sizeof(lv), ABISELECT(856,448), "sizeof(S11667C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11667C1)");
    check_field_offset(lv, s11667c1f0, 0, "S11667C1.s11667c1f0");
    check_field_offset(lv, s11667c1f1, 4, "S11667C1.s11667c1f1");
    check_field_offset(lv, s11667c1f2, ABISELECT(24,20), "S11667C1.s11667c1f2");
    check_field_offset(lv, s11667c1f3, ABISELECT(832,424), "S11667C1.s11667c1f3");
  }
}
static Arrange_To_Call_Me vS11667C1(Test_S11667C1, "S11667C1", ABISELECT(856,448));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17229C1  {
  int s17229c1f0[4];
  ::S4228C19_nt s17229c1f1;
  void  mf17229c1(); // _ZN8S17229C19mf17229c1Ev
};
//SIG(1 S17229C1) C1{ m Fi[4] FC2{ m Fp Fi FC3{ m}}}


void  S17229C1 ::mf17229c1(){}

static void Test_S17229C1()
{
  {
    init_simple_test("S17229C1");
    S17229C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S17229C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17229C1)");
    check_field_offset(lv, s17229c1f0, 0, "S17229C1.s17229c1f0");
    check_field_offset(lv, s17229c1f1, 16, "S17229C1.s17229c1f1");
  }
}
static Arrange_To_Call_Me vS17229C1(Test_S17229C1, "S17229C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5924C1  : S9946C3 {
  ::S4161C4_nt s5924c1f0;
  virtual  ~S5924C1(); // _ZN7S5924C1D1Ev
  S5924C1(); // tgen
};
//SIG(1 S5924C1) C1{ BC2{ m FL[2] Fl} vd FC3{ m Fp}}


 S5924C1 ::~S5924C1(){ note_dtor("S5924C1", this);}
S5924C1 ::S5924C1(){ note_ctor("S5924C1", this);} // tgen

static void Test_S5924C1()
{
  extern Class_Descriptor cd_S5924C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S5924C1, buf);
    S5924C1 *dp, &lv = *(dp=new (buf) S5924C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S5924C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5924C1)");
    check_base_class_offset(lv, (S9946C3*), ABISELECT(8,4), "S5924C1");
    check_field_offset(lv, s5924c1f0, ABISELECT(32,24), "S5924C1.s5924c1f0");
    test_class_info(&lv, &cd_S5924C1);
    dp->~S5924C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5924C1(Test_S5924C1, "S5924C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S5924C1C1Ev();
extern void _ZN7S5924C1D1Ev();
Name_Map name_map_S5924C1[] = {
  NSPAIR(_ZN7S5924C1C1Ev),
  NSPAIR(_ZN7S5924C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9946C3;
extern VTBL_ENTRY _ZTI7S9946C3[];
static Base_Class bases_S5924C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9946C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5924C1[];
extern void _ZN7S5924C1D1Ev();
extern void _ZN7S5924C1D0Ev();
static  VTBL_ENTRY vtc_S5924C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5924C1[0]),
  (VTBL_ENTRY)&_ZN7S5924C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5924C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S5924C1[];
extern  VTBL_ENTRY _ZTV7S5924C1[];
Class_Descriptor cd_S5924C1 = {  "S5924C1", // class name
  bases_S5924C1, 1,
  &(vtc_S5924C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S5924C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5924C1),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  S13290C1  {
  int s13290c1f0[3];
  char s13290c1f1;
  __tsi64 s13290c1f2;
  int s13290c1f3[5];
  char s13290c1f4[4];
  int s13290c1f5;
};
//SIG(1 S13290C1) C1{ Fi[3] Fc FL Fi[5] Fc[4] Fi}



static void Test_S13290C1()
{
  {
    init_simple_test("S13290C1");
    S13290C1 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S13290C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13290C1)");
    check_field_offset(lv, s13290c1f0, 0, "S13290C1.s13290c1f0");
    check_field_offset(lv, s13290c1f1, 12, "S13290C1.s13290c1f1");
    check_field_offset(lv, s13290c1f2, 16, "S13290C1.s13290c1f2");
    check_field_offset(lv, s13290c1f3, 24, "S13290C1.s13290c1f3");
    check_field_offset(lv, s13290c1f4, 44, "S13290C1.s13290c1f4");
    check_field_offset(lv, s13290c1f5, 48, "S13290C1.s13290c1f5");
  }
}
static Arrange_To_Call_Me vS13290C1(Test_S13290C1, "S13290C1", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5749C2  {
  int s5749c2f0;
  int s5749c2f1:4;
  int s5749c2f2;
  void  mf5749c2(); // _ZN7S5749C28mf5749c2Ev
};
//SIG(-1 S5749C2) C1{ m Fi Fi:4 Fi}


void  S5749C2 ::mf5749c2(){}

static void Test_S5749C2()
{
  {
    init_simple_test("S5749C2");
    static S5749C2 lv;
    check2(sizeof(lv), 12, "sizeof(S5749C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5749C2)");
    check_field_offset(lv, s5749c2f0, 0, "S5749C2.s5749c2f0");
    set_bf_and_test(lv, s5749c2f1, 4, 0, 4, 1, "S5749C2");
    set_bf_and_test(lv, s5749c2f1, 4, 0, 4, hide_sll(1LL<<3), "S5749C2");
    check_field_offset(lv, s5749c2f2, 8, "S5749C2.s5749c2f2");
  }
}
static Arrange_To_Call_Me vS5749C2(Test_S5749C2, "S5749C2", 12);

#else // __cplusplus

Class_Descriptor cd_S5749C2 = {  "S5749C2", // 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  S5749C1  : S5749C2 {
  int s5749c1f0:5;
  int s5749c1f1:6;
};
//SIG(1 S5749C1) C1{ BC2{ m Fi Fi:4 Fi} Fi:5 Fi:6}



static void Test_S5749C1()
{
  extern Class_Descriptor cd_S5749C1;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S5749C1, buf);
    S5749C1 &lv = *(new (buf) S5749C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S5749C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5749C1)");
    check_base_class_offset(lv, (S5749C2*), 0, "S5749C1");
    set_bf_and_test(lv, s5749c1f0, 12, 0, 5, 1, "S5749C1");
    set_bf_and_test(lv, s5749c1f0, 12, 0, 5, hide_sll(1LL<<4), "S5749C1");
    set_bf_and_test(lv, s5749c1f1, 12, 5, 6, 1, "S5749C1");
    set_bf_and_test(lv, s5749c1f1, 12, 5, 6, hide_sll(1LL<<5), "S5749C1");
    test_class_info(&lv, &cd_S5749C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5749C1(Test_S5749C1, "S5749C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S5749C2;
static Base_Class bases_S5749C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5749C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5749C1 = {  "S5749C1", // class name
  bases_S5749C1, 1,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18316C1  {
  void *s18316c1f0[3];
  int s18316c1f1;
  void *s18316c1f2[2];
  int s18316c1f3;
  void *s18316c1f4[4];
  void  mf18316c1(); // _ZN8S18316C19mf18316c1Ev
};
//SIG(1 S18316C1) C1{ m Fp[3] Fi Fp[2] Fi Fp[4]}


void  S18316C1 ::mf18316c1(){}

static void Test_S18316C1()
{
  {
    init_simple_test("S18316C1");
    S18316C1 lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S18316C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18316C1)");
    check_field_offset(lv, s18316c1f0, 0, "S18316C1.s18316c1f0");
    check_field_offset(lv, s18316c1f1, ABISELECT(24,12), "S18316C1.s18316c1f1");
    check_field_offset(lv, s18316c1f2, ABISELECT(32,16), "S18316C1.s18316c1f2");
    check_field_offset(lv, s18316c1f3, ABISELECT(48,24), "S18316C1.s18316c1f3");
    check_field_offset(lv, s18316c1f4, ABISELECT(56,28), "S18316C1.s18316c1f4");
  }
}
static Arrange_To_Call_Me vS18316C1(Test_S18316C1, "S18316C1", ABISELECT(88,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20041C2  {
  short s20041c2f0;
  int s20041c2f1;
  virtual void  v2(); // _ZN8S20041C22v2Ev
  virtual void  v3(); // _ZN8S20041C22v3Ev
  virtual void  v4(); // _ZN8S20041C22v4Ev
  ~S20041C2(); // tgen
  S20041C2(); // tgen
};
//SIG(-1 S20041C2) C1{ v1 v2 v3 Fs Fi}


void  S20041C2 ::v2(){vfunc_called(this, "_ZN8S20041C22v2Ev");}
void  S20041C2 ::v3(){vfunc_called(this, "_ZN8S20041C22v3Ev");}
void  S20041C2 ::v4(){vfunc_called(this, "_ZN8S20041C22v4Ev");}
S20041C2 ::~S20041C2(){ note_dtor("S20041C2", this);} // tgen
S20041C2 ::S20041C2(){ note_ctor("S20041C2", this);} // tgen

static void Test_S20041C2()
{
  extern Class_Descriptor cd_S20041C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20041C2, buf);
    S20041C2 *dp, &lv = *(dp=new (buf) S20041C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20041C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20041C2)");
    check_field_offset(lv, s20041c2f0, ABISELECT(8,4), "S20041C2.s20041c2f0");
    check_field_offset(lv, s20041c2f1, ABISELECT(12,8), "S20041C2.s20041c2f1");
    test_class_info(&lv, &cd_S20041C2);
    dp->~S20041C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20041C2(Test_S20041C2, "S20041C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S20041C2C1Ev();
extern void _ZN8S20041C2D1Ev();
Name_Map name_map_S20041C2[] = {
  NSPAIR(_ZN8S20041C2C1Ev),
  NSPAIR(_ZN8S20041C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20041C2[];
extern void _ZN8S20041C22v2Ev();
extern void _ZN8S20041C22v3Ev();
extern void _ZN8S20041C22v4Ev();
static  VTBL_ENTRY vtc_S20041C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20041C2[0]),
  (VTBL_ENTRY)&_ZN8S20041C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v4Ev,
};
extern VTBL_ENTRY _ZTI8S20041C2[];
extern  VTBL_ENTRY _ZTV8S20041C2[];
Class_Descriptor cd_S20041C2 = {  "S20041C2", // class name
  0,0,//no base classes
  &(vtc_S20041C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S20041C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20041C2),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  S20041C1  : virtual S20041C2 {
  void *s20041c1f0;
  virtual void  v1(); // _ZN8S20041C12v1Ev
  ~S20041C1(); // tgen
  S20041C1(); // tgen
};
//SIG(1 S20041C1) C1{ VBC2{ v2 v3 v4 Fs Fi} v1 Fp}


void  S20041C1 ::v1(){vfunc_called(this, "_ZN8S20041C12v1Ev");}
S20041C1 ::~S20041C1(){ note_dtor("S20041C1", this);} // tgen
S20041C1 ::S20041C1(){ note_ctor("S20041C1", this);} // tgen

static void Test_S20041C1()
{
  extern Class_Descriptor cd_S20041C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20041C1, buf);
    S20041C1 *dp, &lv = *(dp=new (buf) S20041C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20041C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20041C1)");
    check_base_class_offset(lv, (S20041C2*), ABISELECT(16,8), "S20041C1");
    check_field_offset(lv, s20041c1f0, ABISELECT(8,4), "S20041C1.s20041c1f0");
    test_class_info(&lv, &cd_S20041C1);
    dp->~S20041C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20041C1(Test_S20041C1, "S20041C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20041C1C1Ev();
extern void _ZN8S20041C1D1Ev();
Name_Map name_map_S20041C1[] = {
  NSPAIR(_ZN8S20041C1C1Ev),
  NSPAIR(_ZN8S20041C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20041C2;
extern VTBL_ENTRY _ZTI8S20041C2[];
extern  VTBL_ENTRY _ZTV8S20041C2[];
static Base_Class bases_S20041C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20041C2,    ABISELECT(16,8), //bcp->offset
    4, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20041C1[];
extern void _ZN8S20041C12v1Ev();
extern void _ZN8S20041C22v2Ev();
extern void _ZN8S20041C22v3Ev();
extern void _ZN8S20041C22v4Ev();
static  VTBL_ENTRY vtc_S20041C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20041C1[0]),
  (VTBL_ENTRY)&_ZN8S20041C12v1Ev,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20041C1[0]),
  (VTBL_ENTRY)&_ZN8S20041C22v2Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20041C22v4Ev,
};
extern VTBL_ENTRY _ZTV8S20041C1[];
static  VTT_ENTRY vtt_S20041C1[] = {
  {&(_ZTV8S20041C1[3]),  3,12},
  {&(_ZTV8S20041C1[9]),  9,12},
};
extern VTBL_ENTRY _ZTI8S20041C1[];
extern  VTBL_ENTRY _ZTV8S20041C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20041C1[];
Class_Descriptor cd_S20041C1 = {  "S20041C1", // class name
  bases_S20041C1, 1,
  &(vtc_S20041C1[0]), // expected_vtbl_contents
  &(vtt_S20041C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20041C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20041C1),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20041C1),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  S21189C2  {
  int s21189c2f0;
  short s21189c2f1:16;
  __tsi64 s21189c2f2;
  void  mf21189c2(); // _ZN8S21189C29mf21189c2Ev
  virtual  ~S21189C2(); // _ZN8S21189C2D1Ev
  S21189C2(); // tgen
};
//SIG(-1 S21189C2) C1{ vd m Fi Fs:16 FL}


void  S21189C2 ::mf21189c2(){}
 S21189C2 ::~S21189C2(){ note_dtor("S21189C2", this);}
S21189C2 ::S21189C2(){ note_ctor("S21189C2", this);} // tgen

static void Test_S21189C2()
{
  extern Class_Descriptor cd_S21189C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S21189C2, buf);
    S21189C2 *dp, &lv = *(dp=new (buf) S21189C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S21189C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21189C2)");
    check_field_offset(lv, s21189c2f0, ABISELECT(8,4), "S21189C2.s21189c2f0");
    set_bf_and_test(lv, s21189c2f1, ABISELECT(12,8), 0, 16, 1, "S21189C2");
    set_bf_and_test(lv, s21189c2f1, ABISELECT(12,8), 0, 16, hide_sll(1LL<<15), "S21189C2");
    check_field_offset(lv, s21189c2f2, ABISELECT(16,12), "S21189C2.s21189c2f2");
    test_class_info(&lv, &cd_S21189C2);
    dp->~S21189C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21189C2(Test_S21189C2, "S21189C2", ABISELECT(24,20));

#else // __cplusplus

extern void _ZN8S21189C2C1Ev();
extern void _ZN8S21189C2D1Ev();
Name_Map name_map_S21189C2[] = {
  NSPAIR(_ZN8S21189C2C1Ev),
  NSPAIR(_ZN8S21189C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21189C2[];
extern void _ZN8S21189C2D1Ev();
extern void _ZN8S21189C2D0Ev();
static  VTBL_ENTRY vtc_S21189C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21189C2[0]),
  (VTBL_ENTRY)&_ZN8S21189C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21189C2D0Ev,
};
extern VTBL_ENTRY _ZTI8S21189C2[];
extern  VTBL_ENTRY _ZTV8S21189C2[];
Class_Descriptor cd_S21189C2 = {  "S21189C2", // class name
  0,0,//no base classes
  &(vtc_S21189C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,20), // object size
  NSPAIRA(_ZTI8S21189C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21189C2),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  S21189C1  : virtual S21189C2 {
  virtual void  v1(); // _ZN8S21189C12v1Ev
  ~S21189C1(); // tgen
  S21189C1(); // tgen
};
//SIG(1 S21189C1) C1{ VBC2{ vd m Fi Fs:16 FL} v1}


void  S21189C1 ::v1(){vfunc_called(this, "_ZN8S21189C12v1Ev");}
S21189C1 ::~S21189C1(){ note_dtor("S21189C1", this);} // tgen
S21189C1 ::S21189C1(){ note_ctor("S21189C1", this);} // tgen

static void Test_S21189C1()
{
  extern Class_Descriptor cd_S21189C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S21189C1, buf);
    S21189C1 *dp, &lv = *(dp=new (buf) S21189C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S21189C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21189C1)");
    check_base_class_offset(lv, (S21189C2*), ABISELECT(8,4), "S21189C1");
    test_class_info(&lv, &cd_S21189C1);
    dp->~S21189C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21189C1(Test_S21189C1, "S21189C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S21189C1C1Ev();
extern void _ZN8S21189C1D1Ev();
Name_Map name_map_S21189C1[] = {
  NSPAIR(_ZN8S21189C1C1Ev),
  NSPAIR(_ZN8S21189C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21189C2;
extern VTBL_ENTRY _ZTI8S21189C2[];
extern  VTBL_ENTRY _ZTV8S21189C2[];
static Base_Class bases_S21189C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21189C2,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21189C1[];
extern void _ZN8S21189C12v1Ev();
extern void _ZN8S21189C1D1Ev();
extern void _ZN8S21189C1D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S21189C1D1Ev,_ZTv0_n12_N8S21189C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21189C1D1Ev,_ZThn4_N8S21189C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S21189C1D0Ev,_ZTv0_n12_N8S21189C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21189C1D0Ev,_ZThn4_N8S21189C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21189C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21189C1[0]),
  (VTBL_ENTRY)&_ZN8S21189C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21189C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21189C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21189C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21189C1D1Ev,_ZTv0_n12_N8S21189C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S21189C1D0Ev,_ZTv0_n12_N8S21189C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21189C1[];
static  VTT_ENTRY vtt_S21189C1[] = {
  {&(_ZTV8S21189C1[3]),  3,11},
  {&(_ZTV8S21189C1[9]),  9,11},
};
extern VTBL_ENTRY _ZTI8S21189C1[];
extern  VTBL_ENTRY _ZTV8S21189C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21189C1[];
static VTBL_ENTRY alt_thunk_names329[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21189C1D0Ev,_ZTv0_n12_N8S21189C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21189C1D0Ev,_ZThn4_N8S21189C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S21189C1D1Ev,_ZTv0_n12_N8S21189C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21189C1D1Ev,_ZThn4_N8S21189C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21189C1 = {  "S21189C1", // class name
  bases_S21189C1, 1,
  &(vtc_S21189C1[0]), // expected_vtbl_contents
  &(vtt_S21189C1[0]), // expected_vtt_contents
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S21189C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21189C1),11, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21189C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names329,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6131C1  : S4228C37 , S20760C22_nt {
  ::S4228C27 s6131c1f0;
  virtual  ~S6131C1(); // _ZN7S6131C1D1Ev
  S6131C1(); // tgen
};
//SIG(1 S6131C1) C1{ BC2{ m} BC3{ vd m} vd FC4{ m}}


 S6131C1 ::~S6131C1(){ note_dtor("S6131C1", this);}
S6131C1 ::S6131C1(){ note_ctor("S6131C1", this);} // tgen

static void Test_S6131C1()
{
  extern Class_Descriptor cd_S6131C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6131C1, buf);
    S6131C1 *dp, &lv = *(dp=new (buf) S6131C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6131C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6131C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6131C1");
    check_base_class_offset(lv, (S20760C22_nt*), 0, "S6131C1");
    check_field_offset(lv, s6131c1f0, ABISELECT(8,4), "S6131C1.s6131c1f0");
    test_class_info(&lv, &cd_S6131C1);
    dp->~S6131C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6131C1(Test_S6131C1, "S6131C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6131C1C1Ev();
extern void _ZN7S6131C1D1Ev();
Name_Map name_map_S6131C1[] = {
  NSPAIR(_ZN7S6131C1C1Ev),
  NSPAIR(_ZN7S6131C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
extern Class_Descriptor cd_S20760C22_nt;
extern VTBL_ENTRY _ZTI12S20760C22_nt[];
extern  VTBL_ENTRY _ZTV12S20760C22_nt[];
static Base_Class bases_S6131C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20760C22_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6131C1[];
extern void _ZN7S6131C1D1Ev();
extern void _ZN7S6131C1D0Ev();
static  VTBL_ENTRY vtc_S6131C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6131C1[0]),
  (VTBL_ENTRY)&_ZN7S6131C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6131C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6131C1[];
extern  VTBL_ENTRY _ZTV7S6131C1[];
Class_Descriptor cd_S6131C1 = {  "S6131C1", // class name
  bases_S6131C1, 2,
  &(vtc_S6131C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6131C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6131C1),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  S13062C2  {
  char s13062c2f0;
  char s13062c2f1[127];
};
//SIG(-1 S13062C2) C1{ Fc[128]}



static void Test_S13062C2()
{
  {
    init_simple_test("S13062C2");
    S13062C2 lv;
    check2(sizeof(lv), 128, "sizeof(S13062C2)");
    check2(__alignof__(lv), 1, "__alignof__(S13062C2)");
    check_field_offset(lv, s13062c2f0, 0, "S13062C2.s13062c2f0");
    check_field_offset(lv, s13062c2f1, 1, "S13062C2.s13062c2f1");
  }
}
static Arrange_To_Call_Me vS13062C2(Test_S13062C2, "S13062C2", 128);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13062C1  {
  int s13062c1f0[2];
  ::S13062C2 s13062c1f1;
};
//SIG(1 S13062C1) C1{ Fi[2] FC2{ Fc[128]}}



static void Test_S13062C1()
{
  {
    init_simple_test("S13062C1");
    S13062C1 lv;
    check2(sizeof(lv), 136, "sizeof(S13062C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13062C1)");
    check_field_offset(lv, s13062c1f0, 0, "S13062C1.s13062c1f0");
    check_field_offset(lv, s13062c1f1, 8, "S13062C1.s13062c1f1");
  }
}
static Arrange_To_Call_Me vS13062C1(Test_S13062C1, "S13062C1", 136);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13976C1  {
  long s13976c1f0[3];
  int s13976c1f1;
  unsigned int s13976c1f2:1;
  int s13976c1f3:7;
  int s13976c1f4:8;
};
//SIG(1 S13976C1) C1{ Fl[3] Fi Fi:1 Fi:7 Fi:8}



static void Test_S13976C1()
{
  {
    init_simple_test("S13976C1");
    static S13976C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S13976C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13976C1)");
    check_field_offset(lv, s13976c1f0, 0, "S13976C1.s13976c1f0");
    check_field_offset(lv, s13976c1f1, ABISELECT(24,12), "S13976C1.s13976c1f1");
    set_bf_and_test(lv, s13976c1f2, ABISELECT(28,16), 0, 1, 1, "S13976C1");
    set_bf_and_test(lv, s13976c1f3, ABISELECT(28,16), 1, 7, 1, "S13976C1");
    set_bf_and_test(lv, s13976c1f3, ABISELECT(28,16), 1, 7, hide_sll(1LL<<6), "S13976C1");
    set_bf_and_test(lv, s13976c1f4, ABISELECT(29,17), 0, 8, 1, "S13976C1");
    set_bf_and_test(lv, s13976c1f4, ABISELECT(29,17), 0, 8, hide_sll(1LL<<7), "S13976C1");
  }
}
static Arrange_To_Call_Me vS13976C1(Test_S13976C1, "S13976C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15189C1  {
  char s15189c1f0[2];
  int s15189c1f1;
  char s15189c1f2;
  int s15189c1f3;
  char s15189c1f4;
  int s15189c1f5;
  void  mf15189c1(); // _ZN8S15189C19mf15189c1Ev
};
//SIG(1 S15189C1) C1{ m Fc[2] Fi Fc Fi Fc Fi}


void  S15189C1 ::mf15189c1(){}

static void Test_S15189C1()
{
  {
    init_simple_test("S15189C1");
    S15189C1 lv;
    check2(sizeof(lv), 24, "sizeof(S15189C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15189C1)");
    check_field_offset(lv, s15189c1f0, 0, "S15189C1.s15189c1f0");
    check_field_offset(lv, s15189c1f1, 4, "S15189C1.s15189c1f1");
    check_field_offset(lv, s15189c1f2, 8, "S15189C1.s15189c1f2");
    check_field_offset(lv, s15189c1f3, 12, "S15189C1.s15189c1f3");
    check_field_offset(lv, s15189c1f4, 16, "S15189C1.s15189c1f4");
    check_field_offset(lv, s15189c1f5, 20, "S15189C1.s15189c1f5");
  }
}
static Arrange_To_Call_Me vS15189C1(Test_S15189C1, "S15189C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13785C1  {
  long s13785c1f0;
  int s13785c1f1[3];
  short s13785c1f2[3];
  char s13785c1f3[230];
};
//SIG(1 S13785C1) C1{ Fl Fi[3] Fs[3] Fc[230]}



static void Test_S13785C1()
{
  {
    init_simple_test("S13785C1");
    S13785C1 lv;
    check2(sizeof(lv), ABISELECT(256,252), "sizeof(S13785C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13785C1)");
    check_field_offset(lv, s13785c1f0, 0, "S13785C1.s13785c1f0");
    check_field_offset(lv, s13785c1f1, ABISELECT(8,4), "S13785C1.s13785c1f1");
    check_field_offset(lv, s13785c1f2, ABISELECT(20,16), "S13785C1.s13785c1f2");
    check_field_offset(lv, s13785c1f3, ABISELECT(26,22), "S13785C1.s13785c1f3");
  }
}
static Arrange_To_Call_Me vS13785C1(Test_S13785C1, "S13785C1", ABISELECT(256,252));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13130C1  {
  int s13130c1f0[2];
  ::S3423C4_nt s13130c1f1;
  ::S3423C4_nt s13130c1f2;
};
//SIG(1 S13130C1) C1{ Fi[2] FC2{ m Fi[2]} FC2}



static void Test_S13130C1()
{
  {
    init_simple_test("S13130C1");
    S13130C1 lv;
    check2(sizeof(lv), 24, "sizeof(S13130C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13130C1)");
    check_field_offset(lv, s13130c1f0, 0, "S13130C1.s13130c1f0");
    check_field_offset(lv, s13130c1f1, 8, "S13130C1.s13130c1f1");
    check_field_offset(lv, s13130c1f2, 16, "S13130C1.s13130c1f2");
  }
}
static Arrange_To_Call_Me vS13130C1(Test_S13130C1, "S13130C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17936C2  {
  void *s17936c2f0;
  char s17936c2f1;
  int s17936c2f2;
};
//SIG(-1 S17936C2) C1{ Fp Fc Fi}



static void Test_S17936C2()
{
  {
    init_simple_test("S17936C2");
    S17936C2 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S17936C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17936C2)");
    check_field_offset(lv, s17936c2f0, 0, "S17936C2.s17936c2f0");
    check_field_offset(lv, s17936c2f1, ABISELECT(8,4), "S17936C2.s17936c2f1");
    check_field_offset(lv, s17936c2f2, ABISELECT(12,8), "S17936C2.s17936c2f2");
  }
}
static Arrange_To_Call_Me vS17936C2(Test_S17936C2, "S17936C2", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17936C1  {
  void *s17936c1f0[2];
  ::S17936C2 s17936c1f1;
  void  mf17936c1(); // _ZN8S17936C19mf17936c1Ev
};
//SIG(1 S17936C1) C1{ m Fp[2] FC2{ Fp Fc Fi}}


void  S17936C1 ::mf17936c1(){}

static void Test_S17936C1()
{
  {
    init_simple_test("S17936C1");
    S17936C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17936C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17936C1)");
    check_field_offset(lv, s17936c1f0, 0, "S17936C1.s17936c1f0");
    check_field_offset(lv, s17936c1f1, ABISELECT(16,8), "S17936C1.s17936c1f1");
  }
}
static Arrange_To_Call_Me vS17936C1(Test_S17936C1, "S17936C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5841C3_nt  {
  int s5841c3f0;
  void  mf5841c3(); // _ZN10S5841C3_nt8mf5841c3Ev
};
//SIG(-1 S5841C3_nt) C1{ m Fi}


void  S5841C3_nt ::mf5841c3(){}

//skip512 S5841C3_nt

#else // __cplusplus

Class_Descriptor cd_S5841C3_nt = {  "S5841C3_nt", // class name
  0,0,//no base classes
  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  S5841C1  : S3423C8_nt , S5841C3_nt {
  __tsi64 s5841c1f0;
};
//SIG(1 S5841C1) C1{ BC2{ m Fi} BC3{ m Fi} FL}



static void Test_S5841C1()
{
  extern Class_Descriptor cd_S5841C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,5)];
    init_test(&cd_S5841C1, buf);
    S5841C1 &lv = *(new (buf) S5841C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S5841C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5841C1)");
    check_base_class_offset(lv, (S3423C8_nt*), 0, "S5841C1");
    check_base_class_offset(lv, (S5841C3_nt*), 4, "S5841C1");
    check_field_offset(lv, s5841c1f0, 8, "S5841C1.s5841c1f0");
    test_class_info(&lv, &cd_S5841C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5841C1(Test_S5841C1, "S5841C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S3423C8_nt;
extern VTBL_ENTRY _ZTI10S3423C8_nt[];
extern Class_Descriptor cd_S5841C3_nt;
static Base_Class bases_S5841C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3423C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S5841C3_nt,    4, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5841C1 = {  "S5841C1", // class name
  bases_S5841C1, 2,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14770C1  {
  short s14770c1f0;
  char s14770c1f1[2];
  int s14770c1f2[2];
  short s14770c1f3;
  int s14770c1f4;
};
//SIG(1 S14770C1) C1{ Fs Fc[2] Fi[2] Fs Fi}



static void Test_S14770C1()
{
  {
    init_simple_test("S14770C1");
    S14770C1 lv;
    check2(sizeof(lv), 20, "sizeof(S14770C1)");
    check2(__alignof__(lv), 4, "__alignof__(S14770C1)");
    check_field_offset(lv, s14770c1f0, 0, "S14770C1.s14770c1f0");
    check_field_offset(lv, s14770c1f1, 2, "S14770C1.s14770c1f1");
    check_field_offset(lv, s14770c1f2, 4, "S14770C1.s14770c1f2");
    check_field_offset(lv, s14770c1f3, 12, "S14770C1.s14770c1f3");
    check_field_offset(lv, s14770c1f4, 16, "S14770C1.s14770c1f4");
  }
}
static Arrange_To_Call_Me vS14770C1(Test_S14770C1, "S14770C1", 20);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5611C3  {
  int s5611c3f0;
  void *s5611c3f1[7];
};
//SIG(-1 S5611C3) C1{ Fi Fp[7]}



static void Test_S5611C3()
{
  {
    init_simple_test("S5611C3");
    S5611C3 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5611C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5611C3)");
    check_field_offset(lv, s5611c3f0, 0, "S5611C3.s5611c3f0");
    check_field_offset(lv, s5611c3f1, ABISELECT(8,4), "S5611C3.s5611c3f1");
  }
}
static Arrange_To_Call_Me vS5611C3(Test_S5611C3, "S5611C3", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5611C2  {
  ::S5611C3 s5611c2f0;
  void  mf5611c2(); // _ZN7S5611C28mf5611c2Ev
};
//SIG(-1 S5611C2) C1{ m FC2{ Fi Fp[7]}}


void  S5611C2 ::mf5611c2(){}

static void Test_S5611C2()
{
  {
    init_simple_test("S5611C2");
    S5611C2 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5611C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5611C2)");
    check_field_offset(lv, s5611c2f0, 0, "S5611C2.s5611c2f0");
  }
}
static Arrange_To_Call_Me vS5611C2(Test_S5611C2, "S5611C2", ABISELECT(64,32));

#else // __cplusplus

Class_Descriptor cd_S5611C2 = {  "S5611C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(64,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  S5611C1  : S5611C2 {
};
//SIG(1 S5611C1) C1{ BC2{ m FC3{ Fi Fp[7]}}}



static void Test_S5611C1()
{
  extern Class_Descriptor cd_S5611C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S5611C1, buf);
    S5611C1 &lv = *(new (buf) S5611C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S5611C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5611C1)");
    check_base_class_offset(lv, (S5611C2*), 0, "S5611C1");
    test_class_info(&lv, &cd_S5611C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5611C1(Test_S5611C1, "S5611C1", ABISELECT(64,32));

#else // __cplusplus

extern Class_Descriptor cd_S5611C2;
static Base_Class bases_S5611C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5611C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5611C1 = {  "S5611C1", // class name
  bases_S5611C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,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  S13691C1  {
  __tsi64 s13691c1f0;
  ::S11713C3 s13691c1f1;
};
//SIG(1 S13691C1) C1{ FL FC2{ Fc[2] Fs[3]}}



static void Test_S13691C1()
{
  {
    init_simple_test("S13691C1");
    S13691C1 lv;
    check2(sizeof(lv), 16, "sizeof(S13691C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13691C1)");
    check_field_offset(lv, s13691c1f0, 0, "S13691C1.s13691c1f0");
    check_field_offset(lv, s13691c1f1, 8, "S13691C1.s13691c1f1");
  }
}
static Arrange_To_Call_Me vS13691C1(Test_S13691C1, "S13691C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16056C1  {
  ::S3423C13_nt s16056c1f0;
  void *s16056c1f1;
  int s16056c1f2;
  void  mf16056c1(); // _ZN8S16056C19mf16056c1Ev
};
//SIG(1 S16056C1) C1{ m FC2{ m Fi[3]} Fp Fi}


void  S16056C1 ::mf16056c1(){}

static void Test_S16056C1()
{
  {
    init_simple_test("S16056C1");
    S16056C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16056C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16056C1)");
    check_field_offset(lv, s16056c1f0, 0, "S16056C1.s16056c1f0");
    check_field_offset(lv, s16056c1f1, ABISELECT(16,12), "S16056C1.s16056c1f1");
    check_field_offset(lv, s16056c1f2, ABISELECT(24,16), "S16056C1.s16056c1f2");
  }
}
static Arrange_To_Call_Me vS16056C1(Test_S16056C1, "S16056C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12037C2  {
  int s12037c2f0[13];
  void  mf12037c2(); // _ZN8S12037C29mf12037c2Ev
};
//SIG(1 S12037C2) C1{ m Fi[13]}


void  S12037C2 ::mf12037c2(){}

static void Test_S12037C2()
{
  {
    init_simple_test("S12037C2");
    S12037C2 lv;
    check2(sizeof(lv), 52, "sizeof(S12037C2)");
    check2(__alignof__(lv), 4, "__alignof__(S12037C2)");
    check_field_offset(lv, s12037c2f0, 0, "S12037C2.s12037c2f0");
  }
}
static Arrange_To_Call_Me vS12037C2(Test_S12037C2, "S12037C2", 52);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12037C1  {
  ::S12037C2 s12037c1f0[315];
};
//SIG(1 S12037C1) C1{ FC2{ m Fi[13]}[315]}



static void Test_S12037C1()
{
  {
    init_simple_test("S12037C1");
    S12037C1 lv;
    check2(sizeof(lv), 16380, "sizeof(S12037C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12037C1)");
    check_field_offset(lv, s12037c1f0, 0, "S12037C1.s12037c1f0");
  }
}
static Arrange_To_Call_Me vS12037C1(Test_S12037C1, "S12037C1", 16380);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10446C2_nt  {
  void *s10446c2f0[2];
};
//SIG(-1 S10446C2_nt) C1{ Fp[2]}



//skip512 S10446C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10446C1  {
  char s10446c1f0;
  ::S10446C2_nt s10446c1f1;
  void *s10446c1f2[5];
};
//SIG(1 S10446C1) C1{ Fc FC2{ Fp[2]} Fp[5]}



static void Test_S10446C1()
{
  {
    init_simple_test("S10446C1");
    S10446C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S10446C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10446C1)");
    check_field_offset(lv, s10446c1f0, 0, "S10446C1.s10446c1f0");
    check_field_offset(lv, s10446c1f1, ABISELECT(8,4), "S10446C1.s10446c1f1");
    check_field_offset(lv, s10446c1f2, ABISELECT(24,12), "S10446C1.s10446c1f2");
  }
}
static Arrange_To_Call_Me vS10446C1(Test_S10446C1, "S10446C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18899C1  {
  void *s18899c1f0;
  virtual  ~S18899C1(); // _ZN8S18899C1D1Ev
  virtual void  v1(); // _ZN8S18899C12v1Ev
  virtual void  v2(); // _ZN8S18899C12v2Ev
  virtual void  v3(); // _ZN8S18899C12v3Ev
  virtual void  v4(); // _ZN8S18899C12v4Ev
  S18899C1(); // tgen
};
//SIG(1 S18899C1) C1{ vd v1 v2 v3 v4 Fp}


 S18899C1 ::~S18899C1(){ note_dtor("S18899C1", this);}
void  S18899C1 ::v1(){vfunc_called(this, "_ZN8S18899C12v1Ev");}
void  S18899C1 ::v2(){vfunc_called(this, "_ZN8S18899C12v2Ev");}
void  S18899C1 ::v3(){vfunc_called(this, "_ZN8S18899C12v3Ev");}
void  S18899C1 ::v4(){vfunc_called(this, "_ZN8S18899C12v4Ev");}
S18899C1 ::S18899C1(){ note_ctor("S18899C1", this);} // tgen

static void Test_S18899C1()
{
  extern Class_Descriptor cd_S18899C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S18899C1, buf);
    S18899C1 *dp, &lv = *(dp=new (buf) S18899C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S18899C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18899C1)");
    check_field_offset(lv, s18899c1f0, ABISELECT(8,4), "S18899C1.s18899c1f0");
    test_class_info(&lv, &cd_S18899C1);
    dp->~S18899C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18899C1(Test_S18899C1, "S18899C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S18899C1C1Ev();
extern void _ZN8S18899C1D1Ev();
Name_Map name_map_S18899C1[] = {
  NSPAIR(_ZN8S18899C1C1Ev),
  NSPAIR(_ZN8S18899C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18899C1[];
extern void _ZN8S18899C1D1Ev();
extern void _ZN8S18899C1D0Ev();
extern void _ZN8S18899C12v1Ev();
extern void _ZN8S18899C12v2Ev();
extern void _ZN8S18899C12v3Ev();
extern void _ZN8S18899C12v4Ev();
static  VTBL_ENTRY vtc_S18899C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18899C1[0]),
  (VTBL_ENTRY)&_ZN8S18899C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18899C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18899C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18899C1[];
extern  VTBL_ENTRY _ZTV8S18899C1[];
Class_Descriptor cd_S18899C1 = {  "S18899C1", // class name
  0,0,//no base classes
  &(vtc_S18899C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S18899C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18899C1),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  S13223C1  {
  int s13223c1f0[2];
  void *s13223c1f1[2];
  int s13223c1f2[2];
};
//SIG(1 S13223C1) C1{ Fi[2] Fp[2] Fi[2]}



static void Test_S13223C1()
{
  {
    init_simple_test("S13223C1");
    S13223C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13223C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13223C1)");
    check_field_offset(lv, s13223c1f0, 0, "S13223C1.s13223c1f0");
    check_field_offset(lv, s13223c1f1, 8, "S13223C1.s13223c1f1");
    check_field_offset(lv, s13223c1f2, ABISELECT(24,16), "S13223C1.s13223c1f2");
  }
}
static Arrange_To_Call_Me vS13223C1(Test_S13223C1, "S13223C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12778C1  {
  int s12778c1f0;
  void *s12778c1f1[3];
  int s12778c1f2[2];
  void *s12778c1f3;
};
//SIG(1 S12778C1) C1{ Fi Fp[3] Fi[2] Fp}



static void Test_S12778C1()
{
  {
    init_simple_test("S12778C1");
    S12778C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S12778C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12778C1)");
    check_field_offset(lv, s12778c1f0, 0, "S12778C1.s12778c1f0");
    check_field_offset(lv, s12778c1f1, ABISELECT(8,4), "S12778C1.s12778c1f1");
    check_field_offset(lv, s12778c1f2, ABISELECT(32,16), "S12778C1.s12778c1f2");
    check_field_offset(lv, s12778c1f3, ABISELECT(40,24), "S12778C1.s12778c1f3");
  }
}
static Arrange_To_Call_Me vS12778C1(Test_S12778C1, "S12778C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16926C1  {
  int s16926c1f0;
  void *s16926c1f1;
  int s16926c1f2;
  void *s16926c1f3[3];
  void  mf16926c1(); // _ZN8S16926C19mf16926c1Ev
};
//SIG(1 S16926C1) C1{ m Fi Fp Fi Fp[3]}


void  S16926C1 ::mf16926c1(){}

static void Test_S16926C1()
{
  {
    init_simple_test("S16926C1");
    S16926C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S16926C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16926C1)");
    check_field_offset(lv, s16926c1f0, 0, "S16926C1.s16926c1f0");
    check_field_offset(lv, s16926c1f1, ABISELECT(8,4), "S16926C1.s16926c1f1");
    check_field_offset(lv, s16926c1f2, ABISELECT(16,8), "S16926C1.s16926c1f2");
    check_field_offset(lv, s16926c1f3, ABISELECT(24,12), "S16926C1.s16926c1f3");
  }
}
static Arrange_To_Call_Me vS16926C1(Test_S16926C1, "S16926C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13971C2_nt  {
  __tsi64 s13971c2f0[2];
};
//SIG(-1 S13971C2_nt) C1{ FL[2]}



//skip512 S13971C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13971C1  {
  long s13971c1f0[3];
  ::S13971C2_nt s13971c1f1;
};
//SIG(1 S13971C1) C1{ Fl[3] FC2{ FL[2]}}



static void Test_S13971C1()
{
  {
    init_simple_test("S13971C1");
    S13971C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S13971C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13971C1)");
    check_field_offset(lv, s13971c1f0, 0, "S13971C1.s13971c1f0");
    check_field_offset(lv, s13971c1f1, ABISELECT(24,12), "S13971C1.s13971c1f1");
  }
}
static Arrange_To_Call_Me vS13971C1(Test_S13971C1, "S13971C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14457C1  {
  void *s14457c1f0[2];
  char s14457c1f1[512];
  void *s14457c1f2;
};
//SIG(1 S14457C1) C1{ Fp[2] Fc[512] Fp}



static void Test_S14457C1()
{
  {
    init_simple_test("S14457C1");
    S14457C1 lv;
    check2(sizeof(lv), ABISELECT(536,524), "sizeof(S14457C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14457C1)");
    check_field_offset(lv, s14457c1f0, 0, "S14457C1.s14457c1f0");
    check_field_offset(lv, s14457c1f1, ABISELECT(16,8), "S14457C1.s14457c1f1");
    check_field_offset(lv, s14457c1f2, ABISELECT(528,520), "S14457C1.s14457c1f2");
  }
}
static Arrange_To_Call_Me vS14457C1(Test_S14457C1, "S14457C1", ABISELECT(536,524));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15223C1  {
  char s15223c1f0[257];
  void *s15223c1f1[2];
  void  mf15223c1(); // _ZN8S15223C19mf15223c1Ev
};
//SIG(1 S15223C1) C1{ m Fc[257] Fp[2]}


void  S15223C1 ::mf15223c1(){}

static void Test_S15223C1()
{
  {
    init_simple_test("S15223C1");
    S15223C1 lv;
    check2(sizeof(lv), ABISELECT(280,268), "sizeof(S15223C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15223C1)");
    check_field_offset(lv, s15223c1f0, 0, "S15223C1.s15223c1f0");
    check_field_offset(lv, s15223c1f1, ABISELECT(264,260), "S15223C1.s15223c1f1");
  }
}
static Arrange_To_Call_Me vS15223C1(Test_S15223C1, "S15223C1", ABISELECT(280,268));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12983C1  {
  int s12983c1f0[2];
  char s12983c1f1;
  int s12983c1f2[5];
};
//SIG(1 S12983C1) C1{ Fi[2] Fc Fi[5]}



static void Test_S12983C1()
{
  {
    init_simple_test("S12983C1");
    S12983C1 lv;
    check2(sizeof(lv), 32, "sizeof(S12983C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12983C1)");
    check_field_offset(lv, s12983c1f0, 0, "S12983C1.s12983c1f0");
    check_field_offset(lv, s12983c1f1, 8, "S12983C1.s12983c1f1");
    check_field_offset(lv, s12983c1f2, 12, "S12983C1.s12983c1f2");
  }
}
static Arrange_To_Call_Me vS12983C1(Test_S12983C1, "S12983C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14307C1  {
  void *s14307c1f0;
  int s14307c1f1[2];
  void *s14307c1f2[4];
};
//SIG(1 S14307C1) C1{ Fp Fi[2] Fp[4]}



static void Test_S14307C1()
{
  {
    init_simple_test("S14307C1");
    S14307C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S14307C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14307C1)");
    check_field_offset(lv, s14307c1f0, 0, "S14307C1.s14307c1f0");
    check_field_offset(lv, s14307c1f1, ABISELECT(8,4), "S14307C1.s14307c1f1");
    check_field_offset(lv, s14307c1f2, ABISELECT(16,12), "S14307C1.s14307c1f2");
  }
}
static Arrange_To_Call_Me vS14307C1(Test_S14307C1, "S14307C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12797C1  {
  int s12797c1f0;
  void *s12797c1f1[5];
  int s12797c1f2[2];
};
//SIG(1 S12797C1) C1{ Fi Fp[5] Fi[2]}



static void Test_S12797C1()
{
  {
    init_simple_test("S12797C1");
    S12797C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S12797C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12797C1)");
    check_field_offset(lv, s12797c1f0, 0, "S12797C1.s12797c1f0");
    check_field_offset(lv, s12797c1f1, ABISELECT(8,4), "S12797C1.s12797c1f1");
    check_field_offset(lv, s12797c1f2, ABISELECT(48,24), "S12797C1.s12797c1f2");
  }
}
static Arrange_To_Call_Me vS12797C1(Test_S12797C1, "S12797C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18328C1  {
  void *s18328c1f0[3];
  int s18328c1f1[3];
  void  mf18328c1(); // _ZN8S18328C19mf18328c1Ev
};
//SIG(1 S18328C1) C1{ m Fp[3] Fi[3]}


void  S18328C1 ::mf18328c1(){}

static void Test_S18328C1()
{
  {
    init_simple_test("S18328C1");
    S18328C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18328C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18328C1)");
    check_field_offset(lv, s18328c1f0, 0, "S18328C1.s18328c1f0");
    check_field_offset(lv, s18328c1f1, ABISELECT(24,12), "S18328C1.s18328c1f1");
  }
}
static Arrange_To_Call_Me vS18328C1(Test_S18328C1, "S18328C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13751C1  {
  __tsi64 s13751c1f0;
  int s13751c1f1;
  ::S11667C2_nt s13751c1f2;
};
//SIG(1 S13751C1) C1{ FL Fi FC2{ Fi}}



static void Test_S13751C1()
{
  {
    init_simple_test("S13751C1");
    S13751C1 lv;
    check2(sizeof(lv), 16, "sizeof(S13751C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13751C1)");
    check_field_offset(lv, s13751c1f0, 0, "S13751C1.s13751c1f0");
    check_field_offset(lv, s13751c1f1, 8, "S13751C1.s13751c1f1");
    check_field_offset(lv, s13751c1f2, 12, "S13751C1.s13751c1f2");
  }
}
static Arrange_To_Call_Me vS13751C1(Test_S13751C1, "S13751C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10770C1  {
  char s10770c1f0[21];
  int s10770c1f1[6];
};
//SIG(1 S10770C1) C1{ Fc[21] Fi[6]}



static void Test_S10770C1()
{
  {
    init_simple_test("S10770C1");
    S10770C1 lv;
    check2(sizeof(lv), 48, "sizeof(S10770C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10770C1)");
    check_field_offset(lv, s10770c1f0, 0, "S10770C1.s10770c1f0");
    check_field_offset(lv, s10770c1f1, 24, "S10770C1.s10770c1f1");
  }
}
static Arrange_To_Call_Me vS10770C1(Test_S10770C1, "S10770C1", 48);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12102C1  {
  ::S1532C10_nt s12102c1f0;
};
//SIG(1 S12102C1) C1{ FC2{ m Fi[4]}}



static void Test_S12102C1()
{
  {
    init_simple_test("S12102C1");
    S12102C1 lv;
    check2(sizeof(lv), 16, "sizeof(S12102C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12102C1)");
    check_field_offset(lv, s12102c1f0, 0, "S12102C1.s12102c1f0");
  }
}
static Arrange_To_Call_Me vS12102C1(Test_S12102C1, "S12102C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12115C1  {
  ::S5841C3_nt s12115c1f0;
  __tsi64 s12115c1f1;
};
//SIG(1 S12115C1) C1{ FC2{ m Fi} FL}



static void Test_S12115C1()
{
  {
    init_simple_test("S12115C1");
    S12115C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S12115C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12115C1)");
    check_field_offset(lv, s12115c1f0, 0, "S12115C1.s12115c1f0");
    check_field_offset(lv, s12115c1f1, ABISELECT(8,4), "S12115C1.s12115c1f1");
  }
}
static Arrange_To_Call_Me vS12115C1(Test_S12115C1, "S12115C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17022C1  {
  int s17022c1f0:6;
  int s17022c1f1:4;
  void  mf17022c1(); // _ZN8S17022C19mf17022c1Ev
};
//SIG(1 S17022C1) C1{ m Fi:6 Fi:4}


void  S17022C1 ::mf17022c1(){}

static void Test_S17022C1()
{
  {
    init_simple_test("S17022C1");
    static S17022C1 lv;
    check2(sizeof(lv), 4, "sizeof(S17022C1)");
    check2(__alignof__(lv), 4, "__alignof__(S17022C1)");
    set_bf_and_test(lv, s17022c1f0, 0, 0, 6, 1, "S17022C1");
    set_bf_and_test(lv, s17022c1f0, 0, 0, 6, hide_sll(1LL<<5), "S17022C1");
    set_bf_and_test(lv, s17022c1f1, 0, 6, 4, 1, "S17022C1");
    set_bf_and_test(lv, s17022c1f1, 0, 6, 4, hide_sll(1LL<<3), "S17022C1");
  }
}
static Arrange_To_Call_Me vS17022C1(Test_S17022C1, "S17022C1", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6291C1  : S4228C37 {
  char s6291c1f0;
  virtual  ~S6291C1(); // _ZN7S6291C1D1Ev
  S6291C1(); // tgen
};
//SIG(1 S6291C1) C1{ BC2{ m} vd Fc}


 S6291C1 ::~S6291C1(){ note_dtor("S6291C1", this);}
S6291C1 ::S6291C1(){ note_ctor("S6291C1", this);} // tgen

static void Test_S6291C1()
{
  extern Class_Descriptor cd_S6291C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6291C1, buf);
    S6291C1 *dp, &lv = *(dp=new (buf) S6291C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6291C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6291C1)");
    check_base_class_offset(lv, (S4228C37*), 0, "S6291C1");
    check_field_offset(lv, s6291c1f0, ABISELECT(8,4), "S6291C1.s6291c1f0");
    test_class_info(&lv, &cd_S6291C1);
    dp->~S6291C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6291C1(Test_S6291C1, "S6291C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6291C1C1Ev();
extern void _ZN7S6291C1D1Ev();
Name_Map name_map_S6291C1[] = {
  NSPAIR(_ZN7S6291C1C1Ev),
  NSPAIR(_ZN7S6291C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4228C37;
extern VTBL_ENTRY _ZTI8S4228C37[];
static Base_Class bases_S6291C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4228C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6291C1[];
extern void _ZN7S6291C1D1Ev();
extern void _ZN7S6291C1D0Ev();
static  VTBL_ENTRY vtc_S6291C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6291C1[0]),
  (VTBL_ENTRY)&_ZN7S6291C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6291C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6291C1[];
extern  VTBL_ENTRY _ZTV7S6291C1[];
Class_Descriptor cd_S6291C1 = {  "S6291C1", // class name
  bases_S6291C1, 1,
  &(vtc_S6291C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6291C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6291C1),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  S17403C1  {
  long s17403c1f0[2];
  int s17403c1f1;
  void  mf17403c1(); // _ZN8S17403C19mf17403c1Ev
};
//SIG(1 S17403C1) C1{ m Fl[2] Fi}


void  S17403C1 ::mf17403c1(){}

static void Test_S17403C1()
{
  {
    init_simple_test("S17403C1");
    S17403C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S17403C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17403C1)");
    check_field_offset(lv, s17403c1f0, 0, "S17403C1.s17403c1f0");
    check_field_offset(lv, s17403c1f1, ABISELECT(16,8), "S17403C1.s17403c1f1");
  }
}
static Arrange_To_Call_Me vS17403C1(Test_S17403C1, "S17403C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12331C1  {
  int s12331c1f0;
  char s12331c1f1[80];
};
//SIG(1 S12331C1) C1{ Fi Fc[80]}



static void Test_S12331C1()
{
  {
    init_simple_test("S12331C1");
    S12331C1 lv;
    check2(sizeof(lv), 84, "sizeof(S12331C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12331C1)");
    check_field_offset(lv, s12331c1f0, 0, "S12331C1.s12331c1f0");
    check_field_offset(lv, s12331c1f1, 4, "S12331C1.s12331c1f1");
  }
}
static Arrange_To_Call_Me vS12331C1(Test_S12331C1, "S12331C1", 84);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13952C1  {
  __tsi64 s13952c1f0[2];
  void *s13952c1f1;
};
//SIG(1 S13952C1) C1{ FL[2] Fp}



static void Test_S13952C1()
{
  {
    init_simple_test("S13952C1");
    S13952C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13952C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13952C1)");
    check_field_offset(lv, s13952c1f0, 0, "S13952C1.s13952c1f0");
    check_field_offset(lv, s13952c1f1, 16, "S13952C1.s13952c1f1");
  }
}
static Arrange_To_Call_Me vS13952C1(Test_S13952C1, "S13952C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14460C1  {
  void *s14460c1f0[2];
  char s14460c1f1;
};
//SIG(1 S14460C1) C1{ Fp[2] Fc}



static void Test_S14460C1()
{
  {
    init_simple_test("S14460C1");
    S14460C1 lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S14460C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14460C1)");
    check_field_offset(lv, s14460c1f0, 0, "S14460C1.s14460c1f0");
    check_field_offset(lv, s14460c1f1, ABISELECT(16,8), "S14460C1.s14460c1f1");
  }
}
static Arrange_To_Call_Me vS14460C1(Test_S14460C1, "S14460C1", ABISELECT(24,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13906C1  {
  __tsi64 s13906c1f0[17];
};
//SIG(1 S13906C1) C1{ FL[17]}



static void Test_S13906C1()
{
  {
    init_simple_test("S13906C1");
    S13906C1 lv;
    check2(sizeof(lv), 136, "sizeof(S13906C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13906C1)");
    check_field_offset(lv, s13906c1f0, 0, "S13906C1.s13906c1f0");
  }
}
static Arrange_To_Call_Me vS13906C1(Test_S13906C1, "S13906C1", 136);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

